diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java index 4b1bdc0a8..c183db4a7 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java @@ -300,6 +300,7 @@ public enum ErrorCodeEnum { PRODUCTS_DISCARDED(1511034,"产品已报销,无法操作",null), PRODUCTS_SALES_COMPLETED(1511034,"含有销售完成的产品,无法批量报销",null), STORE_IS_EXIST(1511035,"该门店已存在",null), + FEE_NOT_CONSISTENT(1511036,"合同金额与缴费账单金额不一致,请确定!",null), MESSAGE_TEMPLATE_NOT_SUPPORT_EDIT(1610001,"当前消息已发布,不支持编辑!",null), @@ -323,8 +324,10 @@ public enum ErrorCodeEnum { WALLET_OPEN_ACCOUNT_FAIL(1620001,"钱包开通失败",null), WALLET_WITH_DRAWER_FAIL(1620002,"提现失败",null), WALLET_API_ERROR(1620003,"{0}",null), - ; + CURRENT_BRAND_SORT_NUMBER_EXIST(16100007,"当前品牌已存在该排序数字!",null), + CONTRACT_CONFIG_NOT_EXIST(16100008,"合同配置不存在!",null); + ; protected static final Map map = Arrays.stream(values()).collect( diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/FranchiseBrandEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/FranchiseBrandEnum.java index 1221d3c8f..de878c69f 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/FranchiseBrandEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/FranchiseBrandEnum.java @@ -14,20 +14,27 @@ import java.util.stream.Collectors; * @注释: */ public enum FranchiseBrandEnum { - ZXJP(1,"正新鸡排","option486"), - ZXSMZ(2,"正新三明治","option622"), - ZJS(3,"正烧记","option488"), - DGMX(4,"大鼓米线","option624"), - CXM(5,"串小妹","option626"), - MZG(6,"茂掌柜","option490"); + ZXJP(1,"正新鸡排","option486","上海正新食品集团有限公司","海南正新多品牌管理有限公司"), + ZXSMZ(2,"正新三明治","option622","",""), + ZJS(3,"正烧记","option488","上海正烧信息科技有限公司","上海正烧信息科技有限公司"), + DGMX(4,"大鼓米线","option624","",""), + CXM(5,"串小妹","option626","",""), + MZG(6,"茂掌柜","option490","",""); private int code; private String desc; - //红圈通code + /**法大大合同编号*/ private String hqtCode; - FranchiseBrandEnum(int code, String desc,String hqtCode) { + /**品牌方*/ + private String brandOwner; + /**收款方*/ + private String payeeName; + + FranchiseBrandEnum(int code, String desc,String hqtCode,String brandOwner,String payeeName) { this.code = code; this.desc = desc; this.hqtCode = hqtCode; + this.brandOwner = brandOwner; + this.payeeName = payeeName; } public int getCode() { return code; @@ -40,6 +47,14 @@ public enum FranchiseBrandEnum { return hqtCode; } + public String getBrandOwner() { + return brandOwner; + } + + public String getPayeeName() { + return payeeName; + } + public static String getDescByCode(String code) { if (StringUtils.isBlank(code)){ return null; @@ -52,6 +67,20 @@ public enum FranchiseBrandEnum { } return null; } + + public static FranchiseBrandEnum getEnumByCode(String code) { + if (StringUtils.isBlank(code)){ + return null; + } + int i = Integer.parseInt(code); + for (FranchiseBrandEnum e : FranchiseBrandEnum.values()) { + if (i == e.getCode()) { + return e; + } + } + return null; + } + public static String getDescByCode(Integer code) { if (code==null){ return null; diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/ContractConfigDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/ContractConfigDAO.java new file mode 100644 index 000000000..9db56f10b --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/ContractConfigDAO.java @@ -0,0 +1,67 @@ +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 ContractConfigDO queryContractConfigById(Long id){ + return contractConfigMapper.selectByPrimaryKey(id); + } + + 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); + } + + + /** + * 合同配置列表 + * @param brand + * @return + */ + public List queryContractConfigList(String brand) { + return contractConfigMapper.queryContractConfigList(brand); + } + + /** + * 根据加盟品牌与加盟模式 查出所有的未删除状态的合并合同 + * @param brand + * @param mode + * @return + */ + public List queryContractConfigListByBrandAndMode(String brand,String mode) { + return contractConfigMapper.queryContractConfigListByBrandAndMode(brand,mode); + } + + public void deleteContractConfig(Long id) { + contractConfigMapper.deleteByPrimaryKey(id); + } +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/SignFranchiseDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/SignFranchiseDAO.java index 42cbec644..c79e7307b 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/SignFranchiseDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/SignFranchiseDAO.java @@ -1,6 +1,8 @@ package com.cool.store.dao; import com.alibaba.excel.util.CollectionUtils; +import com.alibaba.excel.util.StringUtils; +import com.cool.store.dto.contract.ContractCallbackDTO; import com.cool.store.entity.SignFranchiseDO; import com.cool.store.mapper.SignFranchiseMapper; import org.apache.ibatis.annotations.Param; @@ -38,4 +40,11 @@ public class SignFranchiseDAO { public SignFranchiseDO selectByShopId(Long shopId){ return signFranchiseMapper.selectByShopId(shopId); } + + public void updateAuditByShopId(Long auditId, Long shopId, ContractCallbackDTO dto){ + if (dto==null || (StringUtils.isEmpty(dto.getReason())&&dto.getInfoConsistencyFlag()==null)){ + return; + } + signFranchiseMapper.updateAuditByShopId(auditId,shopId,dto); + } } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ContractConfigMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ContractConfigMapper.java new file mode 100644 index 000000000..b02e05d34 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ContractConfigMapper.java @@ -0,0 +1,18 @@ +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 queryContractConfigByBrand(String brand, Integer serialNumber); + + + List queryContractConfigList(String brand); + + List queryContractConfigListByBrandAndMode(String brand, String mode); +} \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/SignFranchiseMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/SignFranchiseMapper.java index 8ac02937f..b595f6d25 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/SignFranchiseMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/SignFranchiseMapper.java @@ -1,5 +1,6 @@ package com.cool.store.mapper; +import com.cool.store.dto.contract.ContractCallbackDTO; import com.cool.store.entity.SignFranchiseDO; import org.apache.ibatis.annotations.Param; import tk.mybatis.mapper.common.Mapper; @@ -11,7 +12,8 @@ public interface SignFranchiseMapper extends Mapper { SignFranchiseDO selectByShopId(@Param("shopId") Long shopId); void updateAuditByShopId(@Param("auditId") Long auditId, - @Param("shopId") Long shopId); + @Param("shopId") Long shopId, + @Param("dto") ContractCallbackDTO dto); List selectByShopIds( @Param("list")List shopIds); Integer dateHandle(); diff --git a/coolstore-partner-dao/src/main/resources/mapper/ContractConfigMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/ContractConfigMapper.xml new file mode 100644 index 000000000..fd81efa35 --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/mapper/ContractConfigMapper.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/SignFranchiseMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/SignFranchiseMapper.xml index 5c927fb7d..d4ceb8c0e 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/SignFranchiseMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/SignFranchiseMapper.xml @@ -3,7 +3,19 @@ update xfsg_sign_franchise - set audit_id = #{auditId} + + + audit_id = #{auditId}, + + + + info_consistency_flag = #{dto.infoConsistencyFlag}, + + + reason = #{dto.reason}, + + + where shop_id = #{shopId} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/ContractInformationDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/ContractInformationDTO.java new file mode 100644 index 000000000..170dbd580 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/ContractInformationDTO.java @@ -0,0 +1,102 @@ +package com.cool.store.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * @Author suzhuhong + * @Date 2025/9/8 10:13 + * @Version 1.0 + */ +@Data +public class ContractInformationDTO { + @ApiModelProperty("门店ID") + private Long shopId; + @ApiModelProperty("门店名称") + private String shopName; + @ApiModelProperty("签约人1名称") + private String sign1Name; + @ApiModelProperty("签约人2名称") + private String sign2Name; + @ApiModelProperty("加盟模式") + private Integer joinModel; + @ApiModelProperty("每年加盟费") + private String yearFranchiseFee; + @ApiModelProperty("保证金") + private String loanMargin; + @ApiModelProperty("第一年度管理费") + private String firstYearManagementFee; + @ApiModelProperty("第一年度品牌使用费") + private String firstYearFee; + @ApiModelProperty("设计费") + private String performanceBond; + @ApiModelProperty("收款方名称") + private String payeeName; + @ApiModelProperty("品牌方") + private String brandOwner; + @ApiModelProperty("老店编码 签约类型选择老店转加盟时有") + private String oldShopCode; + @ApiModelProperty("合同编号") + private String contractNo; + + @ApiModelProperty("币种") + private String currency; + + @ApiModelProperty(name = "合同加盟费") + private String contractFranchiseFee; + + @ApiModelProperty(name = "合同管理费") + private String contractManageFee; + + @ApiModelProperty(name = "合同品牌使用费") + private String contractBrandUseFee; + + @ApiModelProperty(name = "合同设计费") + private String contractPerformanceBond; + + @ApiModelProperty(name = "合同保证金") + private String contractLoanMargin; + + @ApiModelProperty(name = "合同系统使用费") + private String contractSysUserFee; + + @ApiModelProperty(name = "加盟来源 other-其他 招商会-investment 加盟商推荐-partner_recommend 自然流量-organic_traffic 员工推荐-employee_recommend ") + private String joinSource; + + @ApiModelProperty(name = "签约形式 纸质合同-paper_contract 电子合同-electronic_contract 已付款未签约-paid_but_not_signed") + private String signModality; + + @ApiModelProperty(name = "加盟费频率") + private Integer franchiseFeeFrequency; + + @ApiModelProperty(name = "品牌使用费频率") + private Integer brandUseFeeFrequency; + + @ApiModelProperty(name = "管理费频率") + private Integer manageFeeFrequency; + + @ApiModelProperty(name = "管理费频率") + private String discountAmount; + + @ApiModelProperty(name = "提交人") + private String summitUserName; + + @ApiModelProperty(name = "签约人地址") + private String signerAddress; + + @ApiModelProperty(name = "签约人手机号") + private String signerPhone; + + @ApiModelProperty(name = "合同使用年限") + private Integer contractServiceLife; + + @ApiModelProperty(name = "合同开始时间") + private String contractStartTime; + + @ApiModelProperty(name = "合同结束时间") + private String contractEndTime; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/contract/ContractCallbackDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/contract/ContractCallbackDTO.java new file mode 100644 index 000000000..9339be828 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/contract/ContractCallbackDTO.java @@ -0,0 +1,19 @@ +package com.cool.store.dto.contract; + +import lombok.Data; + +/** + * @Author suzhuhong + * @Date 2025/9/17 14:42 + * @Version 1.0 + */ +@Data +public class ContractCallbackDTO { + + private Integer infoConsistencyFlag; + + private String reason; + + private String storeCode; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/contract/ContractConfigDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/contract/ContractConfigDTO.java new file mode 100644 index 000000000..6e9d92519 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/contract/ContractConfigDTO.java @@ -0,0 +1,53 @@ +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("乙方名称") + private String partyB; + + @ApiModelProperty(" 丙方名称") + private String partyC; + + @ApiModelProperty("加盟模式 多选 用逗号隔开") + private List franchiseModeList; + + @ApiModelProperty("法大大模板ID") + private String fadadaTemplateId; + + @ApiModelProperty("序号") + @NotNull(message = "序号不能为空") + private Integer serialNumber; + + @ApiModelProperty("收款方名称") + private String payeeName; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/contract/ContractListDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/contract/ContractListDTO.java new file mode 100644 index 000000000..7117c1af6 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/contract/ContractListDTO.java @@ -0,0 +1,167 @@ +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 + */ +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 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; + + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getBrand() { + return brand; + } + + public void setBrand(String brand) { + this.brand = brand; + } + + public String getContractName() { + return contractName; + } + + public void setContractName(String contractName) { + this.contractName = contractName; + } + + public String getPartyA() { + return partyA; + } + + public void setPartyA(String partyA) { + this.partyA = partyA; + } + + public String getPartyB() { + return partyB; + } + + public void setPartyB(String partyB) { + this.partyB = partyB; + } + + public String getPartyC() { + return partyC; + } + + public void setPartyC(String partyC) { + this.partyC = partyC; + } + + public void setFranchiseModeList(List franchiseModeList) { + this.franchiseModeList = franchiseModeList; + } + + public String getFadadaTemplateId() { + return fadadaTemplateId; + } + + public void setFadadaTemplateId(String fadadaTemplateId) { + this.fadadaTemplateId = fadadaTemplateId; + } + + public Integer getSerialNumber() { + return serialNumber; + } + + public void setSerialNumber(Integer serialNumber) { + this.serialNumber = serialNumber; + } + + public String getPayeeName() { + return payeeName; + } + + public void setPayeeName(String payeeName) { + this.payeeName = payeeName; + } + + public String getFranchiseMode() { + return franchiseMode; + } + + public void setFranchiseMode(String franchiseMode) { + this.franchiseMode = franchiseMode; + } + + public List getFranchiseModeList(){ + String[] split = this.franchiseMode.split(","); + ArrayList 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; + } + + + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/contract/PushContractDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/contract/PushContractDTO.java new file mode 100644 index 000000000..f462420fc --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/contract/PushContractDTO.java @@ -0,0 +1,44 @@ +package com.cool.store.dto.contract; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.persistence.Column; + +/** + * @Author suzhuhong + * @Date 2025/9/9 13:35 + * @Version 1.0 + */ +@Data +public class PushContractDTO { + + /** + * 品牌 + */ + @ApiModelProperty("品牌方名称") + private String brand; + + @ApiModelProperty("合同名称") + private String contractName; + + @ApiModelProperty("甲方名称") + private String partyA; + + @ApiModelProperty("乙方名称") + private String partyB; + + @ApiModelProperty("丙方名称") + private String partyC; + + @ApiModelProperty("法大大模板ID") + private String fadadaTemplateId; + + @ApiModelProperty("合同签约顺序") + private Integer serialNumber; + + @ApiModelProperty("收款方名称") + private String payeeName; + + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/contract/QueryContractListDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/contract/QueryContractListDTO.java new file mode 100644 index 000000000..6e28fe9e1 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/contract/QueryContractListDTO.java @@ -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; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/ContractConfigDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/ContractConfigDO.java new file mode 100644 index 000000000..ef2c84d4c --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/ContractConfigDO.java @@ -0,0 +1,297 @@ +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; + } + + public Integer getDeleted() { + return deleted; + } + + public void setDeleted(Integer deleted) { + this.deleted = deleted; + } + + /** + * 获取主键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; + } +} \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/SignFranchiseDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/SignFranchiseDO.java index 34af719bc..3dabd196b 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/SignFranchiseDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/SignFranchiseDO.java @@ -86,4 +86,102 @@ public class SignFranchiseDO { //是否统管 : 1-统管,0-不统管', @Column(name = "unified_management") private Integer unifiedManagement; + /** + * 信息是否一致 财务使用 + */ + @Column(name = "info_consistency_flag") + private Integer infoConsistencyFlag; + /** + * 不一致原因 + */ + @Column(name = "reason") + private String reason; + + @Column(name = "old_shop_code") + private String oldShopCode; + + /** + * 合同加盟费 + */ + @Column(name = "contract_franchise_fee") + private String contractFranchiseFee; + + /** + * 合同管理费 + */ + @Column(name = "contract_manage_fee") + private String contractManageFee; + + /** + * 合同品牌使用费 + */ + @Column(name = "contract_brand_use_fee") + private String contractBrandUseFee; + + /** + * 合同设计费 + */ + @Column(name = "contract_performance_bond") + private String contractPerformanceBond; + + /** + * 合同保证金 + */ + @Column(name = "contract_loan_margin") + private String contractLoanMargin; + + /** + * 合同系统使用费 + */ + @Column(name = "contract_sys_user_fee") + private String contractSysUserFee; + + /** + * 加盟来源 + */ + @Column(name = "join_source") + private String joinSource; + + /** + * 签约形式 + */ + @Column(name = "sign_modality") + private String signModality; + + /** + * 加盟费频率 + */ + @Column(name = "franchise_fee_frequency") + private Integer franchiseFeeFrequency; + + /** + * 品牌使用费频率 + */ + @Column(name = "brand_use_fee_frequency") + private Integer brandUseFeeFrequency; + + /** + * 管理费频率 + */ + @Column(name = "manage_fee_frequency") + private Integer manageFeeFrequency; + + /** + * 加盟费折扣金额 + */ + @Column(name = "discount_amount") + private String discountAmount; + + @Column(name = "create_user_id") + private String createUserId; + + @Column(name = "update_user_id") + private String updateUserId; + + @Column(name = "currency") + private String currency; + + @Column(name = "contract_service_life") + private Integer contractServiceLife; + } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/AddSignFranchiseRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/AddSignFranchiseRequest.java index be8b6ec1c..5138caf1d 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/AddSignFranchiseRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/AddSignFranchiseRequest.java @@ -1,6 +1,7 @@ package com.cool.store.request; import com.cool.store.entity.SignFranchiseDO; +import io.swagger.annotations.Api; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -148,6 +149,91 @@ public class AddSignFranchiseRequest { @ApiModelProperty("是否统管 : 1-统管,0-不统管") private Integer unifiedManagement; + @ApiModelProperty("老店编码 签约类型选择老店转加盟时有") + private String oldShopCode; + + @ApiModelProperty("合同加盟费") + @NotBlank(message = "合同加盟费不能为空") + private String contractFranchiseFee; + + /** + * 合同管理费 + */ + @ApiModelProperty("合同管理费") + @NotBlank(message = "合同管理费不能为空") + private String contractManageFee; + + /** + * 合同品牌使用费 + */ + @ApiModelProperty("合同品牌使用费") + @NotBlank(message = "合同品牌使用费不能为空") + private String contractBrandUseFee; + + /** + * 合同设计费 + */ + @ApiModelProperty("合同设计费") + @NotBlank(message = "合同设计费不能为空") + private String contractPerformanceBond; + + /** + * 合同保证金 + */ + @ApiModelProperty("合同保证金") + @NotBlank(message = "合同保证金不能为空") + private String contractLoanMargin; + + /** + * 合同系统使用费 + */ + @ApiModelProperty("合同系统使用费") + @NotBlank(message = "合同系统使用费不能为空") + private String contractSysUserFee; + + /** + * 加盟来源 + */ + @ApiModelProperty("加盟来源") + private String joinSource; + + /** + * 签约形式 + */ + @ApiModelProperty("签约形式") + private String signModality; + + /** + * 加盟费频率 + */ + @ApiModelProperty("加盟费频率") + private Integer franchiseFeeFrequency; + + /** + * 品牌使用费频率 + */ + @ApiModelProperty("品牌使用费频率") + private Integer brandUseFeeFrequency; + + /** + * 管理费频率 + */ + @ApiModelProperty("管理费频率") + private Integer manageFeeFrequency; + + /** + * 加盟费折扣金额 + */ + @ApiModelProperty("加盟费折扣金额") + private String discountAmount; + + @ApiModelProperty("币种") + private String currency; + + @ApiModelProperty("合同使用年限") + private Integer contractServiceLife; + + public SignFranchiseDO toSignFranchiseDO() { @@ -161,6 +247,7 @@ public class AddSignFranchiseRequest { signFranchiseDO.setContractStartTime(this.contractStartTime); signFranchiseDO.setContractEndTime(this.contractStartEndTime); signFranchiseDO.setImpressionNum(this.impressionNum); + signFranchiseDO.setOldShopCode(this.oldShopCode); // signFranchiseDO.setBusinessStartHours(setMill(this.businessStartHours)); // signFranchiseDO.setBusinessEndHours(setMill(this.businessEndHours)); // signFranchiseDO.setIrregularReason(this.irregularReason); @@ -180,6 +267,20 @@ public class AddSignFranchiseRequest { signFranchiseDO.setIntroductionAward(this.introductionAward); signFranchiseDO.setPartnershipSignatoryFirstWhichStore(this.partnershipSignatoryFirstWhichStore); signFranchiseDO.setUnifiedManagement(this.unifiedManagement); + signFranchiseDO.setContractFranchiseFee(this.contractFranchiseFee); + signFranchiseDO.setContractManageFee(this.contractManageFee); + signFranchiseDO.setContractBrandUseFee(this.contractBrandUseFee); + signFranchiseDO.setContractPerformanceBond(this.contractPerformanceBond); + signFranchiseDO.setContractLoanMargin(this.contractLoanMargin); + signFranchiseDO.setContractSysUserFee(this.contractSysUserFee); + signFranchiseDO.setJoinSource(this.joinSource); + signFranchiseDO.setSignModality(this.signModality); + signFranchiseDO.setFranchiseFeeFrequency(this.franchiseFeeFrequency); + signFranchiseDO.setBrandUseFeeFrequency(this.brandUseFeeFrequency); + signFranchiseDO.setManageFeeFrequency(this.manageFeeFrequency); + signFranchiseDO.setDiscountAmount(this.discountAmount); + signFranchiseDO.setCurrency(this.currency); + signFranchiseDO.setContractServiceLife(this.contractServiceLife); return signFranchiseDO; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/response/AddSignFranchiseResponse.java b/coolstore-partner-model/src/main/java/com/cool/store/response/AddSignFranchiseResponse.java index 70ae9306d..6c14c941b 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/response/AddSignFranchiseResponse.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/response/AddSignFranchiseResponse.java @@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModel; 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.Date; @@ -46,7 +47,7 @@ public class AddSignFranchiseResponse { private Date contractStartTime; @ApiModelProperty("合同结束日期") - private Date contractStartEndTime; + private Date contractEndTime; @ApiModelProperty("用印次数") private String impressionNum; @@ -240,10 +241,95 @@ public class AddSignFranchiseResponse { @ApiModelProperty("是否统管 : 1-统管,0-不统管") private Integer unifiedManagement; + @ApiModelProperty("信息是否一致") + private Integer infoConsistencyFlag; + @ApiModelProperty("不一致原因") + private String reason; + @ApiModelProperty("老店编码 签约类型选择老店转加盟时有") + private String oldShopCode; + @ApiModelProperty("合同加盟费") + @NotBlank(message = "合同加盟费不能为空") + private String contractFranchiseFee; + + /** + * 合同管理费 + */ + @ApiModelProperty("合同管理费") + @NotBlank(message = "合同管理费不能为空") + private String contractManageFee; + + /** + * 合同品牌使用费 + */ + @ApiModelProperty("合同品牌使用费") + @NotBlank(message = "合同品牌使用费不能为空") + private String contractBrandUseFee; + + /** + * 合同设计费 + */ + @ApiModelProperty("合同设计费") + @NotBlank(message = "合同设计费不能为空") + private String contractPerformanceBond; + + /** + * 合同保证金 + */ + @ApiModelProperty("合同保证金") + @NotBlank(message = "合同保证金不能为空") + private String contractLoanMargin; + + /** + * 合同系统使用费 + */ + @ApiModelProperty("合同系统使用费") + @NotBlank(message = "合同系统使用费不能为空") + private String contractSysUserFee; + + /** + * 加盟来源 + */ + @ApiModelProperty("加盟来源") + private String joinSource; @ApiModelProperty("收银费(系统费)") private String cashierFee; + /** + * 签约形式 + */ + @ApiModelProperty("签约形式") + private String signModality; + + /** + * 加盟费频率 + */ + @ApiModelProperty("加盟费频率") + private Integer franchiseFeeFrequency; + + /** + * 品牌使用费频率 + */ + @ApiModelProperty("品牌使用费频率") + private Integer brandUseFeeFrequency; + + /** + * 管理费频率 + */ + @ApiModelProperty("管理费频率") + private Integer manageFeeFrequency; + + /** + * 加盟费折扣金额 + */ + @ApiModelProperty("加盟费折扣金额") + private String discountAmount; @ApiModelProperty("收银费(系统费)大写") private String bigCashierFee; + + @Column(name = "currency") + private String currency; + + @Column(name = "contract_service_life") + private Integer contractServiceLife; } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/ContractConfigService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/ContractConfigService.java new file mode 100644 index 000000000..7bcb7fdef --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/ContractConfigService.java @@ -0,0 +1,48 @@ +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 queryContractConfigList(QueryContractListDTO queryContractListDTO); + + + /** + * 删除配置 + * @param id + * @return + */ + Boolean deleteContractConfig(Long id); + + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/PushService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/PushService.java index e2e49e8c6..f9444f0a8 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/PushService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/PushService.java @@ -1,9 +1,7 @@ package com.cool.store.service; -import com.cool.store.dto.GetAccessTokenDTO; -import com.cool.store.dto.HqtTokenDTO; -import com.cool.store.dto.ModifyPasswordDTO; -import com.cool.store.dto.XgjOrganizationDTO; +import com.cool.store.dto.*; +import com.cool.store.dto.contract.ContractCallbackDTO; import com.cool.store.request.AuditRequest; import com.cool.store.request.ZxjpApiRequest; import com.cool.store.request.xgj.PushFranchiseFeeRequest; @@ -94,6 +92,13 @@ public interface PushService { */ HqtTokenDTO getHqtToken(); + /** + * 法大大一期 推送加盟合同信息 + * @param contractInformationDTO + * @return + */ + ContractCallbackDTO pushContract(ContractInformationDTO contractInformationDTO); + diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/SignFranchiseService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/SignFranchiseService.java index c37b2d3f8..c9dd0e01b 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/SignFranchiseService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/SignFranchiseService.java @@ -42,6 +42,15 @@ public interface SignFranchiseService { */ Boolean rePay(Long shopId); + /** + * 回退到缴费阶段 + * @param shopId + * @return + */ + Boolean backPayFeeStage(AuditApproveRequest request, LoginUserInfo user); + + + Integer dateHandle(); HqtBuildRequest getHqtBuildRequest(Long shopId); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ContractConfigServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ContractConfigServiceImpl.java new file mode 100644 index 000000000..5cafb54eb --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ContractConfigServiceImpl.java @@ -0,0 +1,96 @@ +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.cool.store.utils.poi.constant.Constants; +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 + ","); + } + contractConfigDAO.updateContractConfig(contractConfigDO); + return Boolean.TRUE; + } + + @Override + public PageInfo queryContractConfigList(QueryContractListDTO queryContractListDTO) { + PageHelper.startPage(queryContractListDTO.getPageNum(), queryContractListDTO.getPageSize()); + List contractConfigDOList = contractConfigDAO.queryContractConfigList(queryContractListDTO.getBrand()); + if (CollectionUtils.isEmpty(contractConfigDOList)){ + return new PageInfo<>(); + } + PageInfo contractConfigDOPageInfo = new PageInfo<>(contractConfigDOList); + List result = new ArrayList<>(); + contractConfigDOList.forEach(contractConfigDO -> { + ContractListDTO contractListDTO = new ContractListDTO(); + BeanUtils.copyProperties(contractConfigDO, contractListDTO); + result.add(contractListDTO); + }); + contractConfigDOPageInfo.setList( result); + return contractConfigDOPageInfo; + } + + @Override + public Boolean deleteContractConfig(Long id) { + ContractConfigDO contractConfigDO = contractConfigDAO.queryContractConfigById(id); + if (contractConfigDO == null){ + throw new ServiceException(ErrorCodeEnum.CONTRACT_CONFIG_NOT_EXIST); + } + contractConfigDO.setDeleted(Constants.ONE_INTEGER); + //修改配置状态 + contractConfigDAO.updateContractConfig(contractConfigDO); + return Boolean.TRUE; + } + + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FranchiseFeeServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FranchiseFeeServiceImpl.java index 99627e4f6..adb9afe79 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FranchiseFeeServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FranchiseFeeServiceImpl.java @@ -109,9 +109,9 @@ public class FranchiseFeeServiceImpl implements FranchiseFeeService { @Transactional(rollbackFor = Exception.class) public Boolean update(FranchiseFeeRequest request) { ShopStageInfoDO shopStageInfo = shopStageInfoDAO.getShopSubStageInfo(request.getShopId(), ShopSubStageEnum.SHOP_STAGE_7); - if (shopStageInfo.getShopSubStageStatus().equals(SHOP_SUB_STAGE_STATUS_73.getShopSubStageStatus())){ - throw new ServiceException(ErrorCodeEnum.NOT_ALLOW_OPERATE); - } +// if (shopStageInfo.getShopSubStageStatus().equals(SHOP_SUB_STAGE_STATUS_73.getShopSubStageStatus())){ +// throw new ServiceException(ErrorCodeEnum.NOT_ALLOW_OPERATE); +// } FranchiseFeeDO franchiseFeeDO = request.toFranchiseFeeDO(); FranchiseFeeDO franchiseFeeDO1 = franchiseFeeMapper.selectByShopId(request.getShopId()); if (Objects.nonNull(franchiseFeeDO1)) { @@ -236,9 +236,9 @@ public class FranchiseFeeServiceImpl implements FranchiseFeeService { return ApiResponse.error(ErrorCodeEnum.SHOP_ID_NOT_EXIST); } FranchiseFeeDO franchiseFeeDO = franchiseFeeMapper.selectByShopId(request.getShopId()); - if (XGJCollectionStatusEnum.COMPLETED.getCode().equals(franchiseFeeDO.getXgjCollectionStatus())){ - return ApiResponse.error(ErrorCodeEnum.XGJ_COLLECTION_STATUS_COMPLETE); - } +// if (XGJCollectionStatusEnum.COMPLETED.getCode().equals(franchiseFeeDO.getXgjCollectionStatus())){ +// return ApiResponse.error(ErrorCodeEnum.XGJ_COLLECTION_STATUS_COMPLETE); +// } franchiseFeeDO.setXgjCollectionStatus(request.getPaymentStatus()); franchiseFeeDO.setXgjRemainderPayableAmount(request.getRemainingFee()); franchiseFeeDO.setXgjFeesPaid(request.getPaidFees()); @@ -250,11 +250,17 @@ public class FranchiseFeeServiceImpl implements FranchiseFeeService { LinePayDO lastPay = linePayMapper.getLastPay(franchiseFeeDO.getShopId()); lastPay.setRemark(lastPay.getRemark()+"系统监测到您多缴费"+request.getPaidFees().subtract(request.getPayableFee())+"元 请申请退款或留做他用!"); linePayMapper.updateByPrimaryKeySelective(lastPay); - shopStageInfoDAO.batchUpdateShopStageStatus(request.getShopId(),Arrays.asList(SHOP_SUB_STAGE_STATUS_73,SHOP_SUB_STAGE_STATUS_80)); + ShopStageInfoDO shopStageStatus = shopStageInfoDAO.getShopSubStageInfo(request.getShopId(), ShopSubStageEnum.SHOP_STAGE_8); + if (SHOP_SUB_STAGE_STATUS_00.getShopSubStageStatus().equals(shopStageStatus.getShopSubStageStatus())){ + shopStageInfoDAO.batchUpdateShopStageStatus(request.getShopId(),Arrays.asList(SHOP_SUB_STAGE_STATUS_73,SHOP_SUB_STAGE_STATUS_80)); + } } franchiseFeeMapper.updateByPrimaryKeySelective(franchiseFeeDO); if (XGJCollectionStatusEnum.COMPLETED.getCode().equals(request.getPaymentStatus())){ - shopStageInfoDAO.batchUpdateShopStageStatus(request.getShopId(),Arrays.asList(SHOP_SUB_STAGE_STATUS_73,SHOP_SUB_STAGE_STATUS_80)); + ShopStageInfoDO shopStageStatus = shopStageInfoDAO.getShopSubStageInfo(request.getShopId(), ShopSubStageEnum.SHOP_STAGE_8); + if (SHOP_SUB_STAGE_STATUS_00.getShopSubStageStatus().equals(shopStageStatus.getShopSubStageStatus())){ + shopStageInfoDAO.batchUpdateShopStageStatus(request.getShopId(),Arrays.asList(SHOP_SUB_STAGE_STATUS_73,SHOP_SUB_STAGE_STATUS_80)); + } } return ApiResponse.success(Boolean.TRUE); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/LinePayServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/LinePayServiceImpl.java index bdc18fa13..dc2c8f013 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/LinePayServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/LinePayServiceImpl.java @@ -32,20 +32,17 @@ import com.cool.store.service.UserAuthMappingService; import com.cool.store.utils.CoolDateUtils; import com.cool.store.utils.RedisConstantUtil; import com.cool.store.utils.RedisUtilPool; -import com.cool.store.utils.UUIDUtils; import com.cool.store.utils.poi.DateUtils; import com.cool.store.utils.poi.StringUtils; import com.cool.store.utils.poi.constant.Constants; import com.cool.store.vo.LinePayVO; import com.cool.store.vo.PartnerUserInfoVO; -import jdk.nashorn.internal.codegen.types.BooleanType; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.bind.annotation.RequestParam; import javax.annotation.Resource; import java.math.BigDecimal; diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PushServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PushServiceImpl.java index 18290a874..5a8f2e806 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PushServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PushServiceImpl.java @@ -1,6 +1,8 @@ package com.cool.store.service.impl; import com.alibaba.fastjson.JSONObject; +import com.cool.store.dto.*; +import com.cool.store.dto.contract.ContractCallbackDTO; import com.cool.store.dao.EnterpriseUserDAO; import com.cool.store.dao.EnterpriseUserRoleDao; import com.cool.store.dao.StoreDao; @@ -139,6 +141,11 @@ public class PushServiceImpl implements PushService { String apiUrl = xgjUrl + "/dmp/dmp-join/open/franchiseeBill"; return executePostApiCall(apiUrl, request, Boolean.class, xgjUsername, xgjSecret,getXgjAccessToken().getAccess_token()); } + @Override + public ContractCallbackDTO pushContract(ContractInformationDTO contractInformationDTO) { + String apiUrl = xgjUrl + "/dmp/dmp-join/open/franchiseContract"; + return executePostApiCall(apiUrl, contractInformationDTO, ContractCallbackDTO.class, xgjUsername, xgjSecret,getXgjAccessToken().getAccess_token()); + } @Override public Boolean pushReceiptToXGJ(ReceiptRequest request) { @@ -327,6 +334,7 @@ public class PushServiceImpl implements PushService { } } + private T executeApiCall(String url, Object requestBody, Class responseType, String username, String secret){ return executePostApiCall(url,requestBody,responseType,username,secret,null); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SignFranchiseServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SignFranchiseServiceImpl.java index d5eabd111..3d568ab62 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SignFranchiseServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SignFranchiseServiceImpl.java @@ -5,10 +5,13 @@ import com.alibaba.fastjson.JSONObject; import com.cool.store.constants.CommonConstants; import com.cool.store.context.LoginUserInfo; import com.cool.store.dao.*; +import com.cool.store.dto.ContractInformationDTO; import com.cool.store.dao.decoration.DecorationTeamConfigDAO; import com.cool.store.dao.decoration.ShopDecorationAssignDAO; import com.cool.store.dao.decoration.TeamAreaMappingDAO; import com.cool.store.dto.PartnerBankInfoDTO; +import com.cool.store.dto.contract.ContractCallbackDTO; +import com.cool.store.dto.contract.PushContractDTO; import com.cool.store.entity.*; import com.cool.store.entity.decoration.DecorationTeamConfigDO; import com.cool.store.entity.decoration.ShopDecorationAssignDO; @@ -33,6 +36,7 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import sun.font.Decoration; @@ -69,6 +73,8 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu private EnterpriseUserRoleDao enterpriseUserRoleDao; @Resource SignFranchiseMapper signFranchiseMapper; + @Resource + SignFranchiseDAO signFranchiseDAO; @Resource UserAuthMappingService userAuthMappingService; @@ -130,6 +136,10 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu @Resource OperationLogDAO operationLogDAO; @Resource + ContractConfigDAO contractConfigDAO; + @Resource + PushService pushService; + @Resource TeamAreaMappingDAO teamAreaMappingDAO; @Resource DecorationTeamConfigDAO decorationTeamConfigDAO; @@ -142,40 +152,40 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu @Override public Boolean auditResult(AuditResultRequest request) { log.info("SignFranchiseServiceImpl auditResult request:{}", JSONObject.toJSONString(request)); - Long shopId = getShopId(request.getKdzBusinessId()); - ShopSubStageStatusEnum shopSubStageStatusEnum = null; - if (request.getAuditResult() == 1) { - shopSubStageStatusEnum = SHOP_SUB_STAGE_STATUS_84; - } else if (request.getAuditResult() == 0) { - shopSubStageStatusEnum = ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_85; - } - ShopAuditInfoDO shopAuditInfoDO = new ShopAuditInfoDO(); - shopAuditInfoDO.setShopId(shopId); - shopAuditInfoDO.setAuditType(AuditTypeEnum.SIGN_FRANCHISE.getCode()); - shopAuditInfoDO.setSubmittedUserId(""); - shopAuditInfoDO.setSubmittedUserName(""); - if (Constants.ZERO_INTEGER.equals(request.getAuditResult())) { - shopAuditInfoDO.setResultType(Constants.ONE_INTEGER); - shopAuditInfoDO.setRejectReason(request.getCause()); - Map requestMap = new HashMap<>(); - ShopInfoDO shopInfoDO = shopInfoMapper.selectByPrimaryKey(shopId); - LineInfoDO lineInfo = lineInfoMapper.getByLineId(shopInfoDO.getLineId()); - requestMap.put("storeName", shopInfoDO.getShopName()); - requestMap.put("partnerName", lineInfo.getUsername()); - requestMap.put("partnerMobile", lineInfo.getMobile()); - requestMap.put("lineId", String.valueOf(lineInfo.getId())); - requestMap.put("shopId", String.valueOf(shopInfoDO.getId())); - commonService.sendMessage(Collections.singletonList(lineInfo.getInvestmentManager()), MessageEnum.MESSAGE_20, requestMap); - } else if (Constants.ONE_INTEGER.equals(request.getAuditResult())) { - shopAuditInfoDO.setResultType(Constants.ZERO_INTEGER); - shopAuditInfoDO.setPassReason(request.getCause()); - //校验建店与加盟签约合同是否完成 并初始化后续流程数据 - //preparationService.contractAndBuildStoreCompletion(shopId); - } - shopAuditInfoMapper.insertSelective(shopAuditInfoDO); - Long auditId = shopAuditInfoDO.getId(); - shopStageInfoDAO.updateShopStageAndAuditInfo(shopId, shopSubStageStatusEnum, auditId); - signFranchiseMapper.updateAuditByShopId(auditId, shopId); +// Long shopId = getShopId(request.getKdzBusinessId()); +// ShopSubStageStatusEnum shopSubStageStatusEnum = null; +// if (request.getAuditResult() == 1) { +// shopSubStageStatusEnum = SHOP_SUB_STAGE_STATUS_84; +// } else if (request.getAuditResult() == 0) { +// shopSubStageStatusEnum = ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_85; +// } +// ShopAuditInfoDO shopAuditInfoDO = new ShopAuditInfoDO(); +// shopAuditInfoDO.setShopId(shopId); +// shopAuditInfoDO.setAuditType(AuditTypeEnum.SIGN_FRANCHISE.getCode()); +// shopAuditInfoDO.setSubmittedUserId(""); +// shopAuditInfoDO.setSubmittedUserName(""); +// if (Constants.ZERO_INTEGER.equals(request.getAuditResult())) { +// shopAuditInfoDO.setResultType(Constants.ONE_INTEGER); +// shopAuditInfoDO.setRejectReason(request.getCause()); +// Map requestMap = new HashMap<>(); +// ShopInfoDO shopInfoDO = shopInfoMapper.selectByPrimaryKey(shopId); +// LineInfoDO lineInfo = lineInfoMapper.getByLineId(shopInfoDO.getLineId()); +// requestMap.put("storeName", shopInfoDO.getShopName()); +// requestMap.put("partnerName", lineInfo.getUsername()); +// requestMap.put("partnerMobile", lineInfo.getMobile()); +// requestMap.put("lineId", String.valueOf(lineInfo.getId())); +// requestMap.put("shopId", String.valueOf(shopInfoDO.getId())); +// commonService.sendMessage(Collections.singletonList(lineInfo.getInvestmentManager()), MessageEnum.MESSAGE_20, requestMap); +// } else if (Constants.ONE_INTEGER.equals(request.getAuditResult())) { +// shopAuditInfoDO.setResultType(Constants.ZERO_INTEGER); +// shopAuditInfoDO.setPassReason(request.getCause()); +// //校验建店与加盟签约合同是否完成 并初始化后续流程数据 +// //preparationService.contractAndBuildStoreCompletion(shopId); +// } +// shopAuditInfoMapper.insertSelective(shopAuditInfoDO); +// Long auditId = shopAuditInfoDO.getId(); +// shopStageInfoDAO.updateShopStageAndAuditInfo(shopId, shopSubStageStatusEnum, auditId); + //signFranchiseMapper.updateAuditByShopId(auditId, shopId); return true; } @@ -198,6 +208,10 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu if (StringUtils.isNotEmpty(request.getShopName())&&request.getShopName().matches("^店铺.$")) { throw new ServiceException(ErrorCodeEnum.SYSTEM_NAME_NOT__SUPPORT); } + //校验金额 + if (!feeCheck(request)){ + throw new ServiceException(ErrorCodeEnum.FEE_NOT_CONSISTENT); + } SignFranchiseDO isExist = signFranchiseMapper.selectByShopId(request.getShopId()); if (Objects.nonNull(isExist) && Objects.isNull(request.getId())) { throw new ServiceException(ErrorCodeEnum.DUPLICATE_SUBMISSION); @@ -214,6 +228,7 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu if (Boolean.TRUE.equals(acquired)) { SignFranchiseDO signFranchiseDO = request.toSignFranchiseDO(); if (Objects.isNull(request.getId())) { + signFranchiseDO.setCreateUserId(user.getUserId()); signFranchiseMapper.insertSelective(signFranchiseDO); shopStageInfoDAO.updateShopStageInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_83); //发送通知 @@ -234,7 +249,22 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu OperationTypeEnum.OPERATION_TYPE_1, "加盟签约合同审批", OperationStatusEnum.NOT_PROCESSED); } else { + //修改签约人信息 signFranchiseMapper.updateByPrimaryKeySelective(signFranchiseDO); + //如果已经签约 修改之后从新推送数据到新管家 + ShopStageInfoDO shopSubStageInfo = shopStageInfoDAO.getShopSubStageInfo(request.getShopId(), ShopSubStageEnum.SHOP_STAGE_8); + if (shopSubStageInfo.getShopSubStageStatus().equals(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_84.getShopSubStageStatus())){ + //如果已经签约 修改之后从新推送数据 + ContractCallbackDTO contractCallbackDTO = pushContractRequest(shopInfoDO, request.getShopId()); + if (!Objects.isNull(contractCallbackDTO)){ + if (StringUtils.isNoneEmpty(contractCallbackDTO.getStoreCode())){ + shopInfoDO.setShopCode(contractCallbackDTO.getStoreCode()); + shopInfoDAO.updateShopInfo(shopInfoDO); + } + signFranchiseDAO.updateAuditByShopId(null, request.getShopId(),contractCallbackDTO); + } + + } } //修改shop & point updateShopAndPoint(request, shopInfoDO, pointInfoById); @@ -266,6 +296,10 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu if (Objects.isNull(request.getShopId())) { throw new ServiceException(ErrorCodeEnum.SHOP_ID_NOT_EXIST); } + //校验金额 + if (!feeCheck(request)){ + throw new ServiceException(ErrorCodeEnum.FEE_NOT_CONSISTENT); + } ShopInfoDO shopInfoDO = shopInfoMapper.selectByPrimaryKey(request.getShopId()); PointInfoDO pointInfoById = pointInfoDAO.getPointInfoById(shopInfoDO.getPointId()); SignFranchiseDO signFranchiseDO = request.toSignFranchiseDO(); @@ -296,6 +330,44 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu return Boolean.TRUE; } + /** + * 费用校验 + * @param request + * @return + */ + private Boolean feeCheck(AddSignFranchiseRequest request){ + //查询账单金额 + FranchiseFeeDO franchiseFeeDO = franchiseFeeMapper.selectByShopId(request.getShopId()); + + //正新鸡排 + if (franchiseFeeDO.getYearFranchiseFee()!=null&&request.getContractFranchiseFee()!=null&&!request.getContractFranchiseFee().equals(franchiseFeeDO.getYearFranchiseFee())){ + return Boolean.FALSE; + } + //合同设计费 + if (franchiseFeeDO.getPerformanceBond()!=null&&request.getContractPerformanceBond()!=null&&!request.getContractPerformanceBond().equals(franchiseFeeDO.getPerformanceBond())){ + return Boolean.FALSE; + } + //品牌使用费 + if (franchiseFeeDO.getFirstYearFee()!=null&&request.getContractBrandUseFee()!=null&&!request.getContractBrandUseFee().equals(franchiseFeeDO.getFirstYearFee())){ + return Boolean.FALSE; + } + //合同保证金 + if (franchiseFeeDO.getLoanMargin()!=null&&request.getContractLoanMargin()!=null&&!request.getContractLoanMargin().equals(franchiseFeeDO.getLoanMargin())){ + return Boolean.FALSE; + } + //合同管理费 + if (franchiseFeeDO.getFirstYearManageFee()!=null&&request.getContractManageFee()!=null&&!request.getContractManageFee().equals(franchiseFeeDO.getFirstYearManageFee())){ + return Boolean.FALSE; + } + if (franchiseFeeDO.getCashierFee()!=null&&request.getContractSysUserFee()!=null&&!request.getContractSysUserFee().equals(franchiseFeeDO.getCashierFee())){ + return Boolean.FALSE; + } + return Boolean.TRUE; + } + + + + private void updateShopAndPoint(AddSignFranchiseRequest request, ShopInfoDO shopInfoDO, PointInfoDO pointInfoById) { //店铺信息 shopInfoDO.setManagerRegionId(request.getManagerRegionId()); @@ -379,6 +451,7 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu shopAuditInfoDO.setSubmittedUserId(user.getUserId()); shopAuditInfoDO.setSubmittedUserName(user.getName()); //驳回 + ContractCallbackDTO contractCallbackDTO = null; if (Constants.ZERO_INTEGER.equals(request.getAuditResult())) { shopAuditInfoDO.setResultType(Constants.ONE_INTEGER); shopAuditInfoDO.setRejectReason(request.getCause()); @@ -444,8 +517,9 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu //初始化数据 preparationService.contractAndBuildStoreCompletion(request.getShopId()); - SignFranchiseDO signFranchiseDO = signFranchiseMapper.selectByShopId(shopId); - log.info("加盟合同审批时签约类型:{}", SignTypeEnum.getDescByCode(signFranchiseDO.getSignType())); + //推送数据 + contractCallbackDTO = pushContractRequest(shopInfoDO, request.getShopId()); + Boolean sendNotice = Boolean.TRUE; commonService.sendSms(lineInfoDO.getMobile(), SMSMsgEnum.SIGN_CONTRACT); if (sendNotice) { @@ -469,7 +543,11 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu } shopAuditInfoMapper.insertSelective(shopAuditInfoDO); Long auditId = shopAuditInfoDO.getId(); - signFranchiseMapper.updateAuditByShopId(auditId, shopId); + if (contractCallbackDTO!=null&&StringUtils.isNotEmpty(contractCallbackDTO.getStoreCode())){ + shopInfoDO.setShopCode(contractCallbackDTO.getStoreCode()); + shopInfoMapper.updateByPrimaryKeySelective(shopInfoDO); + } + signFranchiseDAO.updateAuditByShopId(auditId, shopId,contractCallbackDTO); //审批记录表记录 List operationLogs = operationLogDAO.getBySubStageStatusEnumAndsStatus(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_83, OperationTypeEnum.OPERATION_TYPE_1.getCode()); operationLogService.batchUpdateProcessed(operationLogs, auditId, user.getUserId(), request.getCause()); @@ -487,6 +565,84 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu } } + + /** + * 推送合同信息请求 + * @param shopId + */ + private ContractCallbackDTO pushContractRequest(ShopInfoDO shopInfoDO,Long shopId){ + //推送法大大数据 + //查询缴费信息 + FranchiseFeeDO franchiseFeeDO = franchiseFeeMapper.selectByShopId(shopId); + SignFranchiseDO signFranchiseDO = signFranchiseMapper.selectByShopId(shopId); + + String userName = ""; + if (signFranchiseDO != null){ + userName = enterpriseUserDAO.getUserName(signFranchiseDO.getCreateUserId()); + } + + LineInfoDO lineInfo = lineInfoDAO.getLineInfo(shopInfoDO.getLineId()); + + + log.info("加盟合同审批时签约类型:{}", SignTypeEnum.getDescByCode(signFranchiseDO.getSignType())); + + ContractInformationDTO contractInformationDTO = new ContractInformationDTO(); + if (Objects.nonNull(lineInfo)){ + contractInformationDTO.setSignerAddress(lineInfo.getLiveAddress()); + contractInformationDTO.setSignerPhone(lineInfo.getMobile()); + } + + //自营店 无缴费信息 不需要校验 + if (franchiseFeeDO != null){ + contractInformationDTO.setShopId(shopId); + contractInformationDTO.setJoinModel(shopInfoDO.getJoinMode()); + contractInformationDTO.setShopName(shopInfoDO.getShopName()); + //品牌信息 + contractInformationDTO.setSign1Name(signFranchiseDO.getPartnershipSignatoryFirst()); + contractInformationDTO.setSign2Name(signFranchiseDO.getPartnershipSignatorySecond()); + contractInformationDTO.setFirstYearFee(franchiseFeeDO.getFirstYearFee()); + contractInformationDTO.setLoanMargin(franchiseFeeDO.getLoanMargin()); + contractInformationDTO.setFirstYearManagementFee(franchiseFeeDO.getFirstYearManageFee()); + contractInformationDTO.setYearFranchiseFee(franchiseFeeDO.getYearFranchiseFee()); + contractInformationDTO.setPerformanceBond(franchiseFeeDO.getPerformanceBond()); + + contractInformationDTO.setContractFranchiseFee(signFranchiseDO.getContractFranchiseFee()); + contractInformationDTO.setContractManageFee(signFranchiseDO.getContractManageFee()); + contractInformationDTO.setContractBrandUseFee(signFranchiseDO.getContractBrandUseFee()); + contractInformationDTO.setContractPerformanceBond(signFranchiseDO.getContractPerformanceBond()); + contractInformationDTO.setContractLoanMargin(signFranchiseDO.getContractLoanMargin()); + contractInformationDTO.setContractSysUserFee(signFranchiseDO.getContractSysUserFee()); + contractInformationDTO.setSignModality(signFranchiseDO.getSignModality()); + contractInformationDTO.setFranchiseFeeFrequency(signFranchiseDO.getFranchiseFeeFrequency()); + contractInformationDTO.setBrandUseFeeFrequency(signFranchiseDO.getBrandUseFeeFrequency()); + contractInformationDTO.setJoinSource(signFranchiseDO.getJoinSource()); + contractInformationDTO.setManageFeeFrequency(signFranchiseDO.getManageFeeFrequency()); + contractInformationDTO.setDiscountAmount(signFranchiseDO.getDiscountAmount()); + contractInformationDTO.setSummitUserName(userName); + contractInformationDTO.setCurrency(signFranchiseDO.getCurrency()); + contractInformationDTO.setContractStartTime(DateUtils.dateTime(signFranchiseDO.getContractStartTime())); + contractInformationDTO.setContractEndTime(DateUtils.dateTime(signFranchiseDO.getContractEndTime())); + contractInformationDTO.setContractServiceLife(signFranchiseDO.getContractServiceLife()); + + //老店转加盟(也叫直营转加盟) + if (SignTypeEnum.DIRECT_SALES_TO_JOINING.getCode().equals(signFranchiseDO.getSignType())){ + contractInformationDTO.setOldShopCode(signFranchiseDO.getOldShopCode()); + } + FranchiseBrandEnum enumByCode = FranchiseBrandEnum.getEnumByCode(shopInfoDO.getFranchiseBrand()); + if (enumByCode != null){ + contractInformationDTO.setPayeeName(enumByCode.getPayeeName()); + contractInformationDTO.setBrandOwner(enumByCode.getBrandOwner()); + } + contractInformationDTO.setContractNo(signFranchiseDO.getContractCode()); + try { + return pushService.pushContract(contractInformationDTO); + } catch (Exception e) { + log.error("推送合同信息失败", e); + } + } + return null; + } + @Override public HqtBuildRequest getHqtBuildRequest(Long shopId) { ShopInfoDO shopInfo = shopInfoDAO.getShopInfo(shopId); @@ -562,35 +718,7 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu addSignFranchiseResponse.setManagerRegionName(managerRegion.getName()); } if (Objects.nonNull(signFranchiseDO)) { - addSignFranchiseResponse.setUnifiedManagement(signFranchiseDO.getUnifiedManagement()); - addSignFranchiseResponse.setId(signFranchiseDO.getId()); - addSignFranchiseResponse.setShopId(signFranchiseDO.getShopId()); - addSignFranchiseResponse.setSignType(signFranchiseDO.getSignType()); - addSignFranchiseResponse.setBrandFee(signFranchiseDO.getBrandFee()); - addSignFranchiseResponse.setIsBusinessLicense(signFranchiseDO.getIsBusinessLicense()); - addSignFranchiseResponse.setIsFoodLicense(signFranchiseDO.getIsFoodLicense()); - addSignFranchiseResponse.setContractStartTime(signFranchiseDO.getContractStartTime()); - addSignFranchiseResponse.setContractStartEndTime(signFranchiseDO.getContractEndTime()); - addSignFranchiseResponse.setImpressionNum(signFranchiseDO.getImpressionNum()); - addSignFranchiseResponse.setBusinessStartHours(signFranchiseDO.getBusinessStartHours()); - addSignFranchiseResponse.setBusinessEndHours(signFranchiseDO.getBusinessEndHours()); - addSignFranchiseResponse.setIrregularReason(signFranchiseDO.getIrregularReason()); - addSignFranchiseResponse.setRemark(signFranchiseDO.getRemark()); - addSignFranchiseResponse.setResign(signFranchiseDO.getResign()); - addSignFranchiseResponse.setMobile(signFranchiseDO.getMobile()); - addSignFranchiseResponse.setContractCode(signFranchiseDO.getContractCode()); - addSignFranchiseResponse.setContractAmount(signFranchiseDO.getContractAmount()); - addSignFranchiseResponse.setPartnershipSignatoryFirst(signFranchiseDO.getPartnershipSignatoryFirst()); - addSignFranchiseResponse.setPartnershipSignatorySecond(signFranchiseDO.getPartnershipSignatorySecond()); - addSignFranchiseResponse.setBusinessModel(signFranchiseDO.getBusinessModel()); - addSignFranchiseResponse.setPartnershipSignatorySecondIdNumber(signFranchiseDO.getPartnershipSignatorySecondIdNumber()); - addSignFranchiseResponse.setPartnershipSignatorySecondMobile(signFranchiseDO.getPartnershipSignatorySecondMobile()); - addSignFranchiseResponse.setProtectiveDistance(signFranchiseDO.getProtectiveDistance()); - addSignFranchiseResponse.setIntroducer(signFranchiseDO.getIntroducer()); - addSignFranchiseResponse.setIntroduceStore(signFranchiseDO.getIntroduceStore()); - addSignFranchiseResponse.setIntroductionAward(signFranchiseDO.getIntroductionAward()); - addSignFranchiseResponse.setPartnershipSignatoryFirstWhichStore(signFranchiseDO.getPartnershipSignatoryFirstWhichStore()); - + BeanUtils.copyProperties(signFranchiseDO, addSignFranchiseResponse); } else { if (Objects.nonNull(franchiseFeeDO)) { BigDecimal total = convertToBig(franchiseFeeDO.getYearFranchiseFee()) @@ -685,6 +813,27 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu return true; } + @Override + public Boolean backPayFeeStage(AuditApproveRequest request, LoginUserInfo user) { + //回退到对账中 此阶段账单可编辑 可再次对账 + shopStageInfoDAO.updateShopStageInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_72); + //缴费阶段回退到未开始 + shopStageInfoDAO.updateShopStageToNotStarted(request.getShopId(), ShopSubStageEnum.SHOP_STAGE_8); + ShopAuditInfoDO shopAuditInfoDO = new ShopAuditInfoDO(); + shopAuditInfoDO.setShopId(request.getShopId()); + shopAuditInfoDO.setAuditType(AuditTypeEnum.SIGN_FRANCHISE.getCode()); + shopAuditInfoDO.setSubmittedUserId(user.getUserId()); + shopAuditInfoDO.setSubmittedUserName(user.getName()); + shopAuditInfoDO.setResultType(Constants.ONE_INTEGER); + shopAuditInfoDO.setRejectReason(request.getCause()); + shopAuditInfoMapper.insertSelective(shopAuditInfoDO); + Long auditId = shopAuditInfoDO.getId(); + //审批记录表记录 + List operationLogs = operationLogDAO.getBySubStageStatusEnumAndsStatus(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_83, OperationTypeEnum.OPERATION_TYPE_1.getCode()); + operationLogService.batchUpdateProcessed(operationLogs, auditId, user.getUserId(), "回退到缴费阶段,"+request.getCause()); + return true; + } + @Override public Integer dateHandle() { return signFranchiseMapper.dateHandle(); diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/ContractConfigController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/ContractConfigController.java new file mode 100644 index 000000000..7580972d2 --- /dev/null +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/ContractConfigController.java @@ -0,0 +1,59 @@ +package com.cool.store.controller.webb; + +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.response.ResponseResult; +import com.cool.store.service.ContractConfigService; +import com.github.pagehelper.PageInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.xml.ws.Response; + +/** + * @Author suzhuhong + * @Date 2025/9/9 10:03 + * @Version 1.0 + */ +@RestController +@RequestMapping("pc/contract") +@Api(tags = "PC-合同配置") +@Slf4j +public class ContractConfigController { + + + @Resource + private ContractConfigService contractConfigService; + + @PostMapping("/addContractConfig") + @ApiOperation("添加合同配置") + public ResponseResult addContractConfig(@RequestBody @Validated ContractConfigDTO addContractConfigDTO) { + return ResponseResult.success(contractConfigService.addContractConfig(addContractConfigDTO)); + } + + @PostMapping("/updateContractConfig") + @ApiOperation("更新合同配置") + public ResponseResult updateContractConfig(@RequestBody @Validated ContractConfigDTO addContractConfigDTO) { + return ResponseResult.success(contractConfigService.updateContractConfig(addContractConfigDTO)); + } + + @PostMapping("/queryContractConfigList") + @ApiOperation("合同配置列表") + public ResponseResult> queryContractConfigList(@RequestBody QueryContractListDTO queryContractListDTO) { + return ResponseResult.success(contractConfigService.queryContractConfigList(queryContractListDTO)); + } + + @GetMapping("/deleteContractConfig") + @ApiOperation("删除配置") + public ResponseResult deleteContractConfig(Long id) { + return ResponseResult.success(contractConfigService.deleteContractConfig(id)); + } + + +} diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCSignFranchiseController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCSignFranchiseController.java index f9fbdf693..a1193795a 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCSignFranchiseController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCSignFranchiseController.java @@ -55,6 +55,12 @@ public class PCSignFranchiseController { return ResponseResult.success(signFranchiseService.rePay(shopId)); } + @ApiOperation("回到缴费阶段") + @PostMapping("/backPayFeeStage") + public ResponseResult backPayFeeStage(@RequestBody @Validated AuditApproveRequest request) { + return ResponseResult.success(signFranchiseService.backPayFeeStage(request, CurrentUserHolder.getUser())); + } + @ApiOperation("数据处理,全部设置为新签") @GetMapping("/dateHandle") public ResponseResult dateHandle() { diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCTestController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCTestController.java index 239b49789..3ddcb6d12 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCTestController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCTestController.java @@ -4,10 +4,13 @@ import com.alibaba.fastjson.JSONObject; import com.cool.store.constants.CommonConstants; import com.cool.store.dao.*; import com.cool.store.dto.*; +import com.cool.store.dto.contract.ContractCallbackDTO; +import com.cool.store.dto.*; import com.cool.store.dto.huoma.*; import com.cool.store.dto.wallet.*; import com.cool.store.entity.*; import com.cool.store.enums.DownSystemTypeEnum; +import com.cool.store.enums.FranchiseBrandEnum; import com.cool.store.enums.MessageEnum; import com.cool.store.enums.SMSMsgEnum; import com.cool.store.enums.point.ShopSubStageStatusEnum; @@ -16,6 +19,7 @@ import com.cool.store.handler.WeChatHandler; import com.cool.store.job.XxlJobHandler; import com.cool.store.mapper.FranchiseFeeMapper; import com.cool.store.mapper.ShopInfoMapper; +import com.cool.store.mapper.SignFranchiseMapper; import com.cool.store.mq.util.HttpRestTemplateService; import com.cool.store.request.*; import com.cool.store.request.bigdata.ProfitDataRequest; @@ -103,6 +107,9 @@ public class PCTestController { LinePayService linePayService; @Resource LinePayDAO linePayDAO; + @Resource + SignFranchiseMapper signFranchiseMapper; + @Autowired WeChatHandler weChatHandler; @GetMapping("/syncStore") @@ -398,6 +405,44 @@ public class PCTestController { return ResponseResult.success(Boolean.TRUE); } + @GetMapping("/pushContract") + @ApiOperation("推送合同信息") + public ResponseResult pushContract(@RequestParam(value = "shopId", required = true) Long shopId) { + + ShopInfoDO shopInfoDO = shopInfoDAO.getShopInfo(shopId); + FranchiseFeeDO franchiseFeeDO = franchiseFeeMapper.selectByShopId(shopId); + SignFranchiseDO signFranchiseDO = signFranchiseMapper.selectByShopId(shopId); + + //自营店 无缴费信息 不需要校验 + if (franchiseFeeDO != null){ + ContractInformationDTO contractInformationDTO = new ContractInformationDTO(); + contractInformationDTO.setShopId(shopId); + contractInformationDTO.setJoinModel(shopInfoDO.getJoinMode()); + contractInformationDTO.setShopName(shopInfoDO.getShopName()); + //品牌信息 + contractInformationDTO.setSign1Name(signFranchiseDO.getPartnershipSignatoryFirst()); + contractInformationDTO.setSign2Name(signFranchiseDO.getPartnershipSignatorySecond()); + contractInformationDTO.setFirstYearFee(franchiseFeeDO.getFirstYearFee()); + contractInformationDTO.setLoanMargin(franchiseFeeDO.getLoanMargin()); + contractInformationDTO.setFirstYearManagementFee(franchiseFeeDO.getFirstYearManageFee()); + contractInformationDTO.setFirstYearFee(franchiseFeeDO.getFirstYearFee()); + contractInformationDTO.setPerformanceBond(franchiseFeeDO.getPerformanceBond()); + + FranchiseBrandEnum enumByCode = FranchiseBrandEnum.getEnumByCode(shopInfoDO.getFranchiseBrand()); + if (enumByCode != null){ + contractInformationDTO.setPayeeName(enumByCode.getPayeeName()); + contractInformationDTO.setBrandOwner(enumByCode.getBrandOwner()); + } + try { + ContractCallbackDTO contractCallbackDTO = pushService.pushContract(contractInformationDTO); + log.info("推送合同信息回调:{}", JSONObject.toJSONString(contractCallbackDTO)); + } catch (Exception e) { + log.error("推送合同信息失败", e); + } + } + return ResponseResult.success(Boolean.TRUE); + } + @Resource ShopStageInfoDAO shopStageInfoDAO;