Merge #47 into master from cc_20250922_closeStore_w

闭店

* 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: 王非凡 <accounts_67eba0c5fee9c49c80c8e2b4@mail.teambition.com>
Merged-by: 正新 <accounts_6964c7bcd2a2c377c5bbd01b@mail.teambition.com>

CR-link: https://codeup.aliyun.com/692ea314dec569489f6f167c/hangzhou/java/custom_zxjp/change/47
This commit is contained in:
王非凡
2026-03-03 10:48:32 +00:00
committed by 正新
parent 0da8efbeaa
commit f006fea2c2
25 changed files with 394 additions and 82 deletions

View File

@@ -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<CloseStoreRefundSimpleVO> getRefundSimpleList(Long closeStoreId);
PageInfo<CloseStoreRefundSimpleVO> getRefundSimpleList(CloseStoreRefundQueryRequest request);
/**
* 跳过流程
@@ -79,4 +84,30 @@ public interface CloseStoreRefundService {
* @return 是否成功
*/
Boolean refreshRefundOrderStatus(CloseStoreRefundQueryRequest request);
/**
* 获取订单状态
*/
void refreshRefund(List<CloseStoreRefundInfoDO> list, List<CloseStoreRefundInfoDO> updateList, List<CloseStoreRefundInfoDO> completeList);
/**
* 同步供应商信息
* @param request 闭店退款供应商同步Request
* @return 是否成功
*/
Boolean savePartner(CloseStorePartnerRequest request);
/**
* 供应商查询
* @param request 闭店退款供应商查询Request
* @return 新管家分页DTO
*/
XgjPartnerPageDTO queryPartnerPage(CloseStorePartnerQueryRequest request);
/**
* 银行支行
* @param request 支行查询Request
* @return 支行列表
*/
List<XgjBranchBankDTO> queryBranchBankList(XgjBankQueryRequest request);
}

View File

@@ -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<CloseStoreFileInfoDO> fileList = closeStoreFileInfoDAO.getByCloseStoreId(closeStoreId);
List<CloseStoreFileInfoVO> 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

View File

@@ -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.*;
/**
* <p>
@@ -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<CloseStoreRefundSimpleVO> getRefundSimpleList(Long closeStoreId) {
List<CloseStoreRefundInfoDO> list = closeStoreRefundInfoDAO.getListByCloseStoreId(closeStoreId, null);
return BeanUtil.toList(list, CloseStoreRefundSimpleVO.class);
public PageInfo<CloseStoreRefundSimpleVO> getRefundSimpleList(CloseStoreRefundQueryRequest request) {
PageHelper.startPage(request.getPageNum(), request.getPageSize());
List<CloseStoreRefundInfoDO> list = closeStoreRefundInfoDAO.getListByCloseStoreId(request.getCloseStoreId(), request.getType());
PageInfo<CloseStoreRefundInfoDO> 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<CloseStoreRefundInfoDO> list = closeStoreRefundInfoDAO.getListByCloseStoreId(request.getCloseStoreId(), request.getType());
List<CloseStoreRefundInfoDO> 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<CloseStoreRefundInfoDO> 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<CloseStoreRefundInfoDO> list, List<CloseStoreRefundInfoDO> updateList, List<CloseStoreRefundInfoDO> 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<XgjBranchBankDTO> 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);
}
}
/**
* 生成退款申请单号
*/

View File

@@ -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<Long> closeStoreIds = CollStreamUtil.toList(pageInfo.getList(), CloseStoreInfoListVO::getCloseStoreId);
Map<Long, Long> completeCountMap = closeStoreStageInfoDAO.getCompleteCountMap(closeStoreIds);
Map<Long, Long> 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);
}