From 75a0ad467632bd76b823bd8e442540dc4639acf9 Mon Sep 17 00:00:00 2001 From: wangff Date: Tue, 4 Nov 2025 17:53:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=8D=81=E4=BA=8C=E5=88=86=E5=88=B6-?= =?UTF-8?q?=E5=A5=96=E6=83=A9=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cool/store/annotation/DictField.java | 15 ++ .../java/com/cool/store/utils/TpHelper.java | 35 +++++ .../cool/store/dao/dict/SysDictColumnDAO.java | 13 ++ .../java/com/cool/store/dao/tp/TpRuleDAO.java | 95 ++++++++++++ .../mapper/dict/SysDictColumnMapper.java | 7 + .../store/mapper/tp/TpAppealFormMapper.java | 7 + .../store/mapper/tp/TpApplyFormMapper.java | 7 + .../store/mapper/tp/TpAuditRecordMapper.java | 7 + .../cool/store/mapper/tp/TpRuleMapper.java | 7 + .../store/mapper/tp/TpScoreJournalMapper.java | 7 + .../resources/dict/SysDictColumnMapper.xml | 10 ++ .../mapper/tp/TpAppealFormMapper.xml | 26 ++++ .../resources/mapper/tp/TpApplyFormMapper.xml | 30 ++++ .../mapper/tp/TpAuditRecordMapper.xml | 21 +++ .../main/resources/mapper/tp/TpRuleMapper.xml | 25 ++++ .../mapper/tp/TpScoreJournalMapper.xml | 29 ++++ .../cool/store/entity/tp/TpAppealFormDO.java | 117 +++++++++++++++ .../cool/store/entity/tp/TpApplyFormDO.java | 140 ++++++++++++++++++ .../cool/store/entity/tp/TpAuditRecordDO.java | 89 +++++++++++ .../com/cool/store/entity/tp/TpRuleDO.java | 113 ++++++++++++++ .../store/entity/tp/TpScoreJournalDO.java | 140 ++++++++++++++++++ .../tp/TpPenaltyRuleUpdateRequest.java | 62 ++++++++ .../request/tp/TpRewardRuleUpdateRequest.java | 49 ++++++ .../store/request/tp/TpRuleQueryRequest.java | 28 ++++ .../store/vo/tp/TpPenaltyRuleDetailVO.java | 59 ++++++++ .../cool/store/vo/tp/TpPenaltyRuleListVO.java | 44 ++++++ .../store/vo/tp/TpRewardRuleDetailVO.java | 46 ++++++ .../store/service/dict/impl/DictService.java | 101 +++++++++++++ .../cool/store/service/tp/TpRuleService.java | 93 ++++++++++++ .../service/tp/impl/TpRuleServiceImpl.java | 116 +++++++++++++++ .../controller/webb/TpRuleController.java | 106 +++++++++++++ 31 files changed, 1644 insertions(+) create mode 100644 coolstore-partner-common/src/main/java/com/cool/store/annotation/DictField.java create mode 100644 coolstore-partner-common/src/main/java/com/cool/store/utils/TpHelper.java create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/dao/tp/TpRuleDAO.java create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/mapper/tp/TpAppealFormMapper.java create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/mapper/tp/TpApplyFormMapper.java create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/mapper/tp/TpAuditRecordMapper.java create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/mapper/tp/TpRuleMapper.java create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/mapper/tp/TpScoreJournalMapper.java create mode 100644 coolstore-partner-dao/src/main/resources/mapper/tp/TpAppealFormMapper.xml create mode 100644 coolstore-partner-dao/src/main/resources/mapper/tp/TpApplyFormMapper.xml create mode 100644 coolstore-partner-dao/src/main/resources/mapper/tp/TpAuditRecordMapper.xml create mode 100644 coolstore-partner-dao/src/main/resources/mapper/tp/TpRuleMapper.xml create mode 100644 coolstore-partner-dao/src/main/resources/mapper/tp/TpScoreJournalMapper.xml create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/entity/tp/TpAppealFormDO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/entity/tp/TpApplyFormDO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/entity/tp/TpAuditRecordDO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/entity/tp/TpRuleDO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/entity/tp/TpScoreJournalDO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/request/tp/TpPenaltyRuleUpdateRequest.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/request/tp/TpRewardRuleUpdateRequest.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/request/tp/TpRuleQueryRequest.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpPenaltyRuleDetailVO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpPenaltyRuleListVO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpRewardRuleDetailVO.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/service/dict/impl/DictService.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/service/tp/TpRuleService.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/service/tp/impl/TpRuleServiceImpl.java create mode 100644 coolstore-partner-web/src/main/java/com/cool/store/controller/webb/TpRuleController.java diff --git a/coolstore-partner-common/src/main/java/com/cool/store/annotation/DictField.java b/coolstore-partner-common/src/main/java/com/cool/store/annotation/DictField.java new file mode 100644 index 000000000..6559cb527 --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/annotation/DictField.java @@ -0,0 +1,15 @@ +package com.cool.store.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 字典表填充字段 + */ +@Target(ElementType.FIELD) +@Retention(RetentionPolicy.RUNTIME) +public @interface DictField { + String sourceField() default ""; +} diff --git a/coolstore-partner-common/src/main/java/com/cool/store/utils/TpHelper.java b/coolstore-partner-common/src/main/java/com/cool/store/utils/TpHelper.java new file mode 100644 index 000000000..d8e5ab2f4 --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/utils/TpHelper.java @@ -0,0 +1,35 @@ +package com.cool.store.utils; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +/** + *

+ * 十二分制 辅助工具类 + *

+ * + * @author wangff + * @since 2025/11/4 + */ +public class TpHelper { + private final static DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyMMddHHmmssSSS"); + + /** + * 生成惩处单号 + */ + public static String generatePenaltyRuleCode() { + return "CC" + generateCode(); + } + /** + * 生成加分单号 + */ + public static String generateRewardRuleCode() { + return "JF" + generateCode(); + } + + private static String generateCode() { + return LocalDateTime.now().format(dtf) + (int) (Math.random() * 900) + 100; + } + + +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/dict/SysDictColumnDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/dict/SysDictColumnDAO.java index ab991bda6..e08265c78 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/dict/SysDictColumnDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/dict/SysDictColumnDAO.java @@ -128,6 +128,19 @@ public class SysDictColumnDAO { return ""; } + /** + * 根据字典列编码查询已启用字典项名称映射 + * @param columnCodes 字典列编码列表 + * @return <字典列编码, 字典项名称> + */ + public Map getNameMapByCodes(List columnCodes) { + if (CollectionUtils.isEmpty(columnCodes)) { + return Collections.emptyMap(); + } + List list = sysDictColumnMapper.selectOpenColumnByCodes(columnCodes); + return CollStreamUtil.toMap(list, SysDictColumnDO::getColumnCode, SysDictColumnDO::getColumnName); + } + /** * 根据字典表编码查询启用状态的字典项 * @param tableCodes 字典表编码列表 diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/tp/TpRuleDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/tp/TpRuleDAO.java new file mode 100644 index 000000000..b84d59fde --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/tp/TpRuleDAO.java @@ -0,0 +1,95 @@ +package com.cool.store.dao.tp; + +import com.cool.store.entity.tp.TpRuleDO; +import com.cool.store.mapper.tp.TpRuleMapper; +import com.cool.store.request.tp.TpRuleQueryRequest; +import lombok.RequiredArgsConstructor; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Repository; +import tk.mybatis.mapper.entity.Example; + +import java.util.List; +import java.util.Objects; + +/** + *

+ * 十二分制-奖惩规则DAO + *

+ * + * @author wangff + * @since 2025/11/4 + */ +@Repository +@RequiredArgsConstructor +public class TpRuleDAO { + private final TpRuleMapper tpRuleMapper; + + /** + * 新增 + */ + public boolean insertSelective(TpRuleDO tpRuleDO) { + return tpRuleMapper.insertSelective(tpRuleDO) > 0; + } + + /** + * 编辑 + */ + public boolean updateSelective(TpRuleDO tpRuleDO) { + return tpRuleMapper.updateByPrimaryKeySelective(tpRuleDO) > 0; + } + + /** + * 删除 + */ + public boolean deleteByIds(List ids) { + if (CollectionUtils.isEmpty(ids)) { + return false; + } + Example example = new Example(TpRuleDO.class); + example.createCriteria().andIn("id", ids); + return tpRuleMapper.updateByExampleSelective(TpRuleDO.builder().deleted(1).build(), example) > 0; + } + + /** + * 根据id查询 + */ + public TpRuleDO getById(Long id) { + return tpRuleMapper.selectByPrimaryKey(id); + } + + public List getList(TpRuleQueryRequest request) { + Example example = new Example(TpRuleDO.class); + Example.Criteria criteria = example.createCriteria(); + if (StringUtils.isNotBlank(request.getProblemClassification())) { + criteria.andEqualTo("problemClassification", request.getProblemClassification()); + } + if (StringUtils.isNotBlank(request.getProjectCategory())) { + criteria.andEqualTo("projectCategory", request.getProjectCategory()); + } + if (StringUtils.isNotBlank(request.getProjectName())) { + criteria.andLike("projectName", request.getProjectName()); + } + if (Objects.nonNull(request.getStatus())) { + criteria.andEqualTo("status", request.getStatus()); + } + example.setOrderByClause("create_time DESC"); + return tpRuleMapper.selectByExample(example); + } + + /** + * 修改启用状态 + * @param ids id列表 + * @param status 启用状态 + * @return boolean + */ + public boolean updateStatus(List ids, Integer status) { + if (CollectionUtils.isEmpty(ids)) { + return false; + } + Example example = new Example(TpRuleDO.class); + example.createCriteria() + .andIn("id", ids); + return tpRuleMapper.updateByExampleSelective(TpRuleDO.builder().status(status).build(), example) > 0; + } +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/dict/SysDictColumnMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/dict/SysDictColumnMapper.java index 8f4fda280..71b9ed08e 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/dict/SysDictColumnMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/dict/SysDictColumnMapper.java @@ -95,6 +95,13 @@ public interface SysDictColumnMapper { */ SysDictColumnDO selectOpenColumnByCode(@Param("columnCode") String columnCode); + /** + * 根据字典项编码查询字典项映射 + * @param columnCodes 字典项编码列表 + * @return 字典项列表 + */ + List selectOpenColumnByCodes(@Param("columnCodes") List columnCodes); + /** * 根据字典表id查询 * @param tableIds 字典表id列表 diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/tp/TpAppealFormMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/tp/TpAppealFormMapper.java new file mode 100644 index 000000000..6104bef94 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/tp/TpAppealFormMapper.java @@ -0,0 +1,7 @@ +package com.cool.store.mapper.tp; + +import com.cool.store.entity.tp.TpAppealFormDO; +import tk.mybatis.mapper.common.Mapper; + +public interface TpAppealFormMapper extends Mapper { +} \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/tp/TpApplyFormMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/tp/TpApplyFormMapper.java new file mode 100644 index 000000000..94f82f2d6 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/tp/TpApplyFormMapper.java @@ -0,0 +1,7 @@ +package com.cool.store.mapper.tp; + +import com.cool.store.entity.tp.TpApplyFormDO; +import tk.mybatis.mapper.common.Mapper; + +public interface TpApplyFormMapper extends Mapper { +} \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/tp/TpAuditRecordMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/tp/TpAuditRecordMapper.java new file mode 100644 index 000000000..53a87894f --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/tp/TpAuditRecordMapper.java @@ -0,0 +1,7 @@ +package com.cool.store.mapper.tp; + +import com.cool.store.entity.tp.TpAuditRecordDO; +import tk.mybatis.mapper.common.Mapper; + +public interface TpAuditRecordMapper extends Mapper { +} \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/tp/TpRuleMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/tp/TpRuleMapper.java new file mode 100644 index 000000000..a76ed7cae --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/tp/TpRuleMapper.java @@ -0,0 +1,7 @@ +package com.cool.store.mapper.tp; + +import com.cool.store.entity.tp.TpRuleDO; +import tk.mybatis.mapper.common.Mapper; + +public interface TpRuleMapper extends Mapper { +} \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/tp/TpScoreJournalMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/tp/TpScoreJournalMapper.java new file mode 100644 index 000000000..0b746cdd9 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/tp/TpScoreJournalMapper.java @@ -0,0 +1,7 @@ +package com.cool.store.mapper.tp; + +import com.cool.store.entity.tp.TpScoreJournalDO; +import tk.mybatis.mapper.common.Mapper; + +public interface TpScoreJournalMapper extends Mapper { +} \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/dict/SysDictColumnMapper.xml b/coolstore-partner-dao/src/main/resources/dict/SysDictColumnMapper.xml index 59975c23e..156cf57ab 100644 --- a/coolstore-partner-dao/src/main/resources/dict/SysDictColumnMapper.xml +++ b/coolstore-partner-dao/src/main/resources/dict/SysDictColumnMapper.xml @@ -247,6 +247,16 @@ WHERE column_code = #{columnCode} AND deleted = 0 AND open_status = 1 LIMIT 1 + +