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/common/InsertGroup.java b/coolstore-partner-common/src/main/java/com/cool/store/common/InsertGroup.java
new file mode 100644
index 000000000..e97b4e698
--- /dev/null
+++ b/coolstore-partner-common/src/main/java/com/cool/store/common/InsertGroup.java
@@ -0,0 +1,12 @@
+package com.cool.store.common;
+
+/**
+ *
+ * 新增分组
+ *
+ *
+ * @author wangff
+ * @since 2025/11/4
+ */
+public interface InsertGroup {
+}
diff --git a/coolstore-partner-common/src/main/java/com/cool/store/common/UpdateGroup.java b/coolstore-partner-common/src/main/java/com/cool/store/common/UpdateGroup.java
new file mode 100644
index 000000000..ead1d3ded
--- /dev/null
+++ b/coolstore-partner-common/src/main/java/com/cool/store/common/UpdateGroup.java
@@ -0,0 +1,12 @@
+package com.cool.store.common;
+
+/**
+ *
+ * 更新分组
+ *
+ *
+ * @author wangff
+ * @since 2025/11/4
+ */
+public interface UpdateGroup {
+}
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 c183db4a7..9cb364f57 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
@@ -324,9 +324,24 @@ public enum ErrorCodeEnum {
WALLET_OPEN_ACCOUNT_FAIL(1620001,"钱包开通失败",null),
WALLET_WITH_DRAWER_FAIL(1620002,"提现失败",null),
WALLET_API_ERROR(1620003,"{0}",null),
-
CURRENT_BRAND_SORT_NUMBER_EXIST(16100007,"当前品牌已存在该排序数字!",null),
- CONTRACT_CONFIG_NOT_EXIST(16100008,"合同配置不存在!",null);
+ CONTRACT_CONFIG_NOT_EXIST(16100008,"合同配置不存在!",null),
+ /**
+ * 181 十二分制
+ */
+ TP_NOT_EXIST_RULE(1810000, "不存在该规则", null),
+ TP_MONTH_EXIST_APPLY(1810001, "该门店一个月内存在相同项目的加分申请", null),
+ TP_SCORE_EQUAL_TWELVE(1810002, "该门店已满12分,无法申请加分", null),
+ TP_NOT_EXIST_PENDING_AUDIT(1810003, "申请单不存在待审批记录", null),
+ TP_NOT_EXIST_APPLY_FORM(1810004, "不存在申请单", null),
+ TP_APPLY_AUDIT_COMPLETED(1810005, "该申请单已审批", null),
+ TP_EXISTS_PENDING_APPLY(1810006, "存在待审批的申请单", null),
+ TP_PENALTY_APPLY_APPEAL_COMPLETED(1810007, "该处罚单已完成复议", null),
+ TP_PENALTY_APPLY_EFFECTIVE(1810008, "该处罚单已生效", null),
+ TP_PENALTY_APPLY_UNABLE_ACCEPT(1810009, "该处罚单无法认缴", null),
+ TP_PENALTY_APPLY_INEFFECTIVE(1810010, "该处罚单未生效无法完成缴费", null),
+ TP_PENALTY_APPLY_NO_NEED_PAY(1810011, "该处罚单无需缴费", null),
+
;
diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/JoinModeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/JoinModeEnum.java
index 65faf4608..078b02850 100644
--- a/coolstore-partner-common/src/main/java/com/cool/store/enums/JoinModeEnum.java
+++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/JoinModeEnum.java
@@ -53,4 +53,13 @@ public enum JoinModeEnum {
}
return null;
}
+
+ public static String getDescByCode(Integer code) {
+ for (JoinModeEnum e : JoinModeEnum.values()) {
+ if (e.getCode() == code) {
+ return e.desc;
+ }
+ }
+ return null;
+ }
}
diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/master/BrandTypeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/master/BrandTypeEnum.java
new file mode 100644
index 000000000..4dbe11852
--- /dev/null
+++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/master/BrandTypeEnum.java
@@ -0,0 +1,52 @@
+package com.cool.store.enums.master;
+
+/**
+ * @Author suzhuhong
+ * @Date 2025/8/6 16:49
+ * @Version 1.0
+ */
+public enum BrandTypeEnum {
+
+ JP(1, "正新鸡排"),
+ SMZ(2, "正新三明治"),
+ ZSJ(3, "正烧记"),
+ MX(4, "大鼓米线"),
+ CXM(5, "串小妹"),
+ MZG(6, "茂掌柜");
+
+ ;
+ private Integer code;
+
+ private String desc;
+
+ BrandTypeEnum(Integer code, String desc) {
+ this.code = code;
+ this.desc = desc;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public String getDesc() {
+ return desc;
+ }
+
+ public static Integer getCodeByDesc(String desc) {
+ for (BrandTypeEnum value : values()) {
+ if (value.getDesc().equals(desc)) {
+ return value.getCode();
+ }
+ }
+ return null;
+ }
+
+ public static String getDescByCode(Integer code) {
+ for (BrandTypeEnum value : values()) {
+ if (value.getCode().equals(code)) {
+ return value.getDesc();
+ }
+ }
+ return null;
+ }
+}
diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/tp/TpFormStatusEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/tp/TpFormStatusEnum.java
new file mode 100644
index 000000000..5dbf56f40
--- /dev/null
+++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/tp/TpFormStatusEnum.java
@@ -0,0 +1,38 @@
+package com.cool.store.enums.tp;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ *
+ * 十二分制-单据状态 枚举类
+ *
+ *
+ * @author wangff
+ * @since 2025/11/5
+ */
+@Getter
+@AllArgsConstructor
+public enum TpFormStatusEnum {
+
+ PENDING("pending", "审批中"),
+ PASS("pass", "审批通过"),
+ REJECT("reject", "审批拒绝"),
+
+ EFFECTIVE("effective", "已生效"),
+ CANCEL("cancel", "已作废"),
+ ;
+
+ private final String status;
+
+ private final String msg;
+
+ public static String getMsgByStatus(String status) {
+ for (TpFormStatusEnum value : values()) {
+ if (value.status.equals(status)) {
+ return value.msg;
+ }
+ }
+ return null;
+ }
+}
diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/tp/TpFormTypeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/tp/TpFormTypeEnum.java
new file mode 100644
index 000000000..20f2bf2ee
--- /dev/null
+++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/tp/TpFormTypeEnum.java
@@ -0,0 +1,54 @@
+package com.cool.store.enums.tp;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ *
+ * 十二分制-单据类型 枚举类
+ *
+ *
+ * @author wangff
+ * @since 2025/11/6
+ */
+@Getter
+@AllArgsConstructor
+public enum TpFormTypeEnum {
+
+ REWARD(0, "加分申请单", "加分申请单"),
+ WARNING(1, "警告书", "惩处申请单"),
+ PENALTY(2, "处罚书", "惩处申请单"),
+ APPEAL(3, "复议申请单", "复议申请单"),
+ ;
+
+ private final Integer type;
+
+ private final String msg;
+
+ private final String alias;
+
+ public static String getMsgByType(Integer type) {
+ for (TpFormTypeEnum value : values()) {
+ if (value.type.equals(type)) {
+ return value.msg;
+ }
+ }
+ return null;
+ }
+
+ public static TpFormTypeEnum getByType(Integer type) {
+ for (TpFormTypeEnum value : values()) {
+ if (value.type.equals(type)) {
+ return value;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 是惩处单
+ */
+ public static boolean isPenalty(Integer type) {
+ return PENALTY.getType().equals(type) || WARNING.getType().equals(type);
+ }
+}
diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/tp/TpPayStatusEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/tp/TpPayStatusEnum.java
new file mode 100644
index 000000000..46ca5b9e3
--- /dev/null
+++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/tp/TpPayStatusEnum.java
@@ -0,0 +1,35 @@
+package com.cool.store.enums.tp;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ *
+ * 十二分制-缴费状态 枚举类
+ *
+ *
+ * @author wangff
+ * @since 2025/11/5
+ */
+@Getter
+@AllArgsConstructor
+public enum TpPayStatusEnum {
+
+ UNPAID(0, "未缴费"),
+ NO_NEED_PAY(1, "无需缴费"),
+ PAID(2, "已缴费")
+ ;
+
+ private final Integer status;
+
+ private final String msg;
+
+ public static String getMsgByStatus(Integer status) {
+ for (TpPayStatusEnum value : values()) {
+ if (value.status.equals(status)) {
+ return value.msg;
+ }
+ }
+ return null;
+ }
+}
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-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..31a742437
--- /dev/null
+++ b/coolstore-partner-common/src/main/java/com/cool/store/utils/TpHelper.java
@@ -0,0 +1,58 @@
+package com.cool.store.utils;
+
+import com.cool.store.enums.tp.TpFormTypeEnum;
+
+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");
+
+ /**
+ * 生成奖惩规则编码
+ * @param isReward 是否为加分规则
+ * @return 规则编码
+ */
+ public static String generateRuleNo(boolean isReward) {
+ return (isReward ? "JR" : "CR") + generateCode();
+ }
+
+ /**
+ * 生成积分流水号
+ */
+ public static String generateScoreJournalNo() {
+ return "LS" + generateCode();
+ }
+
+ /**
+ * 生成申请单号
+ * @param applyType 单据类型
+ * @return 申请单号
+ */
+ public static String generateApplyNo(Integer applyType) {
+ TpFormTypeEnum type = TpFormTypeEnum.getByType(applyType);
+ if (type == null) return null;
+ return (TpFormTypeEnum.REWARD.equals(type) ? "JF" : TpFormTypeEnum.PENALTY.equals(type) ? "CF" : "JG") + generateCode();
+ }
+
+ /**
+ * 生成复议申请单号
+ */
+ public static String generateAppealNo() {
+ return "FY" + 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/StoreDao.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/StoreDao.java
index 65c3575c0..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
@@ -1,5 +1,6 @@
package com.cool.store.dao;
+import cn.hutool.core.collection.CollStreamUtil;
import com.cool.store.dto.store.StoreOrderTimeDTO;
import com.cool.store.entity.StoreDO;
import com.cool.store.mapper.StoreMapper;
@@ -7,11 +8,12 @@ import com.cool.store.response.MiniShopsResponse;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
+import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.List;
+import java.math.BigDecimal;
+import java.util.*;
@Repository
public class StoreDao {
@@ -30,6 +32,13 @@ public class StoreDao {
return storeMapper.getByStoreId(storeId);
}
+ public StoreDO getEffectiveByStoreId(String storeId) {
+ if(StringUtils.isBlank(storeId)) {
+ return null;
+ }
+ return storeMapper.getEffectiveByStoreId(storeId);
+ }
+
public List getEffectiveStoreByStoreIds(List storeIdList) {
if(CollectionUtils.isEmpty(storeIdList)) {
return Lists.newArrayList();
@@ -102,4 +111,39 @@ public class StoreDao {
public List getAllStoreIdAndNum(List storeStatus) {
return storeMapper.getAllStoreIdAndNum(storeStatus);
}
+
+ /**
+ * 查询门店积分
+ * @param storeId 门店id
+ * @return 积分
+ */
+ public BigDecimal getStoreScore(@Param("storeId") String storeId) {
+ BigDecimal score = storeMapper.getStoreScore(storeId);
+ if (Objects.isNull(score)) {
+ return BigDecimal.valueOf(12.0);
+ }
+ return score;
+ }
+
+ /**
+ * 根据门店id查询门店映射
+ * @param storeIds 门店id列表
+ * @return 门店id->门店
+ */
+ public Map getStoreMapByStoreIds(List storeIds) {
+ if (CollectionUtils.isEmpty(storeIds)) {
+ return Collections.emptyMap();
+ }
+ List storeList = storeMapper.getStoreByStoreIds(storeIds);
+ return CollStreamUtil.toMap(storeList, StoreDO::getStoreId, v -> v);
+ }
+
+ /**
+ * 更新门店积分
+ * @param storeId 门店id
+ * @param score 积分
+ */
+ public boolean updateStoreScore(String storeId, BigDecimal score) {
+ return storeMapper.updateStoreScore(storeId, score) > 0;
+ }
}
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
new file mode 100644
index 000000000..e08265c78
--- /dev/null
+++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/dict/SysDictColumnDAO.java
@@ -0,0 +1,163 @@
+package com.cool.store.dao.dict;
+
+import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.collection.CollectionUtil;
+import com.alibaba.excel.util.CollectionUtils;
+import com.cool.store.entity.dict.SysDictColumnDO;
+import com.cool.store.entity.dict.SysDictTableDO;
+import com.cool.store.mapper.dict.SysDictColumnMapper;
+import com.cool.store.request.dict.DictColumnQueryRequest;
+import com.cool.store.utils.BeanUtil;
+import com.cool.store.vo.dict.DictColumnSimpleVO;
+import lombok.RequiredArgsConstructor;
+import org.apache.commons.collections4.MapUtils;
+import org.springframework.stereotype.Repository;
+
+import java.util.*;
+
+/**
+ *
+ * 字典项DAO
+ *
+ *
+ * @author wangff
+ * @since 2025/9/26
+ */
+@Repository
+@RequiredArgsConstructor
+public class SysDictColumnDAO {
+ private final SysDictColumnMapper sysDictColumnMapper;
+ private final SysDictTableDAO sysDictTableDAO;
+
+
+ public List getList(DictColumnQueryRequest dto) {
+ return sysDictColumnMapper.selectList(dto);
+ }
+
+ /**
+ * 根据id查询
+ *
+ * @param id id
+ * @return 字典项信息表
+ */
+ public SysDictColumnDO getById(Long id) {
+ return sysDictColumnMapper.selectById(id);
+ }
+
+ /**
+ * 根据字典表id查询字典项数量
+ *
+ * @param tableIds 字典表id列表
+ * @return <字典表id, 字典项数量>
+ */
+ public Map getColumnNumMapByTableIds(List tableIds) {
+ if (CollectionUtil.isEmpty(tableIds)) {
+ return Collections.emptyMap();
+ }
+ List