From 13c44053c269e6054391417a9384f3517564de87 Mon Sep 17 00:00:00 2001 From: wangff Date: Thu, 13 Nov 2025 10:40:30 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cool/store/utils/CoolDateUtils.java | 5 ++++ .../java/com/cool/store/dao/StoreDao.java | 2 +- .../com/cool/store/dao/tp/TpApplyFormDAO.java | 9 ++++-- .../cool/store/dao/tp/TpAuditRecordDAO.java | 9 ++++-- .../resources/mapper/tp/TpApplyFormMapper.xml | 2 ++ .../cool/store/entity/tp/TpApplyFormDO.java | 2 +- .../store/request/tp/TpApplyQueryRequest.java | 2 +- .../cool/store/request/tp/TpApplyRequest.java | 4 +-- .../cool/store/vo/tp/TpApplyListBaseVO.java | 3 ++ .../store/vo/tp/TpPenaltyApplyDetailVO.java | 4 +-- .../store/vo/tp/TpPenaltyApplyListVO.java | 4 +-- .../vo/tp/mini/MiniTpPenaltyApplyVO.java | 2 +- .../store/service/dict/impl/DictService.java | 13 +++++++-- .../service/tp/impl/TpApplyServiceImpl.java | 28 +++++++++++-------- .../webc/MiniTpApplyController.java | 2 +- 15 files changed, 61 insertions(+), 30 deletions(-) diff --git a/coolstore-partner-common/src/main/java/com/cool/store/utils/CoolDateUtils.java b/coolstore-partner-common/src/main/java/com/cool/store/utils/CoolDateUtils.java index 0507da90c..e66faa121 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/utils/CoolDateUtils.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/utils/CoolDateUtils.java @@ -184,4 +184,9 @@ public class CoolDateUtils { Duration duration = Duration.between(start, end); return duration.toMinutes(); } + + public static Date localDate2Date(LocalDate localDate) { + ZonedDateTime zonedDateTime = localDate.atStartOfDay(ZoneId.systemDefault()); + return Date.from(zonedDateTime.toInstant()); + } } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/StoreDao.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/StoreDao.java index 6e64fe69c..91b95e073 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/StoreDao.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/StoreDao.java @@ -131,7 +131,7 @@ public class StoreDao { * @return 门店id->门店 */ public Map getStoreMapByStoreIds(List storeIds) { - if (CollectionUtils.isNotEmpty(storeIds)) { + if (CollectionUtils.isEmpty(storeIds)) { return Collections.emptyMap(); } List storeList = storeMapper.getStoreByStoreIds(storeIds); diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/tp/TpApplyFormDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/tp/TpApplyFormDAO.java index 32d681afa..eb44a0f5e 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/tp/TpApplyFormDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/tp/TpApplyFormDAO.java @@ -101,8 +101,9 @@ public class TpApplyFormDAO { example.createCriteria() .andEqualTo("storeId", storeId) .andEqualTo("ruleId", ruleId) - .andIn("status", Arrays.asList(TpFormStatusEnum.PASS.getStatus(), TpFormStatusEnum.EFFECTIVE.getStatus())) - .andNotEqualTo("type", TpFormTypeEnum.REWARD.getType()); + .andNotEqualTo("status", TpFormStatusEnum.CANCEL.getStatus()) + .andIn("type", Arrays.asList(TpFormTypeEnum.WARNING.getType(), TpFormTypeEnum.PENALTY.getType())) + .andEqualTo("deleted", 0); return tpApplyFormMapper.selectCountByExample(example); } @@ -118,7 +119,9 @@ public class TpApplyFormDAO { Example.Criteria criteria = example.createCriteria() .andEqualTo("storeId", storeId) .andEqualTo("ruleId", ruleId) - .andEqualTo("status", TpFormStatusEnum.PENDING.getStatus()); + .andEqualTo("status", TpFormStatusEnum.PENDING.getStatus()) + .andEqualTo("isDraft", 0) + .andEqualTo("deleted", 0); if (isReward) { criteria.andEqualTo("type", TpFormTypeEnum.REWARD.getType()); } else { diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/tp/TpAuditRecordDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/tp/TpAuditRecordDAO.java index 85d6a8b7b..0fd9c3464 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/tp/TpAuditRecordDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/tp/TpAuditRecordDAO.java @@ -77,9 +77,12 @@ public class TpAuditRecordDAO { * @param userId 申请人id * @param userName 申请人名称 */ - public void addRecord(Long applyId, Integer applyType, String userId, String userName) { - addSubmitRecord(applyId, applyType, userId, userName); - addApproveRecord(applyId, applyType); + public void firstAddRecord(Long applyId, Integer applyType, String userId, String userName) { + TpAuditRecordDO auditRecordDO = getPendingRecordByApplyId(applyId, applyType); + if (Objects.isNull(auditRecordDO)) { + addSubmitRecord(applyId, applyType, userId, userName); + addApproveRecord(applyId, applyType); + } } /** diff --git a/coolstore-partner-dao/src/main/resources/mapper/tp/TpApplyFormMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/tp/TpApplyFormMapper.xml index acb5380f6..30da056b3 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/tp/TpApplyFormMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/tp/TpApplyFormMapper.xml @@ -52,6 +52,7 @@ INNER JOIN store_${enterpriseId} b ON a.store_id = b.store_id AND b.is_delete = 'effective' + deleted = 0 AND a.apply_no LIKE CONCAT('%', #{applyNo}, '%') @@ -90,6 +91,7 @@ AND b.is_draft = #{isDraft} + ORDER BY a.create_time DESC \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/tp/TpApplyFormDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/tp/TpApplyFormDO.java index 2e244dd1e..81e1f83b7 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/tp/TpApplyFormDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/tp/TpApplyFormDO.java @@ -103,7 +103,7 @@ public class TpApplyFormDO { * 申请复议截止日期 */ @Column(name = "appeal_end_date") - private LocalDate appealEndDate; + private Date appealEndDate; /** * 状态 diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/tp/TpApplyQueryRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/tp/TpApplyQueryRequest.java index 627f1e26b..77b2062e0 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/tp/TpApplyQueryRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/tp/TpApplyQueryRequest.java @@ -58,7 +58,7 @@ public class TpApplyQueryRequest extends PageBasicInfo { private Integer isDraft; public List getStatusList() { - if (StringUtils.isNotBlank(this.status)) { + if (StringUtils.isBlank(this.status)) { return null; } return Arrays.stream(this.status.split(CommonConstants.COMMA)) diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/tp/TpApplyRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/tp/TpApplyRequest.java index b1987112d..e741f0913 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/tp/TpApplyRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/tp/TpApplyRequest.java @@ -6,7 +6,7 @@ import lombok.Data; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.math.BigDecimal; -import java.time.LocalDate; +import java.util.Date; /** *

@@ -56,5 +56,5 @@ public class TpApplyRequest { private BigDecimal amount; @ApiModelProperty("申请复议截止日期,yyyy-MM-dd") - private LocalDate appealEndDate; + private Date appealEndDate; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpApplyListBaseVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpApplyListBaseVO.java index 5d225c066..ed8798ada 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpApplyListBaseVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpApplyListBaseVO.java @@ -76,6 +76,9 @@ public class TpApplyListBaseVO { @ApiModelProperty("审核时间") private Date approveTime; + @ApiModelProperty("是否为草稿 0否 1是") + private Integer isDraft; + public String getStatusName() { return TpFormStatusEnum.getMsgByStatus(this.status); } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpPenaltyApplyDetailVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpPenaltyApplyDetailVO.java index 0e81ab8d2..236b0ba09 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpPenaltyApplyDetailVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpPenaltyApplyDetailVO.java @@ -6,7 +6,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; -import java.time.LocalDate; +import java.util.Date; /** *

@@ -59,7 +59,7 @@ public class TpPenaltyApplyDetailVO { private BigDecimal amount; @ApiModelProperty("申请复议截止日期") - private LocalDate appealEndDate; + private Date appealEndDate; @ApiModelProperty("备注") private String remark; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpPenaltyApplyListVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpPenaltyApplyListVO.java index b71ac95f4..8846d7830 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpPenaltyApplyListVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpPenaltyApplyListVO.java @@ -6,7 +6,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; -import java.time.LocalDate; +import java.util.Date; /** *

@@ -29,7 +29,7 @@ public class TpPenaltyApplyListVO extends TpApplyListBaseVO { private BigDecimal amount; @ApiModelProperty("申请复议截止日期") - private LocalDate appealEndDate; + private Date appealEndDate; @ApiModelProperty("缴费状态") private Integer payStatus; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/mini/MiniTpPenaltyApplyVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/mini/MiniTpPenaltyApplyVO.java index 36a2a4c39..687db2cb2 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/mini/MiniTpPenaltyApplyVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/mini/MiniTpPenaltyApplyVO.java @@ -58,7 +58,7 @@ public class MiniTpPenaltyApplyVO { private BigDecimal score; @ApiModelProperty("复议截止日期") - private LocalDate appealEndDate; + private Date appealEndDate; @ApiModelProperty("证明图片列表") private String proofUrls; diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/dict/impl/DictService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/dict/impl/DictService.java index 906dca888..34ee56693 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/dict/impl/DictService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/dict/impl/DictService.java @@ -134,7 +134,16 @@ public class DictService { } private Field[] getFieldCache(Class clazz) { - return fieldCache.computeIfAbsent(clazz, Class::getDeclaredFields); + return fieldCache.computeIfAbsent(clazz, this::getAllFields); + } + + private Field[] getAllFields(Class clazz) { + List fields = new ArrayList<>(); + while (clazz != null && !clazz.equals(Object.class)) { + Collections.addAll(fields, clazz.getDeclaredFields()); + clazz = clazz.getSuperclass(); + } + return fields.toArray(new Field[0]); } private List> getDictField(Class clazz) { @@ -142,7 +151,7 @@ public class DictService { } private List> computeDictFields(Class clazz) { - Field[] fields = clazz.getDeclaredFields(); + Field[] fields = getFieldCache(clazz); Map fieldMap = CollStreamUtil.toMap(Arrays.asList(fields), Field::getName, v -> v); List> dictFields = new ArrayList<>(); for (Field field : fields) { diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/tp/impl/TpApplyServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/tp/impl/TpApplyServiceImpl.java index 7adfa15a5..872a8c1f6 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/tp/impl/TpApplyServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/tp/impl/TpApplyServiceImpl.java @@ -21,6 +21,7 @@ import com.cool.store.response.AuditInfoResponse; import com.cool.store.service.dict.impl.DictService; import com.cool.store.service.tp.TpApplyService; import com.cool.store.utils.BeanUtil; +import com.cool.store.utils.CoolDateUtils; import com.cool.store.utils.TpHelper; import com.cool.store.vo.tp.*; import com.cool.store.vo.tp.mini.*; @@ -75,8 +76,7 @@ public class TpApplyServiceImpl implements TpApplyService { throw new ServiceException(ErrorCodeEnum.TP_SCORE_EQUAL_TWELVE); } TpApplyFormDO formDO = BeanUtil.toBean(request, TpApplyFormDO.class); - boolean isInsert = Objects.isNull(request.getId()); - if (isInsert) { + if (Objects.isNull(request.getId())) { formDO.setApplyNo(TpHelper.generateApplyNo(TpFormTypeEnum.REWARD.getType())); formDO.setType(TpFormTypeEnum.REWARD.getType()); formDO.setPayStatus(TpPayStatusEnum.NO_NEED_PAY.getStatus()); @@ -84,8 +84,8 @@ public class TpApplyServiceImpl implements TpApplyService { fillRuleFields(formDO); tpApplyFormDAO.insertOrUpdate(formDO); // 第一次提交后添加审批记录 - if (isInsert && !isDraft) { - tpAuditRecordDAO.addRecord(formDO.getId(), TpFormTypeEnum.REWARD.getType(), request.getApplyUserId(), request.getApplyUserName()); + if (!isDraft) { + tpAuditRecordDAO.firstAddRecord(formDO.getId(), formDO.getType(), request.getApplyUserId(), request.getApplyUserName()); } return true; } @@ -126,12 +126,13 @@ public class TpApplyServiceImpl implements TpApplyService { throw new ServiceException(ErrorCodeEnum.TP_EXISTS_PENDING_APPLY); } boolean isInsert = Objects.isNull(request.getId()); + formDO.setType(isInsert ? TpFormTypeEnum.PENALTY.getType() : null); formDO.setApplyNo(isInsert ? TpHelper.generateApplyNo(formDO.getType()) : null); fillRuleFields(formDO); tpApplyFormDAO.insertOrUpdate(formDO); // 第一次提交后添加审批记录 - if (isInsert && !isDraft) { - tpAuditRecordDAO.addRecord(formDO.getId(), TpFormTypeEnum.PENALTY.getType(), request.getApplyUserId(), request.getApplyUserName()); + if (!isDraft) { + tpAuditRecordDAO.firstAddRecord(formDO.getId(), formDO.getType(), request.getApplyUserId(), request.getApplyUserName()); } return true; } @@ -225,8 +226,8 @@ public class TpApplyServiceImpl implements TpApplyService { fillRuleFields(formDO); tpApplyFormDAO.insertOrUpdate(formDO); // 第一次提交后添加审批记录 - if (isInsert && !isDraft) { - tpAuditRecordDAO.addRecord(formDO.getId(), TpFormTypeEnum.APPEAL.getType(), request.getApplyUserId(), request.getApplyUserName()); + if (!isDraft) { + tpAuditRecordDAO.firstAddRecord(formDO.getId(), formDO.getType(), request.getApplyUserId(), request.getApplyUserName()); } return true; } @@ -452,11 +453,16 @@ public class TpApplyServiceImpl implements TpApplyService { // 扣分 if (CommonConstants.INDEX_ZERO.equals(ruleDO.getType())) { if (Objects.isNull(formDO.getAppealEndDate())) { - formDO.setAppealEndDate(LocalDate.now().plusDays(ruleDO.getAppealDeadline())); + formDO.setAppealEndDate(CoolDateUtils.localDate2Date(LocalDate.now().plusDays(ruleDO.getAppealDeadline()))); } // 超过警告次数的为处罚单,否则警告单 int penaltyCount = tpApplyFormDAO.getPenaltyCount(formDO.getStoreId(), formDO.getRuleId()); - formDO.setType(ruleDO.getWarningLimit().compareTo(penaltyCount) <= 0 ? TpFormTypeEnum.PENALTY.getType() : TpFormTypeEnum.WARNING.getType()); + Integer type = ruleDO.getWarningLimit().compareTo(penaltyCount) <= 0 ? TpFormTypeEnum.PENALTY.getType() : TpFormTypeEnum.WARNING.getType(); + formDO.setType(type); + if (TpFormTypeEnum.WARNING.getType().equals(type)) { + formDO.setAmount(null); + formDO.setScore(null); + } // 是否缴费 formDO.setPayStatus(Objects.nonNull(ruleDO.getAmount()) && BigDecimal.ZERO.compareTo(ruleDO.getAmount()) < 0 ? TpPayStatusEnum.UNPAID.getStatus() : TpPayStatusEnum.NO_NEED_PAY.getStatus()); } @@ -466,7 +472,7 @@ public class TpApplyServiceImpl implements TpApplyService { * 填充列表相关字段 */ private void fillListFields(List list) { - if (CollectionUtils.isNotEmpty(list)) return; + if (CollectionUtils.isEmpty(list)) return; dictService.fillDictField(list); Set storeIds = CollStreamUtil.toSet(list, TpApplyListBaseVO::getStoreId); Set approveUserIds = CollStreamUtil.toSet(list, TpApplyListBaseVO::getApproveUserId); diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniTpApplyController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniTpApplyController.java index 60517a705..9a4534ae0 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniTpApplyController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniTpApplyController.java @@ -33,7 +33,7 @@ import java.util.List; * @author wangff * @since 2025/11/10 */ -@Api(tags = "十二分制-申请单") +@Api(tags = "Mini十二分制-申请单") @RestController @RequestMapping("/mini/tp/apply") @RequiredArgsConstructor