feat:addContractConfig

This commit is contained in:
苏竹红
2025-09-08 18:46:42 +08:00
parent 2d4402c351
commit 83ddafb842
11 changed files with 661 additions and 4 deletions

View File

@@ -302,6 +302,8 @@ public enum ErrorCodeEnum {
NOT_FLAGSHIP_STORE(16100005,"非直营店,无法跳过缴费阶段!",null), NOT_FLAGSHIP_STORE(16100005,"非直营店,无法跳过缴费阶段!",null),
NOT_FLAGSHIP_STORE_NOT_EXIST(16100006,"当前阶段加盟类型不能变更!",null), NOT_FLAGSHIP_STORE_NOT_EXIST(16100006,"当前阶段加盟类型不能变更!",null),
CURRENT_BRAND_SORT_NUMBER_EXIST(16100007,"当前品牌已存在该排序数字!",null),
; ;

View File

@@ -0,0 +1,43 @@
package com.cool.store.dao;
import com.cool.store.entity.ContractConfigDO;
import com.cool.store.mapper.ContractConfigMapper;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
import java.util.List;
/**
* @Author suzhuhong
* @Date 2025/9/8 15:37
* @Version 1.0
*/
@Repository
public class ContractConfigDAO {
@Resource
private ContractConfigMapper contractConfigMapper;
public int addContractConfig(ContractConfigDO contractConfigDO){
return contractConfigMapper.insertSelective(contractConfigDO);
}
public int updateContractConfig(ContractConfigDO contractConfigDO){
return contractConfigMapper.updateByPrimaryKeySelective(contractConfigDO);
}
/**
* 根据品牌查询对应排序是否存在
* @param brand
* @param serialNumber
* @return
*/
public ContractConfigDO queryContractConfigByBrand(String brand,Integer serialNumber){
return contractConfigMapper.queryContractConfigByBrand(brand,serialNumber);
}
public List<ContractConfigDO> queryContractConfigList(String brand) {
return contractConfigMapper.queryContractConfigList(brand);
}
}

View File

@@ -0,0 +1,16 @@
package com.cool.store.mapper;
import com.cool.store.entity.ContractConfigDO;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
public interface ContractConfigMapper extends Mapper<ContractConfigDO> {
ContractConfigDO queryContractConfigByBrand(String brand, Integer serialNumber);
List<ContractConfigDO> queryContractConfigList(String brand);
}

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cool.store.mapper.ContractConfigMapper">
<resultMap id="BaseResultMap" type="com.cool.store.entity.ContractConfigDO">
<!--
WARNING - @mbg.generated
-->
<id column="id" jdbcType="BIGINT" property="id" />
<result column="brand" jdbcType="VARCHAR" property="brand" />
<result column="contract_name" jdbcType="VARCHAR" property="contractName" />
<result column="party_a" jdbcType="VARCHAR" property="partyA" />
<result column="party_b" jdbcType="VARCHAR" property="partyB" />
<result column="party_c" jdbcType="VARCHAR" property="partyC" />
<result column="franchise_mode" jdbcType="VARCHAR" property="franchiseMode" />
<result column="fadada_template_id" jdbcType="VARCHAR" property="fadadaTemplateId" />
<result column="serial_number" jdbcType="INTEGER" property="serialNumber" />
<result column="payee_name" javaType="VARCHAR" property="payeeName"/>
<result column="deleted" jdbcType="TINYINT" property="deleted" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
</resultMap>
<select id="queryContractConfigByBrand" resultMap="BaseResultMap">
select * from xfsg_contract_config where brand = #{brand} and serial_number = #{serialNumber} and deleted = 0
</select>
<select id="queryContractConfigList" resultMap="BaseResultMap">
select * from xfsg_contract_config
where deleted = 0
<if test="brand!=null and brand !=''">
and brand = #{brand}
</if>
</select>
</mapper>

View File

@@ -0,0 +1,54 @@
package com.cool.store.dto.contract;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @Author suzhuhong
* @Date 2025/9/8 15:52
* @Version 1.0
*/
@Data
public class ContractConfigDTO {
@ApiModelProperty("主键 新建时忽略")
private Long id;
@ApiModelProperty("品牌")
@NotBlank(message = "品牌不能为空")
private String brand;
@ApiModelProperty("合同名称")
@NotBlank(message = "合同名称不能为空")
private String contractName;
@ApiModelProperty("甲方名称")
@NotBlank(message = "甲方名称不能为空")
private String partyA;
@ApiModelProperty("乙方名称")
@NotBlank(message = "乙方名称不能为空")
private String partyB;
@ApiModelProperty(" 丙方名称")
private String partyC;
@ApiModelProperty("加盟模式 多选 用逗号隔开")
private List<String> franchiseModeList;
@ApiModelProperty("法大大模板ID")
private String fadadaTemplateId;
@ApiModelProperty("序号")
@NotNull(message = "序号不能为空")
private Integer serialNumber;
@ApiModelProperty("收款方名称")
private String payeeName;
}

View File

@@ -0,0 +1,82 @@
package com.cool.store.dto.contract;
import com.cool.store.common.PageBasicInfo;
import com.cool.store.enums.JoinModeEnum;
import com.cool.store.utils.StringUtil;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Author suzhuhong
* @Date 2025/9/8 16:43
* @Version 1.0
*/
@Data
public class ContractListDTO {
@ApiModelProperty("主键 新建时忽略")
private Long id;
@ApiModelProperty("品牌")
@NotBlank(message = "品牌不能为空")
private String brand;
@ApiModelProperty("合同名称")
@NotBlank(message = "合同名称不能为空")
private String contractName;
@ApiModelProperty("甲方名称")
@NotBlank(message = "甲方名称不能为空")
private String partyA;
@ApiModelProperty("乙方名称")
@NotBlank(message = "乙方名称不能为空")
private String partyB;
@ApiModelProperty(" 丙方名称")
private String partyC;
@ApiModelProperty("加盟模式 多选 用逗号隔开")
private List<FranchiseModeDTO> franchiseModeList;
@ApiModelProperty("法大大模板ID")
private String fadadaTemplateId;
@ApiModelProperty("序号")
@NotNull(message = "序号不能为空")
private Integer serialNumber;
@ApiModelProperty("收款方名称")
private String payeeName;
private String franchiseMode;
@Data
protected class FranchiseModeDTO{
private String id;
private String name;
}
private List<FranchiseModeDTO> getFranchiseModeList(){
String[] split = this.franchiseMode.split(",");
ArrayList<FranchiseModeDTO> result = new ArrayList<>();
Arrays.stream(split).filter(item -> StringUtil.isNotEmpty(item)).forEach(item -> {
FranchiseModeDTO franchiseModeDTO = new FranchiseModeDTO();
franchiseModeDTO.setId(item);
franchiseModeDTO.setName(JoinModeEnum.getByCode(Integer.parseInt(item)));
result.add(franchiseModeDTO);
});
return result;
}
}

View File

@@ -0,0 +1,16 @@
package com.cool.store.dto.contract;
import com.cool.store.common.PageBasicInfo;
import lombok.Data;
/**
* @Author suzhuhong
* @Date 2025/9/8 16:43
* @Version 1.0
*/
@Data
public class QueryContractListDTO extends PageBasicInfo {
private String brand;
}

View File

@@ -0,0 +1,289 @@
package com.cool.store.entity;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.models.auth.In;
import java.util.Date;
import javax.persistence.*;
@Table(name = "xfsg_contract_config")
public class ContractConfigDO {
/**
* 主键ID
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
/**
* 品牌
*/
private String brand;
/**
* 合同名称
*/
@Column(name = "contract_name")
private String contractName;
/**
* 甲方名称
*/
@Column(name = "party_a")
private String partyA;
/**
* 乙方名称
*/
@Column(name = "party_b")
private String partyB;
/**
* 丙方名称
*/
@Column(name = "party_c")
private String partyC;
/**
* 加盟模式 多选 用逗号隔开
*/
@Column(name = "franchise_mode")
private String franchiseMode;
/**
* 法大大模板ID
*/
@Column(name = "fadada_template_id")
private String fadadaTemplateId;
/**
* 序号
*/
@Column(name = "serial_number")
private Integer serialNumber;
/**
* 创建时间
*/
@Column(name = "create_time")
private Date createTime;
/**
* 更新时间
*/
@Column(name = "update_time")
private Date updateTime;
@Column(name = "payee_name")
@ApiModelProperty("收款方名称")
private String payeeName;
@Column(name = "deleted")
private Integer deleted;
public String getPayeeName() {
return payeeName;
}
public void setPayeeName(String payeeName) {
this.payeeName = payeeName;
}
/**
* 获取主键ID
*
* @return id - 主键ID
*/
public Long getId() {
return id;
}
/**
* 设置主键ID
*
* @param id 主键ID
*/
public void setId(Long id) {
this.id = id;
}
/**
* 获取品牌
*
* @return brand - 品牌
*/
public String getBrand() {
return brand;
}
/**
* 设置品牌
*
* @param brand 品牌
*/
public void setBrand(String brand) {
this.brand = brand;
}
/**
* 获取合同名称
*
* @return contract_name - 合同名称
*/
public String getContractName() {
return contractName;
}
/**
* 设置合同名称
*
* @param contractName 合同名称
*/
public void setContractName(String contractName) {
this.contractName = contractName;
}
/**
* 获取甲方名称
*
* @return party_a - 甲方名称
*/
public String getPartyA() {
return partyA;
}
/**
* 设置甲方名称
*
* @param partyA 甲方名称
*/
public void setPartyA(String partyA) {
this.partyA = partyA;
}
/**
* 获取乙方名称
*
* @return party_b - 乙方名称
*/
public String getPartyB() {
return partyB;
}
/**
* 设置乙方名称
*
* @param partyB 乙方名称
*/
public void setPartyB(String partyB) {
this.partyB = partyB;
}
/**
* 获取丙方名称
*
* @return party_c - 丙方名称
*/
public String getPartyC() {
return partyC;
}
/**
* 设置丙方名称
*
* @param partyC 丙方名称
*/
public void setPartyC(String partyC) {
this.partyC = partyC;
}
/**
* 获取加盟模式 多选 用逗号隔开
*
* @return franchise_mode - 加盟模式 多选 用逗号隔开
*/
public String getFranchiseMode() {
return franchiseMode;
}
/**
* 设置加盟模式 多选 用逗号隔开
*
* @param franchiseMode 加盟模式 多选 用逗号隔开
*/
public void setFranchiseMode(String franchiseMode) {
this.franchiseMode = franchiseMode;
}
/**
* 获取法大大模板ID
*
* @return fadada_template_id - 法大大模板ID
*/
public String getFadadaTemplateId() {
return fadadaTemplateId;
}
/**
* 设置法大大模板ID
*
* @param fadadaTemplateId 法大大模板ID
*/
public void setFadadaTemplateId(String fadadaTemplateId) {
this.fadadaTemplateId = fadadaTemplateId;
}
/**
* 获取序号
*
* @return serial_number - 序号
*/
public Integer getSerialNumber() {
return serialNumber;
}
/**
* 设置序号
*
* @param serialNumber 序号
*/
public void setSerialNumber(Integer serialNumber) {
this.serialNumber = serialNumber;
}
/**
* 获取创建时间
*
* @return create_time - 创建时间
*/
public Date getCreateTime() {
return createTime;
}
/**
* 设置创建时间
*
* @param createTime 创建时间
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* 获取更新时间
*
* @return update_time - 更新时间
*/
public Date getUpdateTime() {
return updateTime;
}
/**
* 设置更新时间
*
* @param updateTime 更新时间
*/
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
}

View File

@@ -0,0 +1,43 @@
package com.cool.store.service;
import com.cool.store.dto.contract.ContractConfigDTO;
import com.cool.store.dto.contract.ContractListDTO;
import com.cool.store.dto.contract.QueryContractListDTO;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageInfo;
/**
* @Author suzhuhong
* @Date 2025/9/8 15:46
* @Version 1.0
*/
public interface ContractConfigService {
/**
* 新增配置
* @param addContractConfigDTO
* @return
*/
Boolean addContractConfig(ContractConfigDTO addContractConfigDTO);
/**
* 修改配置
* @param addContractConfigDTO
* @return
*/
Boolean updateContractConfig(ContractConfigDTO addContractConfigDTO);
/**
* 查询配置列表
* @param queryContractListDTO
* @return
*/
PageInfo<ContractListDTO> queryContractConfigList(QueryContractListDTO queryContractListDTO);
}

View File

@@ -0,0 +1,82 @@
package com.cool.store.service.impl;
import com.cool.store.dao.ContractConfigDAO;
import com.cool.store.dto.contract.ContractConfigDTO;
import com.cool.store.dto.contract.ContractListDTO;
import com.cool.store.dto.contract.QueryContractListDTO;
import com.cool.store.entity.ContractConfigDO;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.exception.ServiceException;
import com.cool.store.service.ContractConfigService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Author suzhuhong
* @Date 2025/9/8 15:47
* @Version 1.0
*/
@Service
public class ContractConfigServiceImpl implements ContractConfigService {
@Resource
private ContractConfigDAO contractConfigDAO;
@Override
public Boolean addContractConfig(ContractConfigDTO addContractConfigDTO) {
ContractConfigDO contractConfig = contractConfigDAO.queryContractConfigByBrand(addContractConfigDTO.getBrand(), addContractConfigDTO.getSerialNumber());
if (contractConfig != null){
throw new ServiceException(ErrorCodeEnum.CURRENT_BRAND_SORT_NUMBER_EXIST);
}
ContractConfigDO contractConfigDO = new ContractConfigDO();
BeanUtils.copyProperties(addContractConfigDTO, contractConfigDO);
if (addContractConfigDTO.getFranchiseModeList() != null){
String modelStr = addContractConfigDTO.getFranchiseModeList().stream().collect(Collectors.joining(","));
contractConfigDO.setFranchiseMode("," + modelStr + ",");
}
contractConfigDAO.addContractConfig(contractConfigDO);
return Boolean.TRUE;
}
@Override
public Boolean updateContractConfig(ContractConfigDTO addContractConfigDTO) {
ContractConfigDO contractConfig = contractConfigDAO.queryContractConfigByBrand(addContractConfigDTO.getBrand(), addContractConfigDTO.getSerialNumber());
if (contractConfig != null && !contractConfig.getId().equals(addContractConfigDTO.getId())){
throw new ServiceException(ErrorCodeEnum.CURRENT_BRAND_SORT_NUMBER_EXIST);
}
ContractConfigDO contractConfigDO = new ContractConfigDO();
BeanUtils.copyProperties(addContractConfigDTO, contractConfigDO);
if (addContractConfigDTO.getFranchiseModeList() != null){
String modelStr = addContractConfigDTO.getFranchiseModeList().stream().collect(Collectors.joining(","));
contractConfigDO.setFranchiseMode("," + modelStr + ",");
}
return Boolean.TRUE;
}
@Override
public PageInfo<ContractListDTO> queryContractConfigList(QueryContractListDTO queryContractListDTO) {
PageHelper.startPage(queryContractListDTO.getPageNum(), queryContractListDTO.getPageSize());
List<ContractConfigDO> contractConfigDOList = contractConfigDAO.queryContractConfigList(queryContractListDTO.getBrand());
if (CollectionUtils.isEmpty(contractConfigDOList)){
return new PageInfo<>();
}
PageInfo contractConfigDOPageInfo = new PageInfo<>(contractConfigDOList);
List<ContractListDTO> result = new ArrayList<>();
contractConfigDOList.forEach(contractConfigDO -> {
ContractListDTO contractListDTO = new ContractListDTO();
BeanUtils.copyProperties(contractConfigDO, contractListDTO);
result.add(contractListDTO);
});
contractConfigDOPageInfo.setList( result);
return contractConfigDOPageInfo;
}
}

View File

@@ -418,7 +418,6 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu
contractInformationDTO.setShopName(shopInfoDO.getShopName()); contractInformationDTO.setShopName(shopInfoDO.getShopName());
//品牌信息 //品牌信息
contractInformationDTO.setSign1Name(signFranchiseDO.getPartnershipSignatoryFirst()); contractInformationDTO.setSign1Name(signFranchiseDO.getPartnershipSignatoryFirst());
contractInformationDTO.setSign2Name(signFranchiseDO.getPartnershipSignatorySecond()); contractInformationDTO.setSign2Name(signFranchiseDO.getPartnershipSignatorySecond());
contractInformationDTO.setFirstYearFee(franchiseFeeDO.getFirstYearFee()); contractInformationDTO.setFirstYearFee(franchiseFeeDO.getFirstYearFee());
@@ -428,9 +427,6 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu
contractInformationDTO.setPerformanceBond(franchiseFeeDO.getPerformanceBond()); contractInformationDTO.setPerformanceBond(franchiseFeeDO.getPerformanceBond());
log.info("加盟合同审批时签约类型:{}", SignTypeEnum.getDescByCode(signFranchiseDO.getSignType())); log.info("加盟合同审批时签约类型:{}", SignTypeEnum.getDescByCode(signFranchiseDO.getSignType()));
Boolean sendNotice = Boolean.TRUE; Boolean sendNotice = Boolean.TRUE;
commonService.sendSms(lineInfoDO.getMobile(), SMSMsgEnum.SIGN_CONTRACT); commonService.sendSms(lineInfoDO.getMobile(), SMSMsgEnum.SIGN_CONTRACT);