From f006fea2c29241a956ba50c3bbd1d822f1a753cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E9=9D=9E=E5=87=A1?= Date: Tue, 3 Mar 2026 10:48:32 +0000 Subject: [PATCH] Merge #47 into master from cc_20250922_closeStore_w MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 闭店 * cc_20250922_closeStore_w: (67 commits squashed) - feat:闭店流程init - feat:闭店流程接口 - feat:闭店 - Merge branch 'refs/heads/master' into cc_20250922_closeStore_w - fix:闭店材料模块 - fix:账号关闭流程 - feat:闭店审批流程(未测);字典表 - fix:闭店审批流程完善 - Merge branch 'master' into cc_20250922_closeStore_w - fix:闭店流程流转补充 - feat:闭店退款 - fix:字典表接口 - Merge branch 'master' into cc_20250922_closeStore_w - fix:闭店原因接口新增闭店发起方式字段 - fix:修改审批记录返回数据类型 feat:新增退款流程跳过 - fix - fix:新增字段 - feat:新增闭店退款提交人列表接口 - fix:闭店初始化数据来源修改;小程序闭店材料详情新增模板url字段 - fix:新增接口返回字段 - fix:闭店管理、审批待办类别所属品牌筛选改为多选 - fix:闭店管理列表新增完成阶段数量字段 - feat:新增第三方闭店申请接口 - Merge branch 'refs/heads/master' into cc_20250922_closeStore_w # Conflicts: # coolstore-partner-common/src/main/java/com/cool/store/constants/CommonConstants.java # coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java # coolstore-partner-common/src/main/java/com/cool/store/utils/BeanUtil.java # coolstore-partner-dao/src/main/java/com/cool/store/dao/StoreDao.java # coolstore-partner-dao/src/main/java/com/cool/store/mapper/StoreMapper.java # coolstore-partner-dao/src/main/resources/mapper/StoreMapper.xml - fix:自动发起闭店申请定时任务 - feat:火码账号关闭 - fix:闭店流程修改 - Merge branch 'master' into cc_20250922_closeStore_w # Conflicts: # coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java # coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java # coolstore-partner-web/src/main/java/com/cool/store/controller/webb/OpenApiController.java - fix:删除云流水发起闭店接口 - fix:取消闭店申请入参修改 - fix:闭店申请列表赋值异常问题 - fix:闭店审批通过异常 - fix:普通方法参数校验 - fix:账号关闭时校验阶段状态 - fix:初始化 - fix:字段新增 - fix:接口补充 - fix - Merge branch 'refs/heads/master' into cc_20250922_closeStore_w # Conflicts: # coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java # coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java # coolstore-partner-common/src/main/java/com/cool/store/enums/RocketMqGroupEnum.java # coolstore-partner-common/src/main/java/com/cool/store/enums/RocketMqTagEnum.java # coolstore-partner-web/src/main/java/com/cool/store/controller/webb/OpenApiController.java # coolstore-partner-web/src/main/java/com/cool/store/controller/webc/TestController.java - Merge branch 'refs/heads/master' into cc_20250922_closeStore_w # Conflicts: # coolstore-partner-common/src/main/java/com/cool/store/common/InsertGroup.java # coolstore-partner-common/src/main/java/com/cool/store/common/UpdateGroup.java # coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java # coolstore-partner-dao/src/main/java/com/cool/store/dao/StoreDao.java # coolstore-partner-dao/src/main/java/com/cool/store/dao/dict/SysDictColumnDAO.java # coolstore-partner-dao/src/main/java/com/cool/store/mapper/StoreMapper.java # coolstore-partner-dao/src/main/java/com/cool/store/mapper/dict/SysDictColumnMapper.java # coolstore-partner-dao/src/main/resources/mapper/StoreMapper.xml # coolstore-partner-dao/src/main/resources/mapper/dict/SysDictColumnMapper.xml # coolstore-partner-web/src/main/java/com/cool/store/controller/webb/DictManagerController.java # coolstore-partner-web/src/main/java/com/cool/store/job/XxlJobHandler.java - fix:闭店流程修改 - fix:闭店流程修改 - fix:修改三方付款状态接口 - fix:闭店申请测试接口 - fix:退款供应商接口补充 - fix:支行列表接口 - fix:错误信息修改 - Merge branch 'master' into cc_20250922_closeStore_w # Conflicts: # coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java # coolstore-partner-model/src/main/java/com/cool/store/request/close/refund/CloseStoreRefundAddRequest.java # coolstore-partner-model/src/main/java/com/cool/store/request/xgj/XgjPartnerAccountRequest.java # coolstore-partner-model/src/main/java/com/cool/store/request/xgj/XgjSavePartnerRequest.java # coolstore-partner-service/src/main/java/com/cool/store/service/close/CloseStoreRefundService.java # coolstore-partner-service/src/main/java/com/cool/store/service/close/impl/CloseStoreRefundServiceImpl.java # coolstore-partner-web/src/main/java/com/cool/store/controller/webb/CloseStoreRefundController.java # coolstore-partner-web/src/main/java/com/cool/store/controller/webb/OpenApiController.java # coolstore-partner-web/src/main/java/com/cool/store/job/XxlJobHandler.java - fix:闭店材料详情接口新增字段 - fix:闭店材料修改单个材料时,去除审批状态 - Merge remote-tracking branch 'origin/cc_20250922_closeStore_w' into cc_20250922_closeStore_w - fix:闭店材料详情接口新增模板链接字段 - fix:闭店材料详情新增材料状态转义字段 - Merge remote-tracking branch 'origin/cc_20250922_closeStore_w' into cc_20250922_closeStore_w - fix:新管家应退实退金额字段修改 - fix:闭店支行测试环境mock - fix:redis报错修复 - fix:新管家关店原因字段补充 - fix:新增字段 - fix:字段补充 - fix:小程序新增接口根据闭店申请id获取闭店申请简单信息 - fix:小程序退款信息列表修改 - fix:闭店审批允许管理员审批 - fix:阶段名称修改 - Merge branch 'refs/heads/master' into cc_20250922_closeStore_w # Conflicts: # coolstore-partner-common/src/main/java/com/cool/store/enums/close/CloseStoreSubStageStatusEnum.java - fix:闭店记录列表补充审批id;仅在营门店允许发起闭店 - fix:提交新管家字段取值逻辑修改 Signed-off-by: 王非凡 Merged-by: 正新 CR-link: https://codeup.aliyun.com/692ea314dec569489f6f167c/hangzhou/java/custom_zxjp/change/47 --- .../com/cool/store/enums/ErrorCodeEnum.java | 3 +- .../close/CloseStoreSubStageStatusEnum.java | 4 +- .../store/dao/CloseStoreAuditRecordDAO.java | 20 ++++ .../mapper/CloseStoreFileInfoMapper.xml | 3 +- .../cool/store/dto/xgj/XgjBranchBankDTO.java | 4 + .../CloseStorePartnerAccountRequest.java | 33 ++++++ .../refund/CloseStorePartnerQueryRequest.java | 41 +++++++ .../refund/CloseStorePartnerRequest.java | 52 +++++++++ .../refund/CloseStoreRefundAddRequest.java | 23 ++-- .../request/xgj/XgjPartnerAccountRequest.java | 4 +- .../request/xgj/XgjReimburseFeeRequest.java | 4 +- .../request/xgj/XgjSavePartnerRequest.java | 4 +- .../file/CloseStoreFileDetailMiniVO.java | 3 + .../vo/close/file/CloseStoreFileDetailVO.java | 6 + .../vo/close/file/CloseStoreFileInfoVO.java | 11 ++ .../refund/CloseStoreRefundSimpleVO.java | 21 ++-- .../vo/close/store/CloseStoreSimpleVO.java | 3 + .../close/CloseStoreRefundService.java | 35 +++++- .../close/impl/CloseStoreFileServiceImpl.java | 22 +++- .../impl/CloseStoreRefundServiceImpl.java | 107 ++++++++++++++---- .../close/impl/CloseStoreServiceImpl.java | 10 ++ .../webb/CloseStoreRefundController.java | 25 ++++ .../webc/MiniCloseStoreController.java | 7 ++ .../webc/MiniCloseStoreRefundController.java | 6 +- .../com/cool/store/job/XxlJobHandler.java | 25 +--- 25 files changed, 394 insertions(+), 82 deletions(-) create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/request/close/refund/CloseStorePartnerAccountRequest.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/request/close/refund/CloseStorePartnerQueryRequest.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/request/close/refund/CloseStorePartnerRequest.java 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 3394d5043..d6549d304 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 @@ -349,7 +349,7 @@ public enum ErrorCodeEnum { // 171闭店 CLOSE_STORE_SUB_STAGE_ERROR(171002, "当前流程状态异常", null), STORE_NOT_EXIST(1710003,"门店不存在!",null), - STORE_NOT_OPEN(1710004,"当期门店状态为已闭店!请确认!",null), + STORE_NOT_OPEN(1710004,"当前门店状态为已闭店!请确认!",null), CLOSE_STORE_INFO_NOT_EXIST(1710005,"闭店申请信息不存在!",null), CLOSE_STORE_EXIST_ONGOING_RECORD(1710006,"当前门店有进行中的闭店申请,请确认!",null), CLOSE_STORE_HAS_BEEN_COMPLETED(1710007,"该审批已结束",null), @@ -364,6 +364,7 @@ public enum ErrorCodeEnum { CLOSE_STORE_REFUND_MK_USER_NOT_EXIST(1710016, "当前用户不存在每刻权限", null), CLOSE_STORE_REFUND_EXIST_EFFECTIVE_RECORD(1710017, "存在生效中的退款申请!", null), CLOSE_STORE_REFUND_TYPE_ERROR(1710018, "退款类型错误", null), + CLOSE_STORE_ONLY_SUPPORT_OPEN(1710019, "仅支持在营门店发起闭店申请", null), /** * 181 十二分制 diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/close/CloseStoreSubStageStatusEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/close/CloseStoreSubStageStatusEnum.java index 6ef56841d..abcba19cf 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/close/CloseStoreSubStageStatusEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/close/CloseStoreSubStageStatusEnum.java @@ -19,8 +19,8 @@ public enum CloseStoreSubStageStatusEnum { */ CLOSE_STORE_SUB_STAGE_STATUS_10(CloseStoreSubStageEnum.CLOSE_STORE_SUB_STAGE_10, 100, "待内勤填写地址", Boolean.FALSE), CLOSE_STORE_SUB_STAGE_STATUS_15(CloseStoreSubStageEnum.CLOSE_STORE_SUB_STAGE_10, 110, "未提交", Boolean.FALSE), - CLOSE_STORE_SUB_STAGE_STATUS_16(CloseStoreSubStageEnum.CLOSE_STORE_SUB_STAGE_10, 120, "待招商经理审核", Boolean.FALSE), - CLOSE_STORE_SUB_STAGE_STATUS_17(CloseStoreSubStageEnum.CLOSE_STORE_SUB_STAGE_10, 130, "招商经理审批驳回", Boolean.FALSE), + CLOSE_STORE_SUB_STAGE_STATUS_16(CloseStoreSubStageEnum.CLOSE_STORE_SUB_STAGE_10, 120, "待运营顾问审核", Boolean.FALSE), + CLOSE_STORE_SUB_STAGE_STATUS_17(CloseStoreSubStageEnum.CLOSE_STORE_SUB_STAGE_10, 130, "运营顾问审批驳回", Boolean.FALSE), CLOSE_STORE_SUB_STAGE_STATUS_18(CloseStoreSubStageEnum.CLOSE_STORE_SUB_STAGE_10, 140, "待内勤审核", Boolean.FALSE), CLOSE_STORE_SUB_STAGE_STATUS_19(CloseStoreSubStageEnum.CLOSE_STORE_SUB_STAGE_10, 150, "内勤审批驳回", Boolean.FALSE), CLOSE_STORE_SUB_STAGE_STATUS_20(CloseStoreSubStageEnum.CLOSE_STORE_SUB_STAGE_10, 160, "已完成", Boolean.TRUE), diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/CloseStoreAuditRecordDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/CloseStoreAuditRecordDAO.java index 722b61a6e..461c667cf 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/CloseStoreAuditRecordDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/CloseStoreAuditRecordDAO.java @@ -1,5 +1,7 @@ package com.cool.store.dao; +import cn.hutool.core.collection.CollStreamUtil; +import com.alibaba.excel.util.CollectionUtils; import com.cool.store.entity.CloseStoreAuditRecordDO; import com.cool.store.enums.close.CloseStoreAuditStatusEnum; import com.cool.store.enums.close.RecordTypeEnum; @@ -167,4 +169,22 @@ public class CloseStoreAuditRecordDAO { .andEqualTo("deleted", 0); return closeStoreAuditRecordMapper.selectOneByExample(example); } + + /** + * 获取待处理的审批记录 + * @param closeStoreIds 闭店申请id列表 + * @return 闭店申请id->审批记录id + */ + public Map getPendingAuditIdByCloseStoreIds(List closeStoreIds) { + if (CollectionUtils.isEmpty(closeStoreIds)) { + return Collections.emptyMap(); + } + Example example = new Example(CloseStoreAuditRecordDO.class); + example.createCriteria() + .andIn("closeStoreId", closeStoreIds) + .andEqualTo("auditStatus", CloseStoreAuditStatusEnum.PENDING.getStatus()) + .andEqualTo("deleted", 0); + List list = closeStoreAuditRecordMapper.selectByExample(example); + return CollStreamUtil.toMap(list, CloseStoreAuditRecordDO::getCloseStoreId, CloseStoreAuditRecordDO::getId); + } } diff --git a/coolstore-partner-dao/src/main/resources/mapper/CloseStoreFileInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/CloseStoreFileInfoMapper.xml index ef6924f0a..870422d62 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/CloseStoreFileInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/CloseStoreFileInfoMapper.xml @@ -54,7 +54,8 @@ UPDATE zxjp_close_store_file_info SET urls = #{urls}, - file_status = CASE WHEN file_status = 2 THEN 5 WHEN file_status = 5 THEN 5 ELSE 3 END + file_status = CASE WHEN file_status = 2 THEN 5 WHEN file_status = 5 THEN 5 ELSE 3 END, + approve_status = NULL WHERE id = #{id} AND file_status IN (0, 2, 3, 5) diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/xgj/XgjBranchBankDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/xgj/XgjBranchBankDTO.java index d27727998..1b733de10 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/dto/xgj/XgjBranchBankDTO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/xgj/XgjBranchBankDTO.java @@ -2,7 +2,9 @@ package com.cool.store.dto.xgj; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; /** *

@@ -14,6 +16,8 @@ import lombok.Data; */ @Data @JsonIgnoreProperties(ignoreUnknown = true) +@AllArgsConstructor +@NoArgsConstructor public class XgjBranchBankDTO { @ApiModelProperty("银行名称") private String matchBankName; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/close/refund/CloseStorePartnerAccountRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/close/refund/CloseStorePartnerAccountRequest.java new file mode 100644 index 000000000..549339c61 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/close/refund/CloseStorePartnerAccountRequest.java @@ -0,0 +1,33 @@ +package com.cool.store.request.close.refund; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + *

+ * 闭店退款供应商账户Request + *

+ * + * @author wangff + * @since 2025/12/11 + */ +@Data +public class CloseStorePartnerAccountRequest { + @ApiModelProperty("账户名称") + @NotBlank(message = "账户名称不能为空") + private String accountName; + + @ApiModelProperty("银行账号") + @NotBlank(message = "银行账号不能为空") + private String accountNumber; + + @ApiModelProperty("开户银行,全称") + @NotBlank(message = "开户银行不能为空") + private String bankName; + + @ApiModelProperty("开户支行号") + @NotBlank(message = "开户支行号不能为空") + private String bankBranchNo; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/close/refund/CloseStorePartnerQueryRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/close/refund/CloseStorePartnerQueryRequest.java new file mode 100644 index 000000000..37edd7272 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/close/refund/CloseStorePartnerQueryRequest.java @@ -0,0 +1,41 @@ +package com.cool.store.request.close.refund; + +import cn.hutool.core.bean.BeanUtil; +import com.cool.store.common.PageBasicInfo; +import com.cool.store.request.xgj.XgjPartnerQueryRequest; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + *

+ * 闭店退款供应商查询Request + *

+ * + * @author wangff + * @since 2025/12/11 + */ +@Data +public class CloseStorePartnerQueryRequest extends PageBasicInfo { + @ApiModelProperty("查询开始(创建/更新)时间戳(包含、秒级)") + private Long startTime; + + @ApiModelProperty("查询结束时间戳") + private Long endTime; + + @ApiModelProperty("往来单位编码") + private List bizCodes; + + @ApiModelProperty("分类的业务编码") + private String parentBizCode; + + @ApiModelProperty("往来单位编码/名字") + private String keyword; + + public XgjPartnerQueryRequest convertXgj() { + XgjPartnerQueryRequest request = BeanUtil.toBean(this, XgjPartnerQueryRequest.class); + request.setPageNo(this.getPageNum()); + return request; + } +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/close/refund/CloseStorePartnerRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/close/refund/CloseStorePartnerRequest.java new file mode 100644 index 000000000..6c2c2a726 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/close/refund/CloseStorePartnerRequest.java @@ -0,0 +1,52 @@ +package com.cool.store.request.close.refund; + +import com.cool.store.request.xgj.XgjSavePartnerRequest; +import com.cool.store.utils.BeanUtil; +import com.cool.store.utils.UUIDUtils; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import java.util.List; + +/** + *

+ * 闭店退款供应商同步Request + *

+ * + * @author wangff + * @since 2025/12/11 + */ +@Data +public class CloseStorePartnerRequest { + @ApiModelProperty("供应商名称") + @NotBlank(message = "供应商名称不能为空") + private String name; + + @ApiModelProperty("所属分类,测试环境填‘测试供应商分类’") + @NotBlank(message = "供应商名称不能为空") + private String parentName; + + @ApiModelProperty("所属分类编码,测试环境CGYS") + @NotBlank(message = "供应商名称不能为空") + private String parentBizCode; + + @ApiModelProperty("往来关系") + private String partnerType; + + @ApiModelProperty("往来性质") + private String partnerProperty; + + @ApiModelProperty("往来单位账户列表") + @NotEmpty(message = "往来单位账户列表不能为空") + @Valid + private List accounts; + + public XgjSavePartnerRequest convertXgj() { + XgjSavePartnerRequest request = BeanUtil.toBean(this, XgjSavePartnerRequest.class); + request.setBusinessCode(UUIDUtils.get32UUID()); + return request; + } +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/close/refund/CloseStoreRefundAddRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/close/refund/CloseStoreRefundAddRequest.java index 28c3bd644..3e4926523 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/close/refund/CloseStoreRefundAddRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/close/refund/CloseStoreRefundAddRequest.java @@ -1,8 +1,9 @@ package com.cool.store.request.close.refund; +import com.cool.store.annotation.DictField; import com.cool.store.dto.close.CloseStoreMkUserDTO; -import com.cool.store.entity.CloseStoreRefundInfoDO; import com.cool.store.entity.StoreDO; +import com.cool.store.enums.master.StoreCloseNatureEnum; import com.cool.store.enums.master.StoreCloseReasonEnum; import com.cool.store.request.xgj.XgjReimburseFeeRequest; import com.cool.store.request.xgj.XgjReimburseRequest; @@ -12,7 +13,6 @@ import lombok.Data; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; -import javax.validation.constraints.Pattern; import java.math.BigDecimal; import java.util.Collections; import java.util.Date; @@ -39,6 +39,10 @@ public class CloseStoreRefundAddRequest { @NotBlank(message = "公司抬头") private String invoiceTitle; + @ApiModelProperty(value = "公司抬头", hidden = true) + @DictField(sourceField = "invoiceTitle") + private String legalEntity; + @ApiModelProperty("提交人每刻工号") private String submitterId; @@ -53,6 +57,10 @@ public class CloseStoreRefundAddRequest { @NotBlank(message = "退款类型不能为空") private String refundType; + @ApiModelProperty(value = "退款类型", hidden = true) + @DictField(sourceField = "refundType") + private String cf175; + @ApiModelProperty("其他说明") private String remark; @@ -110,13 +118,14 @@ public class CloseStoreRefundAddRequest { public XgjReimburseRequest convertToXgjRequest(CloseStoreMkUserDTO mkUserDTO, Integer closeReason, StoreDO storeDO) { StoreCloseReasonEnum closeReasonEnum = StoreCloseReasonEnum.getByCode(closeReason); return XgjReimburseRequest.builder() - .legalEntity(invoiceTitle) + .legalEntity(legalEntity) .coverUser(mkUserDTO.getJobnumber()) .reimburseName(refundReason) - .cf175(refundType) + .cf175(cf175) .cf176(refundProject) .cf333(closeReasonEnum.getCloseNature().getDesc()) - .cf334(closeReasonEnum.getDesc()) + .cf334(StoreCloseNatureEnum.REQUIRE_CLOSE.equals(closeReasonEnum.getCloseNature()) ? closeReasonEnum.getDesc() : "") + .cf335(StoreCloseNatureEnum.ONESELF_CLOSE.equals(closeReasonEnum.getCloseNature()) ? closeReasonEnum.getDesc() : "") .cf177(storeDO.getStoreNum()) .cf178(storeDO.getStoreName()) .comments(remark) @@ -130,8 +139,8 @@ public class CloseStoreRefundAddRequest { .expenseList(Collections.singletonList( XgjReimburseFeeRequest.builder() .expenseTypeCode(expenseTypeCode) - .consumeAmount(expectedAmount) - .refundAmount(actualAmount) + .consumeAmount(actualAmount) + .refundAmount(expectedAmount) .deductionAmount(deductAmount) .consumeTime(CoolDateUtils.DateFormat(expenseApplyTime, "yyyy-MM-dd HH:mm:ss")) .build() diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/xgj/XgjPartnerAccountRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/xgj/XgjPartnerAccountRequest.java index 87ee14d04..7e1561d62 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/xgj/XgjPartnerAccountRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/xgj/XgjPartnerAccountRequest.java @@ -25,6 +25,6 @@ public class XgjPartnerAccountRequest { @ApiModelProperty("开户支行号") private String bankBranchNo; - @ApiModelProperty("账户类型") - private String accountType; + @ApiModelProperty("账户类型,固定BANK") + private String accountType = "BANK"; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/xgj/XgjReimburseFeeRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/xgj/XgjReimburseFeeRequest.java index 8e432fef3..c59db5e3f 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/xgj/XgjReimburseFeeRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/xgj/XgjReimburseFeeRequest.java @@ -24,10 +24,10 @@ public class XgjReimburseFeeRequest { @ApiModelProperty(value = "费用类型编码", required = true) private String expenseTypeCode; - @ApiModelProperty(value = "应退金额", required = true) + @ApiModelProperty(value = "实退金额", required = true) private BigDecimal consumeAmount; - @ApiModelProperty(value = "实退金额", required = true) + @ApiModelProperty(value = "应退金额", required = true) private BigDecimal refundAmount; @ApiModelProperty(value = "扣款金额", required = true) diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/xgj/XgjSavePartnerRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/xgj/XgjSavePartnerRequest.java index def60728d..953dac111 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/xgj/XgjSavePartnerRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/xgj/XgjSavePartnerRequest.java @@ -22,10 +22,10 @@ public class XgjSavePartnerRequest { @ApiModelProperty("往来单位编码") private String businessCode; - @ApiModelProperty("所属分类") + @ApiModelProperty("所属分类,测试环境填‘测试供应商分类’") private String parentName; - @ApiModelProperty("所属分类编码") + @ApiModelProperty("所属分类编码,测试环境CGYS") private String parentBizCode; @ApiModelProperty("往来关系") diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/close/file/CloseStoreFileDetailMiniVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/close/file/CloseStoreFileDetailMiniVO.java index de4e09003..b2bdf7be1 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/close/file/CloseStoreFileDetailMiniVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/close/file/CloseStoreFileDetailMiniVO.java @@ -42,4 +42,7 @@ public class CloseStoreFileDetailMiniVO { @ApiModelProperty("督导审批意见") private String remark; + + @ApiModelProperty("阶段状态") + private Integer shopSubStageStatus; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/close/file/CloseStoreFileDetailVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/close/file/CloseStoreFileDetailVO.java index 55604f868..3a37b3667 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/close/file/CloseStoreFileDetailVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/close/file/CloseStoreFileDetailVO.java @@ -19,6 +19,9 @@ public class CloseStoreFileDetailVO { @ApiModelProperty("闭店申请id") private Long closeStoreId; + @ApiModelProperty("闭店申请单号") + private String closeStoreNo; + @ApiModelProperty("邮件单号") private String mailNumber; @@ -51,4 +54,7 @@ public class CloseStoreFileDetailVO { @ApiModelProperty("督导审批意见") private String remark; + + @ApiModelProperty("阶段状态") + private Integer shopSubStageStatus; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/close/file/CloseStoreFileInfoVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/close/file/CloseStoreFileInfoVO.java index 7a3985304..94dd7a6f2 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/close/file/CloseStoreFileInfoVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/close/file/CloseStoreFileInfoVO.java @@ -1,5 +1,6 @@ package com.cool.store.vo.close.file; +import com.cool.store.enums.close.FileStatusEnum; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -31,9 +32,19 @@ public class CloseStoreFileInfoVO { @ApiModelProperty("材料状态 0-未上传 1-合格 2-不合格 3-已上传 4-审批中 5-已修改") private Integer fileStatus; + @ApiModelProperty("材料状态") + private String fileStatusName; + @ApiModelProperty("审批意见") private String approveOpinion; + @ApiModelProperty("模板链接") + private String templateUrl; + @ApiModelProperty("图片列表") private String urls; + + public String getFileStatusName() { + return FileStatusEnum.getDescByStatus(this.fileStatus); + } } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/close/refund/CloseStoreRefundSimpleVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/close/refund/CloseStoreRefundSimpleVO.java index 5f481e8f2..cf9c0f52c 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/close/refund/CloseStoreRefundSimpleVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/close/refund/CloseStoreRefundSimpleVO.java @@ -1,5 +1,6 @@ package com.cool.store.vo.close.refund; +import com.cool.store.enums.close.RefundPayStatusEnum; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -19,27 +20,25 @@ public class CloseStoreRefundSimpleVO { @ApiModelProperty("id") private Long id; - @ApiModelProperty("退款类型(闭店子阶段code)") - private Integer type; - @ApiModelProperty("闭店申请id") private Long closeStoreId; @ApiModelProperty("退款申请单号") private String refundNo; - @ApiModelProperty("每刻退款单号") - private String refundOrderNo; - - @ApiModelProperty("退款项目") - private String refundProject; - @ApiModelProperty("退款状态") private String refundStatus; + @ApiModelProperty("退款状态名称") + private String refundStatusName; + @ApiModelProperty("退款时间") private Date refundTime; - @ApiModelProperty("应退金额") - private BigDecimal expectedAmount; + @ApiModelProperty("退款金额") + private BigDecimal actualAmount; + + public String getRefundStatusName() { + return RefundPayStatusEnum.getDescByStatus(this.refundStatus); + } } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/close/store/CloseStoreSimpleVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/close/store/CloseStoreSimpleVO.java index d45251c05..030839e12 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/close/store/CloseStoreSimpleVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/close/store/CloseStoreSimpleVO.java @@ -18,6 +18,9 @@ public class CloseStoreSimpleVO { @ApiModelProperty("门店id") private String storeId; + @ApiModelProperty("闭店申请单号") + private String closeStoreNo; + @ApiModelProperty("门店名称") private String storeName; diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/close/CloseStoreRefundService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/close/CloseStoreRefundService.java index e41223713..a28037408 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/close/CloseStoreRefundService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/close/CloseStoreRefundService.java @@ -1,10 +1,15 @@ package com.cool.store.service.close; import com.cool.store.dto.close.CloseStoreMkUserDTO; +import com.cool.store.dto.xgj.XgjBranchBankDTO; import com.cool.store.request.close.refund.CloseStoreRefundAddRequest; import com.cool.store.request.close.refund.CloseStoreRefundQueryRequest; import com.cool.store.request.close.refund.CloseStoreRefundSkipRequest; import com.cool.store.request.close.refund.CloseStoreRefundUpdateRequest; +import com.cool.store.dto.xgj.XgjPartnerPageDTO; +import com.cool.store.entity.CloseStoreRefundInfoDO; +import com.cool.store.request.close.refund.*; +import com.cool.store.request.xgj.XgjBankQueryRequest; import com.cool.store.vo.close.refund.CloseStoreRefundDetailVO; import com.cool.store.vo.close.refund.CloseStoreRefundListVO; import com.cool.store.vo.close.refund.CloseStoreRefundSimpleVO; @@ -55,10 +60,10 @@ public interface CloseStoreRefundService { /** * 查询退款简单信息列表 - * @param closeStoreId 闭店申请id + * @param request request * @return 闭店退款简单信息VO列表 */ - List getRefundSimpleList(Long closeStoreId); + PageInfo getRefundSimpleList(CloseStoreRefundQueryRequest request); /** * 跳过流程 @@ -79,4 +84,30 @@ public interface CloseStoreRefundService { * @return 是否成功 */ Boolean refreshRefundOrderStatus(CloseStoreRefundQueryRequest request); + + /** + * 获取订单状态 + */ + void refreshRefund(List list, List updateList, List completeList); + + /** + * 同步供应商信息 + * @param request 闭店退款供应商同步Request + * @return 是否成功 + */ + Boolean savePartner(CloseStorePartnerRequest request); + + /** + * 供应商查询 + * @param request 闭店退款供应商查询Request + * @return 新管家分页DTO + */ + XgjPartnerPageDTO queryPartnerPage(CloseStorePartnerQueryRequest request); + + /** + * 银行支行 + * @param request 支行查询Request + * @return 支行列表 + */ + List queryBranchBankList(XgjBankQueryRequest request); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/close/impl/CloseStoreFileServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/close/impl/CloseStoreFileServiceImpl.java index d44f77e00..52a103a88 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/close/impl/CloseStoreFileServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/close/impl/CloseStoreFileServiceImpl.java @@ -4,8 +4,11 @@ import com.cool.store.constants.CommonConstants; import com.cool.store.constants.RedisConstant; import com.cool.store.dao.CloseStoreFileDetailDAO; import com.cool.store.dao.CloseStoreFileInfoDAO; +import com.cool.store.dao.CloseStoreInfoDAO; import com.cool.store.dao.CloseStoreStageInfoDAO; import com.cool.store.entity.CloseStoreFileInfoDO; +import com.cool.store.entity.CloseStoreInfoDO; +import com.cool.store.entity.CloseStoreStageInfoDO; import com.cool.store.enums.ErrorCodeEnum; import com.cool.store.enums.close.*; import com.cool.store.exception.ServiceException; @@ -48,6 +51,8 @@ public class CloseStoreFileServiceImpl implements CloseStoreFileService { private final CloseStoreStageInfoDAO closeStoreStageInfoDAO; private final CloseStoreService closeStoreService; private final RedisUtilPool redisUtilPool; + private final CloseStoreInfoDAO closeStoreInfoDAO; + private static final CloseStoreStageEnum STAGE = CloseStoreStageEnum.CLOSE_STORE_STAGE_1; private static final CloseStoreSubStageEnum SUB_STAGE = CloseStoreSubStageEnum.CLOSE_STORE_SUB_STAGE_10; @@ -146,24 +151,29 @@ public class CloseStoreFileServiceImpl implements CloseStoreFileService { @Override public CloseStoreFileDetailVO getFileDetail(Long closeStoreId) { + CloseStoreInfoDO closeStoreInfoDO = closeStoreInfoDAO.getById(closeStoreId); + if (Objects.isNull(closeStoreInfoDO)) { + throw new ServiceException(ErrorCodeEnum.CLOSE_STORE_INFO_NOT_EXIST); + } CloseStoreFileDetailDO fileDetailDO = closeStoreFileDetailDAO.getByCloseStoreId(closeStoreId); CloseStoreFileDetailVO detailVO = BeanUtil.toBean(fileDetailDO, CloseStoreFileDetailVO.class); + detailVO.setCloseStoreNo(closeStoreInfoDO.getCloseStoreNo()); List fileList = closeStoreFileInfoDAO.getByCloseStoreId(closeStoreId); List fileVOList = BeanUtil.toList(fileList, CloseStoreFileInfoVO.class); detailVO.setFileList(fileVOList); - + CloseStoreStageInfoDO stageInfo = closeStoreStageInfoDAO.getByStage(closeStoreId, STAGE.getCloseStoreStage(), SUB_STAGE.getCloseStoreSubStage()); + detailVO.setShopSubStageStatus(stageInfo.getShopSubStageStatus()); + if (CollectionUtils.isNotEmpty(detailVO.getFileList())) { + detailVO.getFileList().forEach(v -> v.setTemplateUrl(redisUtilPool.hashGet(RedisConstant.CLOSE_STORE_FILE_TEMPLATE, v.getFileCode()))); + } return detailVO; } @Override public CloseStoreFileDetailMiniVO getMiniFileDetail(Long closeStoreId) { CloseStoreFileDetailVO fileDetail = getFileDetail(closeStoreId); - CloseStoreFileDetailMiniVO result = BeanUtil.toBean(fileDetail, CloseStoreFileDetailMiniVO.class); - if (CollectionUtils.isNotEmpty(result.getFileList())) { - result.getFileList().forEach(v -> v.setTemplateUrl(redisUtilPool.hashGet(RedisConstant.CLOSE_STORE_FILE_TEMPLATE, v.getFileCode()))); - } - return result; + return BeanUtil.toBean(fileDetail, CloseStoreFileDetailMiniVO.class); } @Override diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/close/impl/CloseStoreRefundServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/close/impl/CloseStoreRefundServiceImpl.java index ea6bf2555..522842eaa 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/close/impl/CloseStoreRefundServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/close/impl/CloseStoreRefundServiceImpl.java @@ -1,10 +1,14 @@ package com.cool.store.service.close.impl; +import cn.hutool.core.collection.CollStreamUtil; import com.alibaba.fastjson.JSONObject; import com.cool.store.constants.RedisConstant; import com.cool.store.context.CurrentUserHolder; import com.cool.store.dao.*; import com.cool.store.dto.close.CloseStoreMkUserDTO; +import com.cool.store.dto.wallet.BankListDTO; +import com.cool.store.dto.xgj.XgjBranchBankDTO; +import com.cool.store.dto.xgj.XgjPartnerPageDTO; import com.cool.store.dto.xgj.XgjPayResultDTO; import com.cool.store.entity.CloseStoreInfoDO; import com.cool.store.entity.CloseStoreRefundInfoDO; @@ -20,13 +24,17 @@ import com.cool.store.request.close.refund.CloseStoreRefundAddRequest; import com.cool.store.request.close.refund.CloseStoreRefundQueryRequest; import com.cool.store.request.close.refund.CloseStoreRefundSkipRequest; import com.cool.store.request.close.refund.CloseStoreRefundUpdateRequest; -import com.cool.store.request.xgj.XgjPaymentRequest; -import com.cool.store.request.xgj.XgjReimburseRequest; +import com.cool.store.request.close.refund.*; +import com.cool.store.request.wallet.GetBankRequest; +import com.cool.store.request.wallet.WalletBasicPageInfo; +import com.cool.store.request.xgj.*; import com.cool.store.service.ThirdXgjService; import com.cool.store.service.close.CloseStoreRefundService; import com.cool.store.service.close.CloseStoreService; import com.cool.store.service.dict.impl.DictService; +import com.cool.store.service.wallet.WalletApiService; import com.cool.store.utils.BeanUtil; +import com.cool.store.utils.CommonContextUtil; import com.cool.store.utils.CoolDateUtils; import com.cool.store.utils.RedisUtilPool; import com.cool.store.vo.close.refund.CloseStoreRefundDetailVO; @@ -35,15 +43,13 @@ import com.cool.store.vo.close.refund.CloseStoreRefundSimpleVO; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Objects; +import java.util.*; /** *

@@ -55,6 +61,7 @@ import java.util.Objects; */ @Service @RequiredArgsConstructor +@Slf4j public class CloseStoreRefundServiceImpl implements CloseStoreRefundService { private final CloseStoreRefundInfoDAO closeStoreRefundInfoDAO; private final CloseStoreInfoDAO closeStoreInfoDAO; @@ -65,6 +72,7 @@ public class CloseStoreRefundServiceImpl implements CloseStoreRefundService { private final ThirdXgjService thirdXgjService; private final EnterpriseUserDAO enterpriseUserDAO; private final DictService dictService; + private final WalletApiService walletApiService; @Override public Boolean addRefund(CloseStoreRefundAddRequest request) { @@ -99,6 +107,7 @@ public class CloseStoreRefundServiceImpl implements CloseStoreRefundService { CloseStoreRefundInfoDO refundInfoDO = BeanUtil.toBean(request, CloseStoreRefundInfoDO.class); refundInfoDO.setRefundNo(generateCloseStoreNo()); // 提交新管家 + dictService.fillDictField(request); XgjReimburseRequest xgjReimburseRequest = request.convertToXgjRequest(mkUser, closeStoreInfo.getCloseReason(), storeDO); String orderNo = thirdXgjService.reimburse(xgjReimburseRequest); refundInfoDO.setRefundOrderNo(orderNo); @@ -134,6 +143,9 @@ public class CloseStoreRefundServiceImpl implements CloseStoreRefundService { @Override public CloseStoreMkUserDTO getCurrentMkUser() { EnterpriseUserDO user = enterpriseUserDAO.getUserInfoById(CurrentUserHolder.getUserId()); + if (StringUtils.isBlank(user.getJobnumber())) { + return null; + } String mkUserStr = redisUtilPool.hashGet(RedisConstant.MK_USER_MAPPING, user.getJobnumber()); if (StringUtils.isNotBlank(mkUserStr)) { return JSONObject.parseObject(mkUserStr, CloseStoreMkUserDTO.class); @@ -172,9 +184,11 @@ public class CloseStoreRefundServiceImpl implements CloseStoreRefundService { } @Override - public List getRefundSimpleList(Long closeStoreId) { - List list = closeStoreRefundInfoDAO.getListByCloseStoreId(closeStoreId, null); - return BeanUtil.toList(list, CloseStoreRefundSimpleVO.class); + public PageInfo getRefundSimpleList(CloseStoreRefundQueryRequest request) { + PageHelper.startPage(request.getPageNum(), request.getPageSize()); + List list = closeStoreRefundInfoDAO.getListByCloseStoreId(request.getCloseStoreId(), request.getType()); + PageInfo page = new PageInfo<>(list); + return BeanUtil.toPage(page, CloseStoreRefundSimpleVO.class); } @Override @@ -197,25 +211,78 @@ public class CloseStoreRefundServiceImpl implements CloseStoreRefundService { } @Override + @Transactional public Boolean refreshRefundOrderStatus(CloseStoreRefundQueryRequest request) { List list = closeStoreRefundInfoDAO.getListByCloseStoreId(request.getCloseStoreId(), request.getType()); List updateList = new ArrayList<>(); - for (CloseStoreRefundInfoDO refundInfoDO : list) { - if (StringUtils.isNotBlank(refundInfoDO.getRefundOrderNo())) { - XgjPayResultDTO xgjPayResultDTO = thirdXgjService.queryOrderStatus(new XgjPaymentRequest(refundInfoDO.getRefundOrderNo())); - String xgjStatus = xgjPayResultDTO.getStatus(); - String refundStatus = XgjRefundPayStatusEnum.REJECTED.getStatus().equals(xgjStatus) ? RefundPayStatusEnum.APPROVING.getStatus() : xgjStatus; - if (!refundInfoDO.getRefundStatus().equals(refundStatus)) { - updateList.add(CloseStoreRefundInfoDO.builder().id(refundInfoDO.getId()).refundStatus(refundStatus).build()); - } + List completeList = new ArrayList<>(); + refreshRefund(list, updateList, completeList); + if (CollectionUtils.isNotEmpty(updateList)) { + closeStoreRefundInfoDAO.updateRefundStatusBatchById(updateList); + } + if (CollectionUtils.isNotEmpty(completeList)) { + for (CloseStoreRefundInfoDO refundInfoDO : completeList) { + completeRefund(refundInfoDO.getId(), refundInfoDO.getRefundTime()); } } - if (CollectionUtils.isNotEmpty(updateList)) { - closeStoreRefundInfoDAO.updateRefundStatusBatchById(list); - } return true; } + @Override + public void refreshRefund(List list, List updateList, List completeList) { + for (CloseStoreRefundInfoDO refundInfoDO : list) { + try { + if (com.cool.store.utils.poi.StringUtils.isNotBlank(refundInfoDO.getRefundOrderNo())) { + XgjPayResultDTO xgjPayResultDTO = thirdXgjService.queryOrderStatus(new XgjPaymentRequest(refundInfoDO.getRefundOrderNo())); + String xgjStatus = xgjPayResultDTO.getStatus(); + String refundStatus = XgjRefundPayStatusEnum.REJECTED.getStatus().equals(xgjStatus) ? RefundPayStatusEnum.APPROVING.getStatus() : xgjStatus; + if (!refundInfoDO.getRefundStatus().equals(refundStatus)) { + CloseStoreRefundInfoDO update = CloseStoreRefundInfoDO.builder() + .id(refundInfoDO.getId()) + .refundStatus(refundStatus) + .refundTime(CoolDateUtils.parseDate(xgjPayResultDTO.getPaySuccessTime(), "yyyy-MM-dd HH:mm:ss")) + .build(); + if (refundStatus.equals(RefundPayStatusEnum.PAY_SUCCESS.getStatus())) { + completeList.add(update); + } else { + updateList.add(update); + } + } + } + } catch (Exception e) { + log.info("退款状态查询失败, refundId:{}", refundInfoDO.getId()); + log.info("退款状态查询失败", e); + } + } + } + + @Override + public Boolean savePartner(CloseStorePartnerRequest request) { + XgjSavePartnerRequest xgjSavePartnerRequest = request.convertXgj(); + thirdXgjService.savePartner(xgjSavePartnerRequest); + return true; + } + + @Override + public XgjPartnerPageDTO queryPartnerPage(CloseStorePartnerQueryRequest request) { + XgjPartnerQueryRequest xgjPartnerQueryRequest = request.convertXgj(); + return thirdXgjService.queryPartnerPage(xgjPartnerQueryRequest); + } + + @Override + public List queryBranchBankList(XgjBankQueryRequest request) { + String profileName = CommonContextUtil.getProfileName(); + if (Arrays.asList("test", "ab", "local").contains(profileName)) { + GetBankRequest bankRequest = new GetBankRequest(); + bankRequest.setPage(new WalletBasicPageInfo(1, 5)); + bankRequest.setKeyword(request.getOpenBankName()); + BankListDTO bankList = walletApiService.getBankList(bankRequest); + return CollStreamUtil.toList(bankList.getPageData(), v -> new XgjBranchBankDTO(v.getBranchName(), v.getBranchCode())); + } else { + return thirdXgjService.queryBranchBankList(request); + } + } + /** * 生成退款申请单号 */ diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/close/impl/CloseStoreServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/close/impl/CloseStoreServiceImpl.java index 4b0d37a32..8b9a6dd87 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/close/impl/CloseStoreServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/close/impl/CloseStoreServiceImpl.java @@ -19,6 +19,7 @@ import com.cool.store.exception.ServiceException; import com.cool.store.mq.producer.SimpleMessageService; import com.cool.store.request.close.store.*; import com.cool.store.response.AuditInfoResponse; +import com.cool.store.service.SysRoleService; import com.cool.store.service.UserAuthMappingService; import com.cool.store.service.close.CloseStoreService; import com.cool.store.utils.BeanUtil; @@ -63,6 +64,7 @@ public class CloseStoreServiceImpl implements CloseStoreService { private final SimpleMessageService simpleMessageService; private final CloseStoreRefundInfoDAO closeStoreRefundInfoDAO; private final EnterpriseUserDAO enterpriseUserDAO; + private final SysRoleService sysRoleService; @Value("${mybatis.configuration.variables.enterpriseId}") private String enterpriseId; @@ -79,6 +81,9 @@ public class CloseStoreServiceImpl implements CloseStoreService { if (CommonConstants.CLOSED.equals(store.getStoreStatus())){ throw new ServiceException(ErrorCodeEnum.STORE_NOT_OPEN); } + if (!StoreStatusEnum.OPEN.getValue().equals(store.getStoreStatus())) { + throw new ServiceException(ErrorCodeEnum.CLOSE_STORE_ONLY_SUPPORT_OPEN); + } // 校验是否有正在进行的申请 if (closeStoreInfoDAO.existOngoingRecord(request.getStoreId())) { throw new ServiceException(ErrorCodeEnum.CLOSE_STORE_EXIST_ONGOING_RECORD); @@ -262,9 +267,11 @@ public class CloseStoreServiceImpl implements CloseStoreService { fillCloseStoreRecord(request, pageInfo.getList()); List closeStoreIds = CollStreamUtil.toList(pageInfo.getList(), CloseStoreInfoListVO::getCloseStoreId); Map completeCountMap = closeStoreStageInfoDAO.getCompleteCountMap(closeStoreIds); + Map auditIdMap = closeStoreAuditRecordDAO.getPendingAuditIdByCloseStoreIds(closeStoreIds); pageInfo.getList().forEach(v -> { v.setCompleteProcessNum(completeCountMap.getOrDefault(v.getCloseStoreId(), 0L).intValue()); v.setTotalProcessNum(CloseStoreSubStageEnum.values().length); + v.setAuditRecordId(auditIdMap.get(v.getCloseStoreId())); }); return pageInfo; } @@ -592,6 +599,9 @@ public class CloseStoreServiceImpl implements CloseStoreService { } // 是否有审批权限 String currentUserId = CurrentUserHolder.getUserId(); + if (sysRoleService.checkIsAdmin(currentUserId)) { + return; + } if (StringUtils.isBlank(auditRecordDO.getHandlerUserIds())) { throw new ServiceException(ErrorCodeEnum.NO_APPROVAL_AUTHORITY); } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/CloseStoreRefundController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/CloseStoreRefundController.java index 5c39e30da..c80308a87 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/CloseStoreRefundController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/CloseStoreRefundController.java @@ -5,7 +5,12 @@ import com.cool.store.request.close.refund.CloseStoreRefundAddRequest; import com.cool.store.request.close.refund.CloseStoreRefundQueryRequest; import com.cool.store.request.close.refund.CloseStoreRefundSkipRequest; import com.cool.store.request.close.refund.CloseStoreRefundUpdateRequest; +import com.cool.store.dto.xgj.XgjBranchBankDTO; +import com.cool.store.dto.xgj.XgjPartnerPageDTO; +import com.cool.store.request.close.refund.*; +import com.cool.store.request.xgj.XgjBankQueryRequest; import com.cool.store.response.ResponseResult; +import com.cool.store.service.ThirdXgjService; import com.cool.store.service.close.CloseStoreRefundService; import com.cool.store.vo.close.refund.CloseStoreRefundDetailVO; import com.cool.store.vo.close.refund.CloseStoreRefundListVO; @@ -19,6 +24,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import javax.validation.constraints.NotNull; +import java.util.List; /** *

@@ -35,6 +41,7 @@ import javax.validation.constraints.NotNull; @Validated public class CloseStoreRefundController { private final CloseStoreRefundService closeStoreRefundService; + private final ThirdXgjService thirdXgjService; @ApiOperation("获取当前用户的每刻用户信息") @GetMapping("/getCurrentMkUser") @@ -79,4 +86,22 @@ public class CloseStoreRefundController { public ResponseResult refresh(@RequestBody @Validated CloseStoreRefundQueryRequest request) { return ResponseResult.success(closeStoreRefundService.refreshRefundOrderStatus(request)); } + + @ApiOperation("同步供应商") + @PostMapping("/savePartner") + public ResponseResult savePartner(@RequestBody @Validated CloseStorePartnerRequest request) { + return ResponseResult.success(closeStoreRefundService.savePartner(request)); + } + + @ApiOperation("供应商列表") + @PostMapping("/queryPartnerPage") + public ResponseResult queryPartnerPage(@RequestBody CloseStorePartnerQueryRequest request) { + return ResponseResult.success(closeStoreRefundService.queryPartnerPage(request)); + } + + @ApiOperation("支行列表") + @PostMapping("/queryBranchBankList") + public ResponseResult> queryBranchBankList(@RequestBody XgjBankQueryRequest request) { + return ResponseResult.success(closeStoreRefundService.queryBranchBankList(request)); + } } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniCloseStoreController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniCloseStoreController.java index 8e2768be1..70e7609d0 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniCloseStoreController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniCloseStoreController.java @@ -75,4 +75,11 @@ public class MiniCloseStoreController { public ResponseResult cancelCloseStore(@RequestBody @Valid CloseStoreCancelRequest request) { return ResponseResult.success(closeStoreService.cancelApply(request.getCloseStoreId())); } + + @ApiOperation("根据闭店申请id获取闭店申请简单信息") + @GetMapping("/simple") + @ApiImplicitParam(name = "closeStoreId", value = "闭店申请id", required = true, dataType = "Long", paramType = "query") + public ResponseResult getCloseStoreSimple(@NotNull(message = "闭店申请id不能为空") Long closeStoreId) { + return ResponseResult.success(closeStoreService.getCloseStoreSimpleInfo(closeStoreId)); + } } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniCloseStoreRefundController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniCloseStoreRefundController.java index a1b82ab6b..d82722405 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniCloseStoreRefundController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniCloseStoreRefundController.java @@ -1,8 +1,10 @@ package com.cool.store.controller.webc; +import com.cool.store.request.close.refund.CloseStoreRefundQueryRequest; import com.cool.store.response.ResponseResult; import com.cool.store.service.close.CloseStoreRefundService; import com.cool.store.vo.close.refund.CloseStoreRefundSimpleVO; +import com.github.pagehelper.PageInfo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; @@ -32,7 +34,7 @@ public class MiniCloseStoreRefundController { @ApiOperation("退款信息列表") @GetMapping("/list") @ApiImplicitParam(name = "closeStoreId", value = "闭店申请id", required = true, dataType = "Long") - public ResponseResult> list(@NotNull(message = "闭店申请id不能为空") Long closeStoreId) { - return ResponseResult.success(closeStoreRefundService.getRefundSimpleList(closeStoreId)); + public ResponseResult> list(@Validated CloseStoreRefundQueryRequest request) { + return ResponseResult.success(closeStoreRefundService.getRefundSimpleList(request)); } } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/job/XxlJobHandler.java b/coolstore-partner-web/src/main/java/com/cool/store/job/XxlJobHandler.java index ee6ebb11b..67d6034f5 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/job/XxlJobHandler.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/job/XxlJobHandler.java @@ -588,30 +588,7 @@ public class XxlJobHandler { break; } hasNext = list.size() >= pageSize; - for (CloseStoreRefundInfoDO refundInfoDO : list) { - try { - if (StringUtils.isNotBlank(refundInfoDO.getRefundOrderNo())) { - XgjPayResultDTO xgjPayResultDTO = thirdXgjService.queryOrderStatus(new XgjPaymentRequest(refundInfoDO.getRefundOrderNo())); - String xgjStatus = xgjPayResultDTO.getStatus(); - String refundStatus = XgjRefundPayStatusEnum.REJECTED.getStatus().equals(xgjStatus) ? RefundPayStatusEnum.APPROVING.getStatus() : xgjStatus; - if (!refundInfoDO.getRefundStatus().equals(refundStatus)) { - CloseStoreRefundInfoDO update = CloseStoreRefundInfoDO.builder() - .id(refundInfoDO.getId()) - .refundStatus(refundStatus) - .refundTime(CoolDateUtils.parseDate(xgjPayResultDTO.getPaySuccessTime(), "yyyy-MM-dd HH:mm:ss")) - .build(); - if (refundStatus.equals(RefundPayStatusEnum.PAY_SUCCESS.getStatus())) { - completeList.add(update); - } else { - updateList.add(update); - } - } - } - } catch (Exception e) { - log.info("退款状态查询失败, refundId:{}", refundInfoDO.getId()); - log.info("退款状态查询失败", e); - } - } + closeStoreRefundService.refreshRefund(list, updateList, completeList); pageNum++; } if (CollectionUtils.isNotEmpty(updateList)) {