Merge #149 into master from cc_20260408_close_up_v2

fix:歇业管理优化

* cc_20260408_close_up_v2: (37 commits squashed)

  - fix:歇业管理(部分)

  - fix:歇业管理(部分)

  - fix:审批逻辑修改;拒绝审批实现

  - fix:恢复开业申请及审批

  - fix:主流程补充

  - fix:主流程补充

  - fix:字段补充及逻辑修改

  - fix:字段补充

  - fix

  - fix:平台处理新增字段

  - fix

  - Merge remote-tracking branch 'origin/cc_20260408_close_up' into cc_20260408_close_up

  - fix:歇业营业发送短信

  - fix:排序

  - fix:详情接口新增加盟商手机号字段;申请单日期和已有申请单存在交集时申请失败

  - fix:申请单详情接口新增品牌字段

  - fix:新增列表筛选条件;审批单状态校验

  - Merge branch 'master' into cc_20260408_close_up
    
    # Conflicts:
    #	coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java

  - fix:歇业对接三方平台

  - fix:歇业对接三方平台

  - fix:日志

  - fix:歇业后自动恢复营业;抖音自动歇业三方对接

  - fix:歇业后自动恢复营业;抖音自动歇业三方对接

  - fix:火码平台账号处理状态初始化为已处理

  - Merge remote-tracking branch 'origin/cc_20260408_close_up' into cc_20260408_close_up

  - fix:歇业管理逻辑修改

  - Merge branch 'cc_20260511_close_up_modify' into cc_20260408_close_up
    
    # Conflicts:
    #	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-common/src/main/java/com/cool/store/enums/closeup/CloseUpPlatformEnum.java
    #	coolstore-partner-dao/src/main/java/com/cool/store/dao/closeup/CloseUpPlatformDAO.java
    #	coolstore-partner-dao/src/main/java/com/cool/store/mapper/StoreMapper.java
    #	coolstore-partner-dao/src/main/java/com/cool/store/mapper/closeup/CloseUpPlatformMapper.java
    #	coolstore-partner-dao/src/main/resources/mapper/StoreMapper.xml
    #	coolstore-partner-dao/src/main/resources/mapper/closeup/CloseUpApplyFormMapper.xml
    #	coolstore-partner-dao/src/main/resources/mapper/closeup/CloseUpPlatformMapper.xml
    #	coolstore-partner-model/src/main/java/com/cool/store/entity/closeup/CloseUpApplyFormDO.java
    #	coolstore-partner-model/src/main/java/com/cool/store/entity/closeup/CloseUpPlatformDO.java
    #	coolstore-partner-service/src/main/java/com/cool/store/mq/consumer/ConsumerClient.java
    #	coolstore-partner-service/src/main/java/com/cool/store/service/closeup/CloseUpService.java
    #	coolstore-partner-service/src/main/java/com/cool/store/service/closeup/impl/CloseUpServiceImpl.java
    #	coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCTestController.java
    #	coolstore-partner-web/src/main/java/com/cool/store/job/XxlJobHandler.java
    #	coolstore-partner-web/src/main/resources/application-ab.properties
    #	coolstore-partner-web/src/main/resources/application-local.properties
    #	coolstore-partner-web/src/main/resources/application-online.properties
    #	coolstore-partner-web/src/main/resources/application-test.properties

  - fix:合并冲突

  - Merge branch 'master' into cc_20260408_close_up

  - fix:火码歇业时机修改

  - fix

  - fix:平台关闭开启处理自动发起三方调用

  - Merge branch 'master' into cc_20260408_close_up_v2
    
    # Conflicts:
    #	coolstore-partner-service/src/main/java/com/cool/store/service/closeup/impl/CloseUpServiceImpl.java
    #	coolstore-partner-web/src/main/java/com/cool/store/job/XxlJobHandler.java

  - fix:平台关闭开启时调用三方平台接口

  - fix:修复自动关闭三方平台状态更新失败的问题

  - Merge branch 'refs/heads/master' into cc_20260408_close_up_v2

  - fix:修复三方门店歇业失败时POS待办不更新的问题

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/149
This commit is contained in:
王非凡
2026-05-26 09:21:02 +00:00
committed by 正新
parent ce882e5d87
commit 567ff3536f
11 changed files with 163 additions and 43 deletions

View File

@@ -495,6 +495,9 @@ public enum ErrorCodeEnum {
CLOSE_UP_CLOSED_AUDIT_NOT_PASS(1840008, "歇业申请未通过", null),
CLOSE_UP_EXIST_OPEN_APPLY(1840009, "该歇业申请单已存在开业申请", null),
CLOSE_UP_APPROVED(1840010, "该申请单已审批", null),
CLOSE_UP_PLATFORM_STATUS_UPDATE_ERROR(1840011, "平台状态更新失败:{0}", null),
CLOSE_UP_PLATFORM_DATE_NOT_EXIST(1840012, "平台数据不存在", null),
CLOSE_UP_PLATFORM_STATUS_MODIFYING(1840013, "平台状态正在修改中", null),
BONUS_EXIST_OVERLAP_RULE(1850000, "门店该有效期范围内存在相同类型的启用规则", null),
BONUS_RULE_NOT_EXIST(1850001, "不存在该奖金发放规则", null),

View File

@@ -44,7 +44,7 @@ public class CloseUpPlatformDAO {
return list;
}
public List<CloseUpPlatformDO> getList(Long applyId, Integer status, Integer type, Boolean hasTaskId) {
public List<CloseUpPlatformDO> getList(Long applyId, Integer status, Integer type, Boolean hasTaskId, Boolean needQueryTask) {
Example example = new Example(CloseUpPlatformDO.class);
Example.Criteria criteria = example.createCriteria()
.andEqualTo("applyId", applyId);
@@ -57,13 +57,16 @@ public class CloseUpPlatformDAO {
if (Boolean.TRUE.equals(hasTaskId)) {
criteria.andIsNotNull("taskId").andNotEqualTo("taskId", "");
}
if (Boolean.TRUE.equals(needQueryTask)) {
criteria.andNotEqualTo("taskStatus", 0);
}
return closeUpPlatformMapper.selectByExample(example);
}
/**
* 更新状态
*/
public void updateStatusByIds(List<Long> ids, Integer status) {
public void updateStatusByIds(List<Long> ids, Integer status, Integer taskStatus) {
if (CollectionUtils.isEmpty(ids)) {
return;
}
@@ -71,6 +74,9 @@ public class CloseUpPlatformDAO {
example.createCriteria()
.andIn("id", ids);
CloseUpPlatformDO update = CloseUpPlatformDO.builder().status(status).build();
if (Objects.nonNull(taskStatus)) {
update.setTaskStatus(taskStatus);
}
closeUpPlatformMapper.updateByExampleSelective(update, example);
}
@@ -81,6 +87,13 @@ public class CloseUpPlatformDAO {
closeUpPlatformMapper.updateStatusAndTaskId(list);
}
public void updateStatusAndTaskIdExcludeTaskStatus(List<CloseUpPlatformDO> list) {
if (CollectionUtils.isEmpty(list)) {
return;
}
closeUpPlatformMapper.updateStatusAndTaskIdExcludeTaskStatus(list);
}
/**
* 根据申请单id删除
*/
@@ -94,4 +107,8 @@ public class CloseUpPlatformDAO {
public List<Long> selectTodoApplyIds(Integer applyType, String storeKeyword) {
return closeUpPlatformMapper.selectTodoApplyIds(applyType, storeKeyword);
}
public CloseUpPlatformDO getById(Long id) {
return closeUpPlatformMapper.selectByPrimaryKey(id);
}
}

View File

@@ -16,4 +16,6 @@ public interface CloseUpPlatformMapper extends Mapper<CloseUpPlatformDO> {
List<Long> selectTodoApplyIds(@Param("applyType") Integer applyType, @Param("storeKeyword") String storeKeyword);
void updateStatusAndTaskId(@Param("list") List<CloseUpPlatformDO> list);
void updateStatusAndTaskIdExcludeTaskStatus(@Param("list") List<CloseUpPlatformDO> list);
}

View File

@@ -54,10 +54,33 @@
<foreach collection="list" item="item">
WHEN #{item.id} THEN #{item.taskId}
</foreach>
END,
task_status = CASE id
<foreach collection="list" item="item">
WHEN #{item.id} THEN #{item.taskStatus}
</foreach>
END
WHERE id IN
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item.id}
</foreach>
</update>
<update id="updateStatusAndTaskIdExcludeTaskStatus">
UPDATE zxjp_close_up_platform
SET status = CASE id
<foreach collection="list" item="item">
WHEN #{item.id} THEN #{item.status}
</foreach>
END,
task_id = CASE id
<foreach collection="list" item="item">
WHEN #{item.id} THEN #{item.taskId}
</foreach>
END
WHERE id IN
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item.id}
</foreach>
</update>
</mapper>

View File

@@ -81,4 +81,10 @@ public class CloseUpPlatformDO {
*/
@Column(name = "task_id")
private String taskId;
/**
* 任务查询状态0无需处理 1改成待处理 2改成已处理
*/
@Column(name = "task_status")
private Integer taskStatus;
}

View File

@@ -0,0 +1,22 @@
package com.cool.store.vo.closeup;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* <p>
* 歇业平台关闭开启状态VO
* </p>
*
* @author wangff
* @since 2026/5/15
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CloseUpPlatformStatusVO {
@ApiModelProperty("修改状态1修改中 2成功")
private Integer status;
}

View File

@@ -5,6 +5,7 @@ import com.cool.store.request.closeup.*;
import com.cool.store.response.AuditInfoResponse;
import com.cool.store.vo.closeup.CloseUpApplyFormSimpleVO;
import com.cool.store.vo.closeup.CloseUpApplyFormVO;
import com.cool.store.vo.closeup.CloseUpPlatformStatusVO;
import com.cool.store.vo.closeup.CloseUpPlatformVO;
import com.github.pagehelper.PageInfo;
@@ -84,7 +85,7 @@ public interface CloseUpService {
/**
* 平台关闭开启处理
*/
Boolean handlePlatform(CloseUpPlatformHandleRequest request);
CloseUpPlatformStatusVO handlePlatform(CloseUpPlatformHandleRequest request);
/**
* 根据任务id查询平台状态

View File

@@ -28,13 +28,13 @@ import com.cool.store.request.closeup.*;
import com.cool.store.response.AuditInfoResponse;
import com.cool.store.service.UserAuthMappingService;
import com.cool.store.service.closeup.CloseUpService;
import com.cool.store.service.closeup.PlatformAutoStrategy;
import com.cool.store.service.closeup.PlatformHttpClientRest;
import com.cool.store.service.sms.AliyunSmsService;
import com.cool.store.utils.BeanUtil;
import com.cool.store.vo.PartnerUserInfoVO;
import com.cool.store.vo.closeup.CloseUpApplyFormSimpleVO;
import com.cool.store.vo.closeup.CloseUpApplyFormVO;
import com.cool.store.vo.closeup.CloseUpPlatformStatusVO;
import com.cool.store.vo.closeup.CloseUpPlatformVO;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
@@ -402,7 +402,7 @@ public class CloseUpServiceImpl implements CloseUpService {
@Override
public List<CloseUpPlatformVO> getPlatformListByApplyId(Long applyId) {
List<CloseUpPlatformDO> list = platformDAO.getList(applyId, null, null, null);
List<CloseUpPlatformDO> list = platformDAO.getList(applyId, null, null, null, null);
return BeanUtil.toList(list, CloseUpPlatformVO.class);
}
@@ -494,37 +494,37 @@ public class CloseUpServiceImpl implements CloseUpService {
* 自动开启关闭各平台
*/
public void autoPlatform(String storeId, Integer applyType, List<CloseUpPlatformDO> list) {
try {
StoreDO storeDO = storeDao.getByStoreId(storeId);
if (Objects.isNull(storeDO)) {
return;
}
int platformCode = 0;
List<CloseUpPlatformDO> unClosePlatformList = list.stream()
.filter(platformDO -> platformDO.getStatus().equals(0)
&& platformDO.getType().equals(1)
&& !(new Date()).before(platformDO.getTaskStartDate()))
.collect(Collectors.toList());
if (CollectionUtils.isEmpty(unClosePlatformList)) {
log.info("未处理的自动关闭平台为空");
return;
}
StoreDO storeDO = storeDao.getByStoreId(storeId);
if (Objects.isNull(storeDO)) {
return;
}
int platformCode = 0;
List<CloseUpPlatformDO> unClosePlatformList = list.stream()
.filter(platformDO -> platformDO.getStatus().equals(0)
&& platformDO.getType().equals(1)
&& !(new Date()).before(platformDO.getTaskStartDate()))
.collect(Collectors.toList());
if (CollectionUtils.isEmpty(unClosePlatformList)) {
log.info("未处理的自动关闭平台为空");
return;
}
List<CloseUpPlatformDO> updatePlatformList = new ArrayList<>();
// 歇业平台
for (CloseUpPlatformDO v : unClosePlatformList) {
Integer ongoingPlatformCode = CloseUpPlatformEnum.getPlatformCodeByCode(v.getCode());
if (Objects.nonNull(ongoingPlatformCode)) {
platformCode = platformCode | ongoingPlatformCode;
} else {
CloseUpPlatformDO updatePlatform = CloseUpPlatformDO.builder().id(v.getId()).status(1).build();
updatePlatformList.add(updatePlatform);
}
}
if (platformCode == 0) {
log.info("未处理的自动关闭平台为空platformCode=0");
return;
List<CloseUpPlatformDO> updatePlatformList = new ArrayList<>();
// 歇业平台
for (CloseUpPlatformDO v : unClosePlatformList) {
Integer ongoingPlatformCode = CloseUpPlatformEnum.getPlatformCodeByCode(v.getCode());
if (Objects.nonNull(ongoingPlatformCode)) {
platformCode = platformCode | ongoingPlatformCode;
} else {
CloseUpPlatformDO updatePlatform = CloseUpPlatformDO.builder().id(v.getId()).status(1).build();
updatePlatformList.add(updatePlatform);
}
}
if (platformCode == 0) {
log.info("未处理的自动关闭平台为空platformCode=0");
return;
}
try {
PlatformStatusDTO platformStatusDTO = platformHttpClientRest.platformCloseUp(storeDO.getStoreNum(), String.valueOf(platformCode), applyType);
if (Objects.nonNull(platformStatusDTO) && CollectionUtils.isNotEmpty(platformStatusDTO.getPlatformResults())) {
Map<String, PlatformStatusDTO.PlatformUpdateResult> map = CollStreamUtil.toMap(platformStatusDTO.getPlatformResults(), PlatformStatusDTO.PlatformUpdateResult::getPlatformCode, v -> v);
@@ -546,10 +546,10 @@ public class CloseUpServiceImpl implements CloseUpService {
}
}
}
platformDAO.updateStatusAndTaskId(updatePlatformList);
} catch (Exception e) {
log.info("平台自动歇业/营业失败", e);
}
platformDAO.updateStatusAndTaskIdExcludeTaskStatus(updatePlatformList);
}
/**
@@ -564,9 +564,49 @@ public class CloseUpServiceImpl implements CloseUpService {
}
@Override
public Boolean handlePlatform(CloseUpPlatformHandleRequest request) {
platformDAO.updateStatusByIds(Collections.singletonList(request.getId()), request.getStatus());
return true;
public CloseUpPlatformStatusVO handlePlatform(CloseUpPlatformHandleRequest request) {
CloseUpPlatformDO platformDO = platformDAO.getById(request.getId());
if (Objects.isNull(platformDO)) {
throw new ServiceException(ErrorCodeEnum.CLOSE_UP_PLATFORM_DATE_NOT_EXIST);
}
if (!platformDO.getTaskStatus().equals(0)) {
throw new ServiceException(ErrorCodeEnum.CLOSE_UP_PLATFORM_STATUS_MODIFYING);
}
CloseUpApplyFormDO formDO = applyFormDAO.getById(platformDO.getApplyId());
if (Objects.isNull(formDO)) {
throw new ServiceException(ErrorCodeEnum.CLOSE_UP_FORM_NOT_EXIST);
}
StoreDO storeDO = storeDao.getEffectiveByStoreId(formDO.getStoreId());
if (Objects.isNull(storeDO)) {
throw new ServiceException(ErrorCodeEnum.STORE_NOT_FIND);
}
Integer platformCode = CloseUpPlatformEnum.getPlatformCodeByCode(platformDO.getCode());
if (platformDO.getType().equals(1) && Objects.nonNull(platformCode)) {
PlatformStatusDTO platformStatusDTO = platformHttpClientRest.platformCloseUp(storeDO.getStoreNum(), String.valueOf(platformCode), request.getStatus() ^ 1);
if (Objects.nonNull(platformStatusDTO)) {
if (CollectionUtils.isNotEmpty(platformStatusDTO.getPlatformResults())) {
PlatformStatusDTO.PlatformUpdateResult result = platformStatusDTO.getPlatformResults().get(0);
if (Boolean.TRUE.equals(result.getSuccess())) {
boolean isDy = result.getPlatformCode().equals("8");
CloseUpPlatformDO updatePlatform = CloseUpPlatformDO.builder()
.id(platformDO.getId())
.status(isDy ? platformDO.getStatus() : request.getStatus())
.taskId(isDy ? result.getTaskId() : null)
.taskStatus(isDy ? request.getStatus() + 1 : 0)
.build();
platformDAO.updateStatusAndTaskId(Collections.singletonList(updatePlatform));
return new CloseUpPlatformStatusVO(isDy ? 1 : 2);
} else {
throw new ServiceException(ErrorCodeEnum.CLOSE_UP_PLATFORM_STATUS_UPDATE_ERROR, result.getMessage());
}
}
}
throw new ServiceException(ErrorCodeEnum.CLOSE_UP_PLATFORM_STATUS_UPDATE_ERROR, "系统异常");
} else {
// 手动关闭直接修改状态
platformDAO.updateStatusByIds(Collections.singletonList(request.getId()), request.getStatus(), 0);
return new CloseUpPlatformStatusVO(2);
}
}
@Override
@@ -591,7 +631,7 @@ public class CloseUpServiceImpl implements CloseUpService {
}
PlatformAsyncStatusDTO result = platformHttpClientRest.queryPlatformStatusByTaskId(storeDO.getStoreNum(), String.valueOf(platformCode), Long.valueOf(platformDO.getTaskId()));
if (Objects.nonNull(result) && result.getStatus().equals("50")) {
platformDAO.updateStatusByIds(Collections.singletonList(platformDO.getId()), 1);
platformDAO.updateStatusByIds(Collections.singletonList(platformDO.getId()), platformDO.getTaskStatus() - 1, 0);
}
}
@@ -667,7 +707,7 @@ public class CloseUpServiceImpl implements CloseUpService {
}
if (autoPlatform) {
// 自动开关平台
List<CloseUpPlatformDO> platformList = platformDAO.getList(formDO.getId(), 0, 1, null);
List<CloseUpPlatformDO> platformList = platformDAO.getList(formDO.getId(), 0, 1, null, null);
autoPlatform(storeId, applyType, platformList);
}
if (StringUtils.isNotBlank(storeDO.getTelephone())) {

View File

@@ -9,6 +9,7 @@ import com.cool.store.response.ResponseResult;
import com.cool.store.service.closeup.CloseUpService;
import com.cool.store.vo.closeup.CloseUpApplyFormSimpleVO;
import com.cool.store.vo.closeup.CloseUpApplyFormVO;
import com.cool.store.vo.closeup.CloseUpPlatformStatusVO;
import com.cool.store.vo.closeup.CloseUpPlatformVO;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
@@ -85,7 +86,7 @@ public class CloseUpController {
@ApiOperation("平台关闭开启处理")
@PostMapping("/handlePlatform")
public ResponseResult<Boolean> handlePlatform(@RequestBody @Validated CloseUpPlatformHandleRequest request) {
public ResponseResult<CloseUpPlatformStatusVO> handlePlatform(@RequestBody @Validated CloseUpPlatformHandleRequest request) {
return ResponseResult.success(closeUpService.handlePlatform(request));
}
}

View File

@@ -181,6 +181,11 @@ public class PCTestController {
return ResponseResult.success(true);
}
@PostMapping("/storeStatusAndPlatformUpdate")
public void storeStatusAndPlatformUpdate(Long applyId) {
closeUpService.storeStatusAndPlatformUpdate(applyId);
}
@PostMapping("/closeUpAutoOpen")
public void closeUpAutoOpen(Long applyId) {
closeUpService.closeUpAutoOpen(applyId);
@@ -194,7 +199,7 @@ public class PCTestController {
@PostMapping("/autoPlatform")
public void autoPlatform(Long applyId) {
CloseUpApplyFormDO formDO = closeUpApplyFormDAO.getById(applyId);
List<CloseUpPlatformDO> platformList = closeUpPlatformDAO.getList(applyId, 0, 1, null);
List<CloseUpPlatformDO> platformList = closeUpPlatformDAO.getList(applyId, 0, 1, null, null);
closeUpService.autoPlatform(formDO.getStoreId(), formDO.getType(), platformList);
}

View File

@@ -806,7 +806,7 @@ public class XxlJobHandler {
int pageSize = CommonConstants.BATCH_SIZE;
while (hasNext) {
PageHelper.startPage(pageNum, pageSize);
List<CloseUpPlatformDO> list = closeUpPlatformDAO.getList(null, 0, null, true);
List<CloseUpPlatformDO> list = closeUpPlatformDAO.getList(null, null, null, true, true);
hasNext = list.size() >= pageSize;
if (CollectionUtils.isEmpty(list)) {
break;