ソースを参照

refactor: 消除后端魔法值,统一使用枚举和常量类

- 新建6个枚举类:RefundStatus、DistributorStatus、DistributorReferralStatus、
  DistributorCommissionStatus、DistributorWithdrawalStatus、StockRecordStatus
- 使用已有CommonStatus替换通用启用/禁用状态的魔法值0/1
- 使用DeviceConstants替换设备状态的魔法数字
- 使用DeviceOnlineStatus替换在线状态判断
- 使用ActivityTypeEnum、ApplyScopeEnum、ApplyStatus、CouponTypeEnum、
  ValidTypeEnum、PaymentChannel、OpenType等枚举替换对应魔法值
- 使用CommonConstants.NOT_DELETED/DELETED替换删除标记

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
skyline 2 週間 前
コミット
275d6d6667
37 ファイル変更531 行追加213 行削除
  1. 8 7
      haha-admin/src/main/java/com/haha/admin/controller/RefundApplicationController.java
  2. 2 1
      haha-admin/src/main/java/com/haha/admin/controller/UnifiedActivityController.java
  3. 3 2
      haha-admin/src/main/java/com/haha/admin/service/impl/AdminLoginServiceImpl.java
  4. 4 3
      haha-admin/src/main/java/com/haha/admin/task/DeviceMonitorTask.java
  5. 3 2
      haha-admin/src/main/java/com/haha/admin/task/DistributorTask.java
  6. 52 0
      haha-common/src/main/java/com/haha/common/enums/DistributorCommissionStatus.java
  7. 53 0
      haha-common/src/main/java/com/haha/common/enums/DistributorReferralStatus.java
  8. 61 0
      haha-common/src/main/java/com/haha/common/enums/DistributorStatus.java
  9. 54 0
      haha-common/src/main/java/com/haha/common/enums/DistributorWithdrawalStatus.java
  10. 39 0
      haha-common/src/main/java/com/haha/common/enums/RefundStatus.java
  11. 53 0
      haha-common/src/main/java/com/haha/common/enums/StockRecordStatus.java
  12. 1 1
      haha-miniapp/src/main/java/com/haha/miniapp/controller/PaymentController.java
  13. 4 3
      haha-service/src/main/java/com/haha/service/impl/CouponTemplateServiceImpl.java
  14. 6 4
      haha-service/src/main/java/com/haha/service/impl/DashboardServiceImpl.java
  15. 4 3
      haha-service/src/main/java/com/haha/service/impl/DataPermissionServiceImpl.java
  16. 2 1
      haha-service/src/main/java/com/haha/service/impl/DictServiceImpl.java
  17. 8 11
      haha-service/src/main/java/com/haha/service/impl/DistributorCommissionServiceImpl.java
  18. 4 14
      haha-service/src/main/java/com/haha/service/impl/DistributorReferralServiceImpl.java
  19. 10 7
      haha-service/src/main/java/com/haha/service/impl/DistributorReportServiceImpl.java
  20. 7 11
      haha-service/src/main/java/com/haha/service/impl/DistributorServiceImpl.java
  21. 10 15
      haha-service/src/main/java/com/haha/service/impl/DistributorWithdrawalServiceImpl.java
  22. 47 43
      haha-service/src/main/java/com/haha/service/impl/HahaCallbackServiceImpl.java
  23. 2 1
      haha-service/src/main/java/com/haha/service/impl/InviteActivityServiceImpl.java
  24. 2 1
      haha-service/src/main/java/com/haha/service/impl/LoginServiceImpl.java
  25. 11 10
      haha-service/src/main/java/com/haha/service/impl/MarketingActivityServiceImpl.java
  26. 9 9
      haha-service/src/main/java/com/haha/service/impl/MarketingRuleServiceImpl.java
  27. 1 1
      haha-service/src/main/java/com/haha/service/impl/NewProductApplyServiceImpl.java
  28. 5 4
      haha-service/src/main/java/com/haha/service/impl/ReplenisherServiceImpl.java
  29. 6 4
      haha-service/src/main/java/com/haha/service/impl/ShopServiceImpl.java
  30. 8 6
      haha-service/src/main/java/com/haha/service/impl/StatisticsServiceImpl.java
  31. 6 5
      haha-service/src/main/java/com/haha/service/impl/StockRecordServiceImpl.java
  32. 5 5
      haha-service/src/main/java/com/haha/service/impl/TimedDiscountServiceImpl.java
  33. 18 18
      haha-service/src/main/java/com/haha/service/impl/UnifiedActivityServiceImpl.java
  34. 5 3
      haha-service/src/main/java/com/haha/service/impl/UserCouponServiceImpl.java
  35. 13 15
      haha-service/src/main/java/com/haha/service/impl/UserServiceImpl.java
  36. 2 1
      haha-service/src/main/java/com/haha/service/payment/impl/PaymentServiceImpl.java
  37. 3 2
      haha-service/src/main/java/com/haha/service/payment/payscore/impl/PayScoreServiceImpl.java

+ 8 - 7
haha-admin/src/main/java/com/haha/admin/controller/RefundApplicationController.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.haha.admin.annotation.RequirePermission;
 import com.haha.common.annotation.Log;
 import com.haha.common.enums.OperationType;
+import com.haha.common.enums.RefundStatus;
 import com.haha.common.vo.PageResult;
 import com.haha.common.vo.RefundApplicationVO;
 import com.haha.common.vo.RefundProductVO;
@@ -66,12 +67,12 @@ public class RefundApplicationController {
         // 状态筛选:0-待审核,1-已通过,2-已拒绝
         if (status != null) {
             if (status == 0) {
-                wrapper.and(w -> w.ne(Order::getRefundStatus, "REFUNDED")
-                        .ne(Order::getRefundStatus, "REJECTED"));
+                wrapper.and(w -> w.ne(Order::getRefundStatus, RefundStatus.REFUNDED.getCode())
+                        .ne(Order::getRefundStatus, RefundStatus.REJECTED.getCode()));
             } else if (status == 1) {
-                wrapper.eq(Order::getRefundStatus, "REFUNDED");
+                wrapper.eq(Order::getRefundStatus, RefundStatus.REFUNDED.getCode());
             } else if (status == 2) {
-                wrapper.eq(Order::getRefundStatus, "REJECTED");
+                wrapper.eq(Order::getRefundStatus, RefundStatus.REJECTED.getCode());
             }
         }
 
@@ -129,7 +130,7 @@ public class RefundApplicationController {
             return Result.success("退款成功", null);
         } else {
             // 审核拒绝:仅更新数据库状态
-            order.setRefundStatus("REJECTED");
+            order.setRefundStatus(RefundStatus.REJECTED.getCode());
             order.setRefundReason(dto.getRemark());
             orderService.updateById(order);
             log.info("退款申请已拒绝 - orderId: {}, remark: {}", id, dto.getRemark());
@@ -154,9 +155,9 @@ public class RefundApplicationController {
 
         // 映射退款状态:REFUNDED->1(已通过), REJECTED->2(已拒绝), 其他->0(待审核)
         String refundStatus = order.getRefundStatus();
-        if ("REFUNDED".equals(refundStatus)) {
+        if (RefundStatus.REFUNDED.getCode().equals(refundStatus)) {
             vo.setStatus(1);
-        } else if ("REJECTED".equals(refundStatus)) {
+        } else if (RefundStatus.REJECTED.getCode().equals(refundStatus)) {
             vo.setStatus(2);
         } else {
             vo.setStatus(0);

+ 2 - 1
haha-admin/src/main/java/com/haha/admin/controller/UnifiedActivityController.java

@@ -3,6 +3,7 @@ package com.haha.admin.controller;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.haha.admin.annotation.RequirePermission;
 import com.haha.common.annotation.Log;
+import com.haha.common.enums.ActivityTypeEnum;
 import com.haha.common.enums.OperationType;
 import com.haha.common.vo.PageResult;
 import com.haha.common.vo.Result;
@@ -91,7 +92,7 @@ public class UnifiedActivityController {
     @PostMapping
     public Result<Long> create(@RequestBody UnifiedActivityCreateDTO dto) {
         // 根据类型进行分组校验
-        if (dto.getActivityType() == 4) {
+        if (dto.getActivityType() == ActivityTypeEnum.INVITE_REWARD.getCode()) {
             // 邀请活动的特殊校验
             if (dto.getInviterCouponTemplateId() == null) {
                 return Result.error("邀请人优惠券模板不能为空");

+ 3 - 2
haha-admin/src/main/java/com/haha/admin/service/impl/AdminLoginServiceImpl.java

@@ -3,6 +3,7 @@ package com.haha.admin.service.impl;
 import cn.dev33.satoken.stp.StpUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.haha.admin.service.AdminLoginService;
+import com.haha.common.enums.CommonStatus;
 import com.haha.common.vo.AdminInfoVO;
 import com.haha.common.vo.LoginVO;
 import com.haha.common.vo.Result;
@@ -68,7 +69,7 @@ public class AdminLoginServiceImpl implements AdminLoginService {
                 admin.setEmail("admin@haha.com");
                 admin.setAvatar(null);
                 admin.setDepartment("技术部");
-                admin.setStatus(1);
+                admin.setStatus(CommonStatus.ENABLED.getCode());
                 admin.setRoleIds("1");
                 
                 // 使用Sa-Token进行登录,生成token
@@ -116,7 +117,7 @@ public class AdminLoginServiceImpl implements AdminLoginService {
             }
             
             // 检查账号状态
-            if (admin.getStatus() != 1) {
+            if (!CommonStatus.isEnabled(admin.getStatus())) {
                 log.warn("登录失败: 账号已禁用 username={}", username);
                 return Result.error(403, "账号已被禁用,请联系管理员");
             }

+ 4 - 3
haha-admin/src/main/java/com/haha/admin/task/DeviceMonitorTask.java

@@ -1,5 +1,6 @@
 package com.haha.admin.task;
 
+import com.haha.common.constant.DeviceConstants;
 import com.haha.entity.Device;
 import com.haha.sdk.HahaClient;
 import com.haha.sdk.model.DeviceOnlineStatus;
@@ -41,7 +42,7 @@ public class DeviceMonitorTask {
         try {
             // 1. 查询所有状态为正常(status=1)的设备
             List<Device> devices = deviceService.lambdaQuery()
-                    .eq(Device::getStatus, 1)
+                    .eq(Device::getStatus, DeviceConstants.STATUS_ONLINE)
                     .list();
 
             if (devices.isEmpty()) {
@@ -62,11 +63,11 @@ public class DeviceMonitorTask {
                         DeviceOnlineStatus onlineStatus = hahaClient.getDeviceApi().getOnlineStatus(device.getDeviceId());
                         totalChecked++;
 
-                        if (onlineStatus != null && onlineStatus.getIsOnline() != null && onlineStatus.getIsOnline() == 0) {
+                        if (onlineStatus != null && onlineStatus.getIsOnline() != null && onlineStatus.getIsOnline() == com.haha.common.enums.DeviceOnlineStatus.OFFLINE.getCode()) {
                             // 设备离线
                             offlineCount++;
                             deviceAlertService.processOfflineAlert(device.getDeviceId(), "SCHEDULED_SCAN");
-                        } else if (onlineStatus != null && onlineStatus.getIsOnline() != null && onlineStatus.getIsOnline() == 1) {
+                        } else if (onlineStatus != null && onlineStatus.getIsOnline() != null && onlineStatus.getIsOnline() == com.haha.common.enums.DeviceOnlineStatus.ONLINE.getCode()) {
                             // 设备在线,检查是否需要发恢复通知
                             deviceAlertService.processBackOnlineNotify(device.getDeviceId());
                         }

+ 3 - 2
haha-admin/src/main/java/com/haha/admin/task/DistributorTask.java

@@ -1,6 +1,7 @@
 package com.haha.admin.task;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.haha.common.enums.DistributorReferralStatus;
 import com.haha.entity.DistributorReferral;
 import com.haha.service.DistributorConfigService;
 import com.haha.service.DistributorReferralService;
@@ -47,13 +48,13 @@ public class DistributorTask {
             }
             LocalDateTime expireThreshold = LocalDateTime.now().minusDays(windowDays);
             LambdaQueryWrapper<DistributorReferral> wrapper = new LambdaQueryWrapper<>();
-            wrapper.eq(DistributorReferral::getStatus, 0)
+            wrapper.eq(DistributorReferral::getStatus, DistributorReferralStatus.PENDING.getCode())
                    .le(DistributorReferral::getCreateTime, expireThreshold)
                    .isNotNull(DistributorReferral::getExpireTime)
                    .le(DistributorReferral::getExpireTime, LocalDateTime.now());
             List<DistributorReferral> expiredReferrals = referralService.list(wrapper);
             for (DistributorReferral referral : expiredReferrals) {
-                referral.setStatus(2);
+                referral.setStatus(DistributorReferralStatus.EXPIRED.getCode());
                 referralService.updateById(referral);
             }
             log.info("[分销定时任务] 过期推荐关系处理完成 - count: {}", expiredReferrals.size());

+ 52 - 0
haha-common/src/main/java/com/haha/common/enums/DistributorCommissionStatus.java

@@ -0,0 +1,52 @@
+package com.haha.common.enums;
+
+import com.haha.common.vo.StatusLabel;
+import lombok.Getter;
+
+/**
+ * 分销佣金状态枚举
+ */
+@Getter
+public enum DistributorCommissionStatus {
+
+    PENDING(0, "待结算", "info"),
+    SETTLED(1, "已结算", "success");
+
+    private final int code;
+    private final String label;
+    private final String color;
+
+    DistributorCommissionStatus(int code, String label, String color) {
+        this.code = code;
+        this.label = label;
+        this.color = color;
+    }
+
+    public StatusLabel getStatusLabel() {
+        return new StatusLabel(label, color);
+    }
+
+    public static StatusLabel getLabelByCode(Integer code) {
+        if (code == null) {
+            return StatusLabel.info("未知");
+        }
+        for (DistributorCommissionStatus status : values()) {
+            if (status.code == code) {
+                return status.getStatusLabel();
+            }
+        }
+        return StatusLabel.info("未知");
+    }
+
+    public static DistributorCommissionStatus getByCode(Integer code) {
+        if (code == null) {
+            return null;
+        }
+        for (DistributorCommissionStatus status : values()) {
+            if (status.code == code) {
+                return status;
+            }
+        }
+        return null;
+    }
+}

+ 53 - 0
haha-common/src/main/java/com/haha/common/enums/DistributorReferralStatus.java

@@ -0,0 +1,53 @@
+package com.haha.common.enums;
+
+import com.haha.common.vo.StatusLabel;
+import lombok.Getter;
+
+/**
+ * 分销推荐状态枚举
+ */
+@Getter
+public enum DistributorReferralStatus {
+
+    PENDING(0, "待生效", "info"),
+    ACTIVE(1, "有效", "success"),
+    EXPIRED(2, "已过期", "warning");
+
+    private final int code;
+    private final String label;
+    private final String color;
+
+    DistributorReferralStatus(int code, String label, String color) {
+        this.code = code;
+        this.label = label;
+        this.color = color;
+    }
+
+    public StatusLabel getStatusLabel() {
+        return new StatusLabel(label, color);
+    }
+
+    public static StatusLabel getLabelByCode(Integer code) {
+        if (code == null) {
+            return StatusLabel.info("未知");
+        }
+        for (DistributorReferralStatus status : values()) {
+            if (status.code == code) {
+                return status.getStatusLabel();
+            }
+        }
+        return StatusLabel.info("未知");
+    }
+
+    public static DistributorReferralStatus getByCode(Integer code) {
+        if (code == null) {
+            return null;
+        }
+        for (DistributorReferralStatus status : values()) {
+            if (status.code == code) {
+                return status;
+            }
+        }
+        return null;
+    }
+}

+ 61 - 0
haha-common/src/main/java/com/haha/common/enums/DistributorStatus.java

@@ -0,0 +1,61 @@
+package com.haha.common.enums;
+
+import com.haha.common.vo.StatusLabel;
+import lombok.Getter;
+
+/**
+ * 分销员状态枚举
+ */
+@Getter
+public enum DistributorStatus {
+
+    PENDING(0, "待激活", "info"),
+    ACTIVE(1, "已激活", "success"),
+    DISABLED(2, "已停用", "danger");
+
+    private final int code;
+    private final String label;
+    private final String color;
+
+    DistributorStatus(int code, String label, String color) {
+        this.code = code;
+        this.label = label;
+        this.color = color;
+    }
+
+    public StatusLabel getStatusLabel() {
+        return new StatusLabel(label, color);
+    }
+
+    public static StatusLabel getLabelByCode(Integer code) {
+        if (code == null) {
+            return StatusLabel.info("未知");
+        }
+        for (DistributorStatus status : values()) {
+            if (status.code == code) {
+                return status.getStatusLabel();
+            }
+        }
+        return StatusLabel.info("未知");
+    }
+
+    public static DistributorStatus getByCode(Integer code) {
+        if (code == null) {
+            return null;
+        }
+        for (DistributorStatus status : values()) {
+            if (status.code == code) {
+                return status;
+            }
+        }
+        return null;
+    }
+
+    public static boolean isPending(Integer code) {
+        return code != null && code == PENDING.code;
+    }
+
+    public static boolean isActive(Integer code) {
+        return code != null && code == ACTIVE.code;
+    }
+}

+ 54 - 0
haha-common/src/main/java/com/haha/common/enums/DistributorWithdrawalStatus.java

@@ -0,0 +1,54 @@
+package com.haha.common.enums;
+
+import com.haha.common.vo.StatusLabel;
+import lombok.Getter;
+
+/**
+ * 分销提现状态枚举
+ */
+@Getter
+public enum DistributorWithdrawalStatus {
+
+    PENDING(0, "待审核", "info"),
+    APPROVED(1, "已通过", "success"),
+    REJECTED(2, "已拒绝", "danger"),
+    COMPLETED(3, "已完成", "primary");
+
+    private final int code;
+    private final String label;
+    private final String color;
+
+    DistributorWithdrawalStatus(int code, String label, String color) {
+        this.code = code;
+        this.label = label;
+        this.color = color;
+    }
+
+    public StatusLabel getStatusLabel() {
+        return new StatusLabel(label, color);
+    }
+
+    public static StatusLabel getLabelByCode(Integer code) {
+        if (code == null) {
+            return StatusLabel.info("未知");
+        }
+        for (DistributorWithdrawalStatus status : values()) {
+            if (status.code == code) {
+                return status.getStatusLabel();
+            }
+        }
+        return StatusLabel.info("未知");
+    }
+
+    public static DistributorWithdrawalStatus getByCode(Integer code) {
+        if (code == null) {
+            return null;
+        }
+        for (DistributorWithdrawalStatus status : values()) {
+            if (status.code == code) {
+                return status;
+            }
+        }
+        return null;
+    }
+}

+ 39 - 0
haha-common/src/main/java/com/haha/common/enums/RefundStatus.java

@@ -0,0 +1,39 @@
+package com.haha.common.enums;
+
+import lombok.Getter;
+
+/**
+ * 退款状态枚举
+ */
+@Getter
+public enum RefundStatus {
+
+    PENDING("PENDING", "待审核"),
+    REFUNDED("REFUNDED", "已退款"),
+    REJECTED("REJECTED", "已拒绝");
+
+    private final String code;
+    private final String description;
+
+    RefundStatus(String code, String description) {
+        this.code = code;
+        this.description = description;
+    }
+
+    public static RefundStatus fromCode(String code) {
+        if (code == null) {
+            return null;
+        }
+        for (RefundStatus status : values()) {
+            if (status.code.equals(code)) {
+                return status;
+            }
+        }
+        return null;
+    }
+
+    public static String getDescription(String code) {
+        RefundStatus status = fromCode(code);
+        return status != null ? status.description : "未知";
+    }
+}

+ 53 - 0
haha-common/src/main/java/com/haha/common/enums/StockRecordStatus.java

@@ -0,0 +1,53 @@
+package com.haha.common.enums;
+
+import com.haha.common.vo.StatusLabel;
+import lombok.Getter;
+
+/**
+ * 上货记录状态枚举
+ */
+@Getter
+public enum StockRecordStatus {
+
+    IN_PROGRESS(1, "进行中", "primary"),
+    COMPLETED(2, "已完成", "success"),
+    CANCELLED(3, "已取消", "danger");
+
+    private final int code;
+    private final String label;
+    private final String color;
+
+    StockRecordStatus(int code, String label, String color) {
+        this.code = code;
+        this.label = label;
+        this.color = color;
+    }
+
+    public StatusLabel getStatusLabel() {
+        return new StatusLabel(label, color);
+    }
+
+    public static StatusLabel getLabelByCode(Integer code) {
+        if (code == null) {
+            return StatusLabel.info("未知");
+        }
+        for (StockRecordStatus status : values()) {
+            if (status.code == code) {
+                return status.getStatusLabel();
+            }
+        }
+        return StatusLabel.info("未知");
+    }
+
+    public static StockRecordStatus getByCode(Integer code) {
+        if (code == null) {
+            return null;
+        }
+        for (StockRecordStatus status : values()) {
+            if (status.code == code) {
+                return status;
+            }
+        }
+        return null;
+    }
+}

+ 1 - 1
haha-miniapp/src/main/java/com/haha/miniapp/controller/PaymentController.java

@@ -106,7 +106,7 @@ public class PaymentController {
                 }
             }
 
-            if ("wechat".equalsIgnoreCase(channel)) {
+            if (PaymentChannel.WECHAT.getCode().equalsIgnoreCase(channel)) {
                 params = RequestParseUtil.parseWechatPayCallbackParams(request);
 
                 String body = (String) params.get("body");

+ 4 - 3
haha-service/src/main/java/com/haha/service/impl/CouponTemplateServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.haha.common.enums.ApplyScopeEnum;
+import com.haha.common.enums.CommonStatus;
 import com.haha.common.enums.CouponTypeEnum;
 import com.haha.common.enums.ValidTypeEnum;
 import com.haha.common.exception.BusinessException;
@@ -97,7 +98,7 @@ public class CouponTemplateServiceImpl extends ServiceImpl<CouponTemplateMapper,
         template.setProductScope(dto.getProductScope());
         template.setActivityId(dto.getActivityId());
         template.setReceiveType(dto.getReceiveType() != null ? dto.getReceiveType() : "Release");
-        template.setStatus(1);
+        template.setStatus(CommonStatus.ENABLED.getCode());
         template.setCreatorId(creatorId);
         template.setCreatorName(creatorName);
         template.setDeleted(0);
@@ -241,7 +242,7 @@ public class CouponTemplateServiceImpl extends ServiceImpl<CouponTemplateMapper,
     }
 
     private void saveCouponProducts(Long templateId, List<Long> productIds, Integer productScope) {
-        if (productScope != null && productScope == 2
+        if (productScope != null && productScope == ApplyScopeEnum.SPECIFIED_SHOP.getCode()
                 && productIds != null && !productIds.isEmpty()) {
             for (Long productId : productIds) {
                 CouponProduct couponProduct = new CouponProduct();
@@ -259,7 +260,7 @@ public class CouponTemplateServiceImpl extends ServiceImpl<CouponTemplateMapper,
         StatusLabel validTypeLabel = ValidTypeEnum.getLabelByCode(template.getValidType());
         template.setValidTypeLabel(validTypeLabel.getLabel());
 
-        StatusLabel statusLabel = com.haha.common.enums.CommonStatus.getLabelByCode(template.getStatus());
+        StatusLabel statusLabel = CommonStatus.getLabelByCode(template.getStatus());
         template.setStatusLabel(statusLabel.getLabel());
         template.setStatusColor(statusLabel.getColor());
     }

+ 6 - 4
haha-service/src/main/java/com/haha/service/impl/DashboardServiceImpl.java

@@ -1,7 +1,9 @@
 package com.haha.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.haha.common.constant.DeviceConstants;
 import com.haha.common.constant.OrderConstants;
+import com.haha.common.enums.CommonStatus;
 import com.haha.entity.Device;
 import com.haha.entity.Order;
 import com.haha.entity.Shop;
@@ -105,7 +107,7 @@ public class DashboardServiceImpl implements DashboardService {
         // 设备状态统计
         long totalDevices = deviceService.count();
         long onlineDevices = deviceService.lambdaQuery()
-                .eq(Device::getStatus, 1) // status=1 为正常/在线
+                .eq(Device::getStatus, DeviceConstants.STATUS_ONLINE)
                 .count();
         long offlineDevices = totalDevices - onlineDevices;
         
@@ -161,7 +163,7 @@ public class DashboardServiceImpl implements DashboardService {
         // 门店统计
         long totalShops = shopService.count();
         long activeShops = shopService.lambdaQuery()
-                .eq(Shop::getStatus, 1)
+                .eq(Shop::getStatus, CommonStatus.ENABLED.getCode())
                 .count();
         result.put("totalShops", totalShops);
         result.put("activeShops", activeShops);
@@ -381,7 +383,7 @@ public class DashboardServiceImpl implements DashboardService {
 
         // 设备不在线数
         long offlineDevices = deviceService.lambdaQuery()
-                .ne(Device::getStatus, 1)
+                .ne(Device::getStatus, DeviceConstants.STATUS_ONLINE)
                 .count();
         result.put("offlineDevices", offlineDevices);
 
@@ -453,7 +455,7 @@ public class DashboardServiceImpl implements DashboardService {
         List<Map<String, Object>> result = new ArrayList<>();
 
         long onlineDevices = deviceService.lambdaQuery()
-                .eq(Device::getStatus, 1)
+                .eq(Device::getStatus, DeviceConstants.STATUS_ONLINE)
                 .count();
         long totalDevices = deviceService.count();
         long offlineDevices = totalDevices - onlineDevices;

+ 4 - 3
haha-service/src/main/java/com/haha/service/impl/DataPermissionServiceImpl.java

@@ -1,6 +1,7 @@
 package com.haha.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.haha.common.enums.CommonStatus;
 import com.haha.common.vo.Result;
 import com.haha.entity.DataPermission;
 import com.haha.mapper.DataPermissionMapper;
@@ -149,7 +150,7 @@ public class DataPermissionServiceImpl extends ServiceImpl<DataPermissionMapper,
     @Override
     public boolean existsByPermissionCode(String permissionCode) {
         DataPermission permission = dataPermissionMapper.selectByPermissionCode(permissionCode);
-        return permission != null && permission.getStatus() == 1;
+        return permission != null && permission.getStatus() == CommonStatus.ENABLED.getCode();
     }
 
     @Override
@@ -164,7 +165,7 @@ public class DataPermissionServiceImpl extends ServiceImpl<DataPermissionMapper,
             permission.setCreateTime(LocalDateTime.now());
             permission.setUpdateTime(LocalDateTime.now());
             if (permission.getStatus() == null) {
-                permission.setStatus(1);
+                permission.setStatus(CommonStatus.ENABLED.getCode());
             }
 
             boolean success = this.save(permission);
@@ -224,7 +225,7 @@ public class DataPermissionServiceImpl extends ServiceImpl<DataPermissionMapper,
                 return Result.error(404, "权限不存在");
             }
 
-            if (status != 0 && status != 1) {
+            if (status != CommonStatus.DISABLED.getCode() && status != CommonStatus.ENABLED.getCode()) {
                 return Result.error(400, "状态值无效");
             }
 

+ 2 - 1
haha-service/src/main/java/com/haha/service/impl/DictServiceImpl.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.haha.common.enums.CommonStatus;
 import com.haha.common.constant.ResponseEnum;
 import com.haha.common.constant.RedisConstants;
 import com.haha.common.exception.BusinessException;
@@ -258,7 +259,7 @@ public class DictServiceImpl extends ServiceImpl<DictTypeMapper, DictType> imple
         }
 
         LambdaQueryWrapper<DictType> typeWrapper = new LambdaQueryWrapper<>();
-        typeWrapper.eq(DictType::getStatus, 1);
+        typeWrapper.eq(DictType::getStatus, CommonStatus.ENABLED.getCode());
         typeWrapper.orderByAsc(DictType::getSortOrder);
         List<DictType> dictTypes = dictTypeMapper.selectList(typeWrapper);
 

+ 8 - 11
haha-service/src/main/java/com/haha/service/impl/DistributorCommissionServiceImpl.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.haha.common.enums.DistributorCommissionStatus;
+import com.haha.common.enums.DistributorReferralStatus;
 import com.haha.common.vo.StatusLabel;
 import com.haha.entity.Distributor;
 import com.haha.entity.DistributorCommission;
@@ -45,12 +47,12 @@ public class DistributorCommissionServiceImpl extends ServiceImpl<DistributorCom
         if (referral == null) {
             return;
         }
-        if (referral.getStatus() != 0) {
+        if (referral.getStatus() != DistributorReferralStatus.PENDING.getCode()) {
             return;
         }
         LocalDateTime now = LocalDateTime.now();
         if (referral.getExpireTime() != null && now.isAfter(referral.getExpireTime())) {
-            referral.setStatus(2);
+            referral.setStatus(DistributorReferralStatus.EXPIRED.getCode());
             referral.setUpdateTime(now);
             referralService.updateById(referral);
             return;
@@ -73,7 +75,7 @@ public class DistributorCommissionServiceImpl extends ServiceImpl<DistributorCom
                 isValidUser = true;
         }
         if (isValidUser) {
-            referral.setStatus(1);
+            referral.setStatus(DistributorReferralStatus.ACTIVE.getCode());
             referral.setFirstOrderId(orderId);
             referral.setFirstOrderAmount(orderAmount);
             referral.setFirstOrderTime(now);
@@ -103,7 +105,7 @@ public class DistributorCommissionServiceImpl extends ServiceImpl<DistributorCom
             fixedCommission.setAmount(fixedCommissionAmount);
             fixedCommission.setOrderAmount(null);
             fixedCommission.setRate(null);
-            fixedCommission.setStatus(0);
+            fixedCommission.setStatus(DistributorCommissionStatus.PENDING.getCode());
             fixedCommission.setCreateTime(LocalDateTime.now());
             commissions.add(fixedCommission);
         }
@@ -122,7 +124,7 @@ public class DistributorCommissionServiceImpl extends ServiceImpl<DistributorCom
             rateCommission.setAmount(commissionAmount);
             rateCommission.setOrderAmount(orderAmount);
             rateCommission.setRate(firstOrderCommissionRate);
-            rateCommission.setStatus(0);
+            rateCommission.setStatus(DistributorCommissionStatus.PENDING.getCode());
             rateCommission.setCreateTime(LocalDateTime.now());
             commissions.add(rateCommission);
         }
@@ -183,12 +185,7 @@ public class DistributorCommissionServiceImpl extends ServiceImpl<DistributorCom
             }
         }
         if (commission.getStatus() != null) {
-            StatusLabel statusLabel = switch (commission.getStatus()) {
-                case 0 -> StatusLabel.warning("待结算");
-                case 1 -> StatusLabel.success("已结算");
-                case 2 -> StatusLabel.info("已冻结");
-                default -> StatusLabel.info("未知");
-            };
+            StatusLabel statusLabel = DistributorCommissionStatus.getLabelByCode(commission.getStatus());
             commission.setStatusLabel(statusLabel.getLabel());
         }
         if (commission.getDistributorId() != null) {

+ 4 - 14
haha-service/src/main/java/com/haha/service/impl/DistributorReferralServiceImpl.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.haha.common.enums.DistributorReferralStatus;
 import com.haha.common.exception.BusinessException;
 import com.haha.entity.Distributor;
 import com.haha.entity.DistributorReferral;
@@ -66,7 +67,7 @@ public class DistributorReferralServiceImpl extends ServiceImpl<DistributorRefer
         DistributorReferral referral = new DistributorReferral();
         referral.setDistributorId(distributor.getId());
         referral.setUserId(userId);
-        referral.setStatus(0);
+        referral.setStatus(DistributorReferralStatus.PENDING.getCode());
 
         Integer validTimeWindowDays = configService.getValidTimeWindowDays();
         if (validTimeWindowDays != null && validTimeWindowDays > 0) {
@@ -114,19 +115,8 @@ public class DistributorReferralServiceImpl extends ServiceImpl<DistributorRefer
         }
 
         if (referral.getStatus() != null) {
-            switch (referral.getStatus()) {
-                case 0:
-                    referral.setStatusLabel("待生效");
-                    break;
-                case 1:
-                    referral.setStatusLabel("已生效");
-                    break;
-                case 2:
-                    referral.setStatusLabel("已失效");
-                    break;
-                default:
-                    referral.setStatusLabel("未知");
-            }
+            com.haha.common.vo.StatusLabel label = DistributorReferralStatus.getLabelByCode(referral.getStatus());
+            referral.setStatusLabel(label.getLabel());
         }
 
         if (referral.getDistributorId() != null) {

+ 10 - 7
haha-service/src/main/java/com/haha/service/impl/DistributorReportServiceImpl.java

@@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.haha.common.enums.DistributorCommissionStatus;
+import com.haha.common.enums.DistributorReferralStatus;
+import com.haha.common.enums.DistributorStatus;
 import com.haha.common.exception.BusinessException;
 import com.haha.entity.Distributor;
 import com.haha.entity.DistributorCommission;
@@ -45,7 +48,7 @@ public class DistributorReportServiceImpl extends ServiceImpl<DistributorMonthly
     @Transactional(rollbackFor = Exception.class)
     public void generateMonthlyReport(String yearMonth) {
         LambdaQueryWrapper<Distributor> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(Distributor::getStatus, 1);
+        wrapper.eq(Distributor::getStatus, DistributorStatus.ACTIVE.getCode());
         wrapper.eq(Distributor::getDeleted, 0);
         List<Distributor> distributors = distributorMapper.selectList(wrapper);
 
@@ -79,19 +82,19 @@ public class DistributorReportServiceImpl extends ServiceImpl<DistributorMonthly
 
         LambdaQueryWrapper<DistributorReferral> validReferralWrapper = new LambdaQueryWrapper<>();
         validReferralWrapper.eq(DistributorReferral::getDistributorId, distributorId);
-        validReferralWrapper.eq(DistributorReferral::getStatus, 1);
+        validReferralWrapper.eq(DistributorReferral::getStatus, DistributorReferralStatus.ACTIVE.getCode());
         validReferralWrapper.apply("DATE_FORMAT(effective_time, '%Y-%m') = {0}", yearMonth);
         Long validReferrals = referralMapper.selectCount(validReferralWrapper);
 
         LambdaQueryWrapper<DistributorReferral> pendingReferralWrapper = new LambdaQueryWrapper<>();
         pendingReferralWrapper.eq(DistributorReferral::getDistributorId, distributorId);
-        pendingReferralWrapper.eq(DistributorReferral::getStatus, 0);
+        pendingReferralWrapper.eq(DistributorReferral::getStatus, DistributorReferralStatus.PENDING.getCode());
         pendingReferralWrapper.apply("DATE_FORMAT(create_time, '%Y-%m') = {0}", yearMonth);
         Long pendingReferrals = referralMapper.selectCount(pendingReferralWrapper);
 
         LambdaQueryWrapper<DistributorReferral> expiredReferralWrapper = new LambdaQueryWrapper<>();
         expiredReferralWrapper.eq(DistributorReferral::getDistributorId, distributorId);
-        expiredReferralWrapper.eq(DistributorReferral::getStatus, 2);
+        expiredReferralWrapper.eq(DistributorReferral::getStatus, DistributorReferralStatus.EXPIRED.getCode());
         expiredReferralWrapper.apply("DATE_FORMAT(update_time, '%Y-%m') = {0}", yearMonth);
         Long expiredReferrals = referralMapper.selectCount(expiredReferralWrapper);
 
@@ -105,7 +108,7 @@ public class DistributorReportServiceImpl extends ServiceImpl<DistributorMonthly
 
         LambdaQueryWrapper<DistributorCommission> settledCommissionWrapper = new LambdaQueryWrapper<>();
         settledCommissionWrapper.eq(DistributorCommission::getDistributorId, distributorId);
-        settledCommissionWrapper.eq(DistributorCommission::getStatus, 1);
+        settledCommissionWrapper.eq(DistributorCommission::getStatus, DistributorCommissionStatus.SETTLED.getCode());
         settledCommissionWrapper.apply("DATE_FORMAT(settle_time, '%Y-%m') = {0}", yearMonth);
         List<DistributorCommission> settledCommissions = commissionMapper.selectList(settledCommissionWrapper);
         BigDecimal settledCommission = settledCommissions.stream()
@@ -114,7 +117,7 @@ public class DistributorReportServiceImpl extends ServiceImpl<DistributorMonthly
 
         LambdaQueryWrapper<DistributorCommission> pendingCommissionWrapper = new LambdaQueryWrapper<>();
         pendingCommissionWrapper.eq(DistributorCommission::getDistributorId, distributorId);
-        pendingCommissionWrapper.eq(DistributorCommission::getStatus, 0);
+        pendingCommissionWrapper.eq(DistributorCommission::getStatus, DistributorCommissionStatus.PENDING.getCode());
         pendingCommissionWrapper.apply("DATE_FORMAT(create_time, '%Y-%m') = {0}", yearMonth);
         List<DistributorCommission> pendingCommissions = commissionMapper.selectList(pendingCommissionWrapper);
         BigDecimal pendingCommission = pendingCommissions.stream()
@@ -163,7 +166,7 @@ public class DistributorReportServiceImpl extends ServiceImpl<DistributorMonthly
                     new LambdaQueryWrapper<Distributor>().eq(Distributor::getDeleted, 0));
 
             Long activeDistributors = distributorMapper.selectCount(
-                    new LambdaQueryWrapper<Distributor>().eq(Distributor::getStatus, 1).eq(Distributor::getDeleted, 0));
+                    new LambdaQueryWrapper<Distributor>().eq(Distributor::getStatus, DistributorStatus.ACTIVE.getCode()).eq(Distributor::getDeleted, 0));
 
             List<Distributor> allDistributors = distributorMapper.selectList(
                     new LambdaQueryWrapper<Distributor>().eq(Distributor::getDeleted, 0));

+ 7 - 11
haha-service/src/main/java/com/haha/service/impl/DistributorServiceImpl.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.haha.common.enums.DistributorStatus;
 import com.haha.common.exception.BusinessException;
 import com.haha.common.vo.StatusLabel;
 import com.haha.entity.Distributor;
@@ -53,7 +54,7 @@ public class DistributorServiceImpl extends ServiceImpl<DistributorMapper, Distr
         distributor.setCode(code);
         distributor.setName(dto.getName());
         distributor.setPhone(dto.getPhone());
-        distributor.setStatus(0);
+        distributor.setStatus(DistributorStatus.PENDING.getCode());
         distributor.setRemark(dto.getRemark());
         distributor.setCreatorId(creatorId);
         distributor.setCreatorName(creatorName);
@@ -104,11 +105,11 @@ public class DistributorServiceImpl extends ServiceImpl<DistributorMapper, Distr
         if (distributor == null || distributor.getDeleted() == 1) {
             throw new BusinessException(404, "分销员不存在");
         }
-        if (distributor.getStatus() != 0) {
+        if (!DistributorStatus.isPending(distributor.getStatus())) {
             throw new BusinessException(400, "当前状态不允许激活");
         }
 
-        distributor.setStatus(1);
+        distributor.setStatus(DistributorStatus.ACTIVE.getCode());
         distributor.setUpdateTime(LocalDateTime.now());
         this.updateById(distributor);
 
@@ -125,11 +126,11 @@ public class DistributorServiceImpl extends ServiceImpl<DistributorMapper, Distr
         if (distributor == null || distributor.getDeleted() == 1) {
             throw new BusinessException(404, "分销员不存在");
         }
-        if (distributor.getStatus() != 1) {
+        if (!DistributorStatus.isActive(distributor.getStatus())) {
             throw new BusinessException(400, "当前状态不允许停用");
         }
 
-        distributor.setStatus(2);
+        distributor.setStatus(DistributorStatus.DISABLED.getCode());
         distributor.setUpdateTime(LocalDateTime.now());
         this.updateById(distributor);
 
@@ -193,12 +194,7 @@ public class DistributorServiceImpl extends ServiceImpl<DistributorMapper, Distr
         if (distributor.getStatus() == null) {
             return;
         }
-        StatusLabel statusLabel = switch (distributor.getStatus()) {
-            case 0 -> StatusLabel.info("待激活");
-            case 1 -> StatusLabel.success("已激活");
-            case 2 -> StatusLabel.danger("已停用");
-            default -> null;
-        };
+        StatusLabel statusLabel = DistributorStatus.getLabelByCode(distributor.getStatus());
         if (statusLabel != null) {
             distributor.setStatusLabel(statusLabel.getLabel());
         }

+ 10 - 15
haha-service/src/main/java/com/haha/service/impl/DistributorWithdrawalServiceImpl.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.haha.common.enums.DistributorWithdrawalStatus;
 import com.haha.common.exception.BusinessException;
 import com.haha.common.vo.StatusLabel;
 import com.haha.entity.Distributor;
@@ -53,7 +54,7 @@ public class DistributorWithdrawalServiceImpl extends ServiceImpl<DistributorWit
         DistributorWithdrawal withdrawal = new DistributorWithdrawal();
         withdrawal.setDistributorId(distributorId);
         withdrawal.setAmount(amount);
-        withdrawal.setStatus(0);
+        withdrawal.setStatus(DistributorWithdrawalStatus.PENDING.getCode());
         withdrawal.setCreateTime(LocalDateTime.now());
         withdrawal.setUpdateTime(LocalDateTime.now());
 
@@ -71,7 +72,7 @@ public class DistributorWithdrawalServiceImpl extends ServiceImpl<DistributorWit
             throw new BusinessException(404, "提现申请不存在");
         }
 
-        if (withdrawal.getStatus() != 0) {
+        if (withdrawal.getStatus() != DistributorWithdrawalStatus.PENDING.getCode()) {
             throw new BusinessException(400, "该申请已处理");
         }
 
@@ -80,10 +81,10 @@ public class DistributorWithdrawalServiceImpl extends ServiceImpl<DistributorWit
         withdrawal.setReviewTime(LocalDateTime.now());
         withdrawal.setReviewRemark(dto.getReviewRemark());
 
-        if (dto.getStatus() == 1) {
-            withdrawal.setStatus(1);
-        } else if (dto.getStatus() == 2) {
-            withdrawal.setStatus(2);
+        if (dto.getStatus() == DistributorWithdrawalStatus.APPROVED.getCode()) {
+            withdrawal.setStatus(DistributorWithdrawalStatus.APPROVED.getCode());
+        } else if (dto.getStatus() == DistributorWithdrawalStatus.REJECTED.getCode()) {
+            withdrawal.setStatus(DistributorWithdrawalStatus.REJECTED.getCode());
             distributorMapper.unfreezeAmount(withdrawal.getDistributorId(), withdrawal.getAmount());
         }
 
@@ -102,11 +103,11 @@ public class DistributorWithdrawalServiceImpl extends ServiceImpl<DistributorWit
             throw new BusinessException(404, "提现申请不存在");
         }
 
-        if (withdrawal.getStatus() != 1) {
+        if (withdrawal.getStatus() != DistributorWithdrawalStatus.APPROVED.getCode()) {
             throw new BusinessException(400, "提现申请未通过审核");
         }
 
-        withdrawal.setStatus(3);
+        withdrawal.setStatus(DistributorWithdrawalStatus.COMPLETED.getCode());
         withdrawal.setTransferTime(LocalDateTime.now());
         withdrawal.setUpdateTime(LocalDateTime.now());
 
@@ -146,13 +147,7 @@ public class DistributorWithdrawalServiceImpl extends ServiceImpl<DistributorWit
         }
 
         if (withdrawal.getStatus() != null) {
-            StatusLabel statusLabel = switch (withdrawal.getStatus()) {
-                case 0 -> StatusLabel.warning("待审核");
-                case 1 -> StatusLabel.success("已通过");
-                case 2 -> StatusLabel.danger("已拒绝");
-                case 3 -> StatusLabel.info("已到账");
-                default -> null;
-            };
+            StatusLabel statusLabel = DistributorWithdrawalStatus.getLabelByCode(withdrawal.getStatus());
             if (statusLabel != null) {
                 withdrawal.setStatusLabel(statusLabel.getLabel());
             }

+ 47 - 43
haha-service/src/main/java/com/haha/service/impl/HahaCallbackServiceImpl.java

@@ -5,10 +5,15 @@ import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
 import com.haha.common.config.CommonConfig;
 import com.haha.common.constant.RedisConstants;
+import com.haha.common.enums.ApplyScopeEnum;
+import com.haha.common.enums.CouponTypeEnum;
 import com.haha.common.enums.DeviceDoorStatus;
+import com.haha.common.enums.DeviceOnlineStatus;
+import com.haha.common.enums.OpenType;
 import com.haha.common.enums.PayScoreState;
 import com.haha.common.enums.PaymentChannel;
 import com.haha.common.enums.ProductAuditStatus;
+import com.haha.common.enums.RecognizeActionType;
 import com.haha.common.enums.RecognizeConsumeType;
 import com.haha.entity.Order;
 import com.haha.entity.Device;
@@ -185,7 +190,7 @@ public class HahaCallbackServiceImpl implements HahaCallbackService {
                 return;
             }
 
-            log.info("设备在线状态通知 - 设备: {}, 在线状态: {}", deviceId, isOnline == 1 ? "在线" : "离线");
+            log.info("设备在线状态通知 - 设备: {}, 在线状态: {}", deviceId, DeviceOnlineStatus.isOnline(isOnline) ? "在线" : "离线");
 
             String onlineKey = "device:online:" + deviceId;
             stringRedisTemplate.opsForValue().set(onlineKey, isOnline.toString(), 10, TimeUnit.MINUTES);
@@ -199,10 +204,10 @@ public class HahaCallbackServiceImpl implements HahaCallbackService {
             }
             Integer latestSignalVal = extractLatestValue(signalVals);
 
-            if (isOnline == 0) {
+            if (isOnline == DeviceOnlineStatus.OFFLINE.getCode()) {
                 // 设备离线 -> 触发离线告警
                 deviceAlertService.processOfflineAlert(deviceId, "CALLBACK");
-            } else if (isOnline == 1) {
+            } else if (isOnline == DeviceOnlineStatus.ONLINE.getCode()) {
                 // 设备上线 -> 检查是否为新设备,自动同步
                 Device localDevice = deviceMapper.selectByDeviceId(deviceId);
                 if (localDevice == null) {
@@ -409,7 +414,7 @@ public class HahaCallbackServiceImpl implements HahaCallbackService {
             log.info("订单类型设置成功 - orderId: {}, orderType: {}", order.getId(), recognizeType);
 
             // IN类型(异物放入)触发告警,提醒管理员审核
-            if ("IN".equals(recognizeType)) {
+            if (RecognizeActionType.IN.getCode().equals(recognizeType)) {
                 String alertContent = String.format("AI识别到异物放入(IN类型),订单号:%s", order.getOrderNo());
                 log.warn("[异常订单] {} - orderId: {}", alertContent, order.getId());
                 try {
@@ -792,17 +797,17 @@ public class HahaCallbackServiceImpl implements HahaCallbackService {
             order.setOrderName(orderName);
             // 根据订单名称判断订单类型:包含"放入"的为IN类型(异物放入),其他为OUT类型(正常消费)
             if (orderName.contains("放入")) {
-                order.setOrderType("IN");
+                order.setOrderType(OpenType.IN.getCode());
             }
         }
 
         // 如果订单类型仍为空,默认为OUT(正常消费)
         if (order.getOrderType() == null || order.getOrderType().isEmpty()) {
-            order.setOrderType("OUT");
+            order.setOrderType(OpenType.OUT.getCode());
         }
 
         // IN类型订单触发告警(基于订单名称判断)
-        if ("IN".equals(order.getOrderType())) {
+        if (OpenType.IN.getCode().equals(order.getOrderType())) {
             String alertContent = String.format("订单回调识别为IN类型(异物放入),订单名称:%s", orderName);
             log.warn("[异常订单] {} - orderId: {}, orderNo: {}", alertContent, order.getId(), orderId);
             try {
@@ -1023,16 +1028,16 @@ public class HahaCallbackServiceImpl implements HahaCallbackService {
      */
     private String extractRecognizeType(String resultStr) {
         if (resultStr == null || resultStr.isEmpty()) {
-            return "OUT";
+            return RecognizeActionType.OUT.getCode();
         }
         try {
             JSONObject result = JSON.parseObject(resultStr);
             String type = result.getString("type");
             if ("IN".equalsIgnoreCase(type)) {
                 log.info("识别结果类型为IN(放入) - 非正常消费订单");
-                return "IN";
+                return RecognizeActionType.IN.getCode();
             }
-            return "OUT";
+            return RecognizeActionType.OUT.getCode();
         } catch (Exception e) {
             log.warn("解析识别结果类型失败,默认为OUT", e);
             return "OUT";
@@ -1213,12 +1218,12 @@ public class HahaCallbackServiceImpl implements HahaCallbackService {
 
             // 2. 检查适用范围
             Integer applyScope = coupon.getApplyScope();
-            if (applyScope == null || applyScope == 1) {
+            if (applyScope == null || applyScope == ApplyScopeEnum.ALL_SHOP.getCode()) {
                 // 全场通用,直接返回true
                 return true;
             }
 
-            if (applyScope == 2) {
+            if (applyScope == ApplyScopeEnum.SPECIFIED_SHOP.getCode()) {
                 // 指定门店范围,检查订单设备所属门店
                 // 这里简化处理,假设所有门店都适用
                 // TODO: 根据实际业务需求,检查订单设备是否属于优惠券指定门店
@@ -1226,7 +1231,7 @@ public class HahaCallbackServiceImpl implements HahaCallbackService {
                 return true;
             }
 
-            if (applyScope == 3) {
+            if (applyScope == ApplyScopeEnum.SPECIFIED_SHOP.getCode()) {
                 // 指定商品范围,检查订单商品是否匹配
                 // TODO: 根据订单商品列表检查是否包含优惠券指定的商品
                 log.debug("优惠券为指定商品范围,当前简化处理为适用 - couponId: {}", coupon.getId());
@@ -1263,42 +1268,41 @@ public class HahaCallbackServiceImpl implements HahaCallbackService {
                 return BigDecimal.ZERO;
             }
 
-            switch (couponType) {
-                case 1: // 满减券
-                case 3: // 抵扣券
-                    // 直接返回优惠金额
-                    return discountValue;
-
-                case 2: // 折扣券
-                    // discountValue 表示折扣,如8表示8折
-                    // 优惠金额 = orderAmount * (1 - discountValue/10)
-                    BigDecimal discount = discountValue.divide(new BigDecimal("10"), 2, RoundingMode.HALF_UP);
-                    BigDecimal discountAmount = orderAmount.multiply(BigDecimal.ONE.subtract(discount));
-                    
-                    // 检查是否有最大优惠限制(需要从CouponTemplate获取)
-                    try {
-                        CouponTemplate template = couponTemplateService.getById(coupon.getTemplateId());
-                        if (template != null && template.getMaxDiscount() != null && 
-                            template.getMaxDiscount().compareTo(BigDecimal.ZERO) > 0) {
-                            if (discountAmount.compareTo(template.getMaxDiscount()) > 0) {
-                                discountAmount = template.getMaxDiscount();
-                            }
+            if (couponType == CouponTypeEnum.FULL_REDUCTION.getCode() || couponType == CouponTypeEnum.INSTANT_REDUCTION.getCode()) {
+                // 直接返回优惠金额
+                return discountValue;
+            }
+
+            if (couponType == CouponTypeEnum.DISCOUNT.getCode()) {
+                // discountValue 表示折扣,如8表示8折
+                // 优惠金额 = orderAmount * (1 - discountValue/10)
+                BigDecimal discount = discountValue.divide(new BigDecimal("10"), 2, RoundingMode.HALF_UP);
+                BigDecimal discountAmount = orderAmount.multiply(BigDecimal.ONE.subtract(discount));
+
+                // 检查是否有最大优惠限制(需要从CouponTemplate获取)
+                try {
+                    CouponTemplate template = couponTemplateService.getById(coupon.getTemplateId());
+                    if (template != null && template.getMaxDiscount() != null &&
+                        template.getMaxDiscount().compareTo(BigDecimal.ZERO) > 0) {
+                        if (discountAmount.compareTo(template.getMaxDiscount()) > 0) {
+                            discountAmount = template.getMaxDiscount();
                         }
-                    } catch (Exception e) {
-                        log.warn("获取优惠券模板最大优惠限制失败 - templateId: {}", coupon.getTemplateId(), e);
                     }
-                    
-                    return discountAmount;
+                } catch (Exception e) {
+                    log.warn("获取优惠券模板最大优惠限制失败 - templateId: {}", coupon.getTemplateId(), e);
+                }
 
-                case 4: // 兑换券
-                    // 兑换券不用于金额扣减
-                    return BigDecimal.ZERO;
+                return discountAmount;
+            }
 
-                default:
-                    log.warn("未知的优惠券类型 - couponType: {}", couponType);
-                    return BigDecimal.ZERO;
+            if (couponType == CouponTypeEnum.PRODUCT.getCode()) {
+                // 兑换券不用于金额扣减
+                return BigDecimal.ZERO;
             }
 
+            log.warn("未知的优惠券类型 - couponType: {}", couponType);
+            return BigDecimal.ZERO;
+
         } catch (Exception e) {
             log.error("计算优惠券优惠金额异常 - couponId: {}", coupon.getId(), e);
             return BigDecimal.ZERO;

+ 2 - 1
haha-service/src/main/java/com/haha/service/impl/InviteActivityServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.haha.common.enums.ActivityStatusEnum;
+import com.haha.common.enums.ApplyScopeEnum;
 import com.haha.common.enums.InviteRewardStatusEnum;
 import com.haha.common.enums.InviteStatusEnum;
 import com.haha.common.exception.BusinessException;
@@ -1255,7 +1256,7 @@ public class InviteActivityServiceImpl extends ServiceImpl<InviteActivityMapper,
 
         // 适用范围标签(如果有枚举的话,这里简单处理)
         if (activity.getApplyScope() != null) {
-            activity.setApplyScopeLabel(activity.getApplyScope() == 1 ? "全平台" : "指定门店");
+            activity.setApplyScopeLabel(ApplyScopeEnum.getLabelByCode(activity.getApplyScope()).getLabel());
         }
 
         // 商品范围标签

+ 2 - 1
haha-service/src/main/java/com/haha/service/impl/LoginServiceImpl.java

@@ -1,6 +1,7 @@
 package com.haha.service.impl;
 
 import cn.dev33.satoken.stp.StpUtil;
+import com.haha.common.enums.CommonStatus;
 import com.haha.common.vo.Result;
 import com.haha.entity.User;
 import com.haha.service.LoginService;
@@ -74,7 +75,7 @@ public class LoginServiceImpl implements LoginService {
                 user.setPhone(phoneNumber);
                 user.setOpenid(openid);
                 user.setNickname("用户" + phoneNumber.substring(7));
-                user.setStatus(1);
+                user.setStatus(CommonStatus.ENABLED.getCode());
                 user.setCreditScore(100);
                 userService.save(user);
                 log.info("[登录服务] 创建新用户 - userId: {}, phone: {}, openid: {}", 

+ 11 - 10
haha-service/src/main/java/com/haha/service/impl/MarketingActivityServiceImpl.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.haha.common.constant.CommonConstants;
 import com.haha.common.enums.ActivityStatusEnum;
 import com.haha.common.enums.ActivityTypeEnum;
 import com.haha.common.enums.ApplyScopeEnum;
@@ -55,7 +56,7 @@ public class MarketingActivityServiceImpl extends ServiceImpl<MarketingActivityM
         wrapper.eq(queryDTO.getCreatorId() != null, MarketingActivity::getCreatorId, queryDTO.getCreatorId());
         wrapper.ge(queryDTO.getStartTimeBegin() != null, MarketingActivity::getStartTime, queryDTO.getStartTimeBegin());
         wrapper.le(queryDTO.getStartTimeEnd() != null, MarketingActivity::getStartTime, queryDTO.getStartTimeEnd());
-        wrapper.eq(MarketingActivity::getDeleted, 0);
+        wrapper.eq(MarketingActivity::getDeleted, CommonConstants.NOT_DELETED);
         wrapper.orderByDesc(MarketingActivity::getCreateTime);
 
         IPage<MarketingActivity> result = this.page(page, wrapper);
@@ -67,7 +68,7 @@ public class MarketingActivityServiceImpl extends ServiceImpl<MarketingActivityM
     @Override
     public MarketingActivity getDetail(Long id) {
         MarketingActivity activity = this.getById(id);
-        if (activity == null || activity.getDeleted() == 1) {
+        if (activity == null || activity.getDeleted() == CommonConstants.DELETED) {
             throw new BusinessException(404, "活动不存在");
         }
         fillLabels(activity);
@@ -94,7 +95,7 @@ public class MarketingActivityServiceImpl extends ServiceImpl<MarketingActivityM
         activity.setUsedBudget(BigDecimal.ZERO);
         activity.setCreatorId(creatorId);
         activity.setCreatorName(creatorName);
-        activity.setDeleted(0);
+        activity.setDeleted(CommonConstants.NOT_DELETED);
 
         this.save(activity);
 
@@ -110,7 +111,7 @@ public class MarketingActivityServiceImpl extends ServiceImpl<MarketingActivityM
     @Transactional(rollbackFor = Exception.class)
     public MarketingActivity update(ActivityUpdateDTO dto) {
         MarketingActivity activity = this.getById(dto.getId());
-        if (activity == null || activity.getDeleted() == 1) {
+        if (activity == null || activity.getDeleted() == CommonConstants.DELETED) {
             throw new BusinessException(404, "活动不存在");
         }
 
@@ -147,7 +148,7 @@ public class MarketingActivityServiceImpl extends ServiceImpl<MarketingActivityM
     @Transactional(rollbackFor = Exception.class)
     public boolean publish(Long id) {
         MarketingActivity activity = this.getById(id);
-        if (activity == null || activity.getDeleted() == 1) {
+        if (activity == null || activity.getDeleted() == CommonConstants.DELETED) {
             throw new BusinessException(404, "活动不存在");
         }
 
@@ -172,7 +173,7 @@ public class MarketingActivityServiceImpl extends ServiceImpl<MarketingActivityM
     @Transactional(rollbackFor = Exception.class)
     public boolean pause(Long id) {
         MarketingActivity activity = this.getById(id);
-        if (activity == null || activity.getDeleted() == 1) {
+        if (activity == null || activity.getDeleted() == CommonConstants.DELETED) {
             throw new BusinessException(404, "活动不存在");
         }
 
@@ -192,7 +193,7 @@ public class MarketingActivityServiceImpl extends ServiceImpl<MarketingActivityM
     @Transactional(rollbackFor = Exception.class)
     public boolean resume(Long id) {
         MarketingActivity activity = this.getById(id);
-        if (activity == null || activity.getDeleted() == 1) {
+        if (activity == null || activity.getDeleted() == CommonConstants.DELETED) {
             throw new BusinessException(404, "活动不存在");
         }
 
@@ -220,7 +221,7 @@ public class MarketingActivityServiceImpl extends ServiceImpl<MarketingActivityM
             throw new BusinessException(400, "当前状态不允许删除");
         }
 
-        activity.setDeleted(1);
+        activity.setDeleted(CommonConstants.DELETED);
         boolean result = this.updateById(activity);
 
         if (result) {
@@ -274,7 +275,7 @@ public class MarketingActivityServiceImpl extends ServiceImpl<MarketingActivityM
     }
 
     private void saveActivityDevices(Long activityId, List<String> deviceIds, Integer deviceScope) {
-        if (deviceScope != null && deviceScope == 2
+        if (deviceScope != null && deviceScope == ApplyScopeEnum.SPECIFIED_SHOP.getCode()
                 && deviceIds != null && !deviceIds.isEmpty()) {
             for (String deviceId : deviceIds) {
                 ActivityDevice activityDevice = new ActivityDevice();
@@ -286,7 +287,7 @@ public class MarketingActivityServiceImpl extends ServiceImpl<MarketingActivityM
     }
 
     private void saveActivityProducts(Long activityId, List<Long> productIds, Integer productScope) {
-        if (productScope != null && productScope == 2
+        if (productScope != null && productScope == ApplyScopeEnum.SPECIFIED_SHOP.getCode()
                 && productIds != null && !productIds.isEmpty()) {
             for (Long productId : productIds) {
                 ActivityProduct activityProduct = new ActivityProduct();

+ 9 - 9
haha-service/src/main/java/com/haha/service/impl/MarketingRuleServiceImpl.java

@@ -86,16 +86,16 @@ public class MarketingRuleServiceImpl implements MarketingRuleService {
         }
 
         // 4. 根据活动类型计算优惠金额
-        switch (activity.getActivityType()) {
-            case 1:  // 首单立减
-                return calculateFirstOrderDiscount(order, activity);
-            case 2:  // 折扣价
-                return calculateDiscountPrice(order, activity);
-            case 3:  // 满减
-                return calculateFullReduction(order, activity);
-            default:
-                return BigDecimal.ZERO;
+        if (activity.getActivityType() == ActivityTypeEnum.FIRST_ORDER_DISCOUNT.getCode()) {
+            return calculateFirstOrderDiscount(order, activity);
         }
+        if (activity.getActivityType() == ActivityTypeEnum.DISCOUNT.getCode()) {
+            return calculateDiscountPrice(order, activity);
+        }
+        if (activity.getActivityType() == ActivityTypeEnum.FULL_REDUCTION.getCode()) {
+            return calculateFullReduction(order, activity);
+        }
+        return BigDecimal.ZERO;
     }
 
     /**

+ 1 - 1
haha-service/src/main/java/com/haha/service/impl/NewProductApplyServiceImpl.java

@@ -144,7 +144,7 @@ public class NewProductApplyServiceImpl extends ServiceImpl<NewProductApplyMappe
         // 设置申请人信息
         apply.setApplicantId(applicantId);
         apply.setApplicantName(applicantName);
-        apply.setStatus(1); // 审核中
+        apply.setStatus(ApplyStatus.PENDING.getCode());
         apply.setCreateTime(LocalDateTime.now());
         apply.setSubmitTime(LocalDateTime.now());
         

+ 5 - 4
haha-service/src/main/java/com/haha/service/impl/ReplenisherServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.haha.common.constant.RedisConstants;
+import com.haha.common.enums.CommonStatus;
 import com.haha.common.exception.BusinessException;
 import com.haha.common.vo.LoginVO;
 import com.haha.common.vo.Result;
@@ -83,7 +84,7 @@ public class ReplenisherServiceImpl extends ServiceImpl<ReplenisherMapper, Reple
         replenisher.setName(dto.getName());
         replenisher.setPhone(dto.getPhone());
         replenisher.setEmployeeId(dto.getEmployeeId());
-        replenisher.setStatus(1);
+        replenisher.setStatus(CommonStatus.ENABLED.getCode());
         replenisher.setTotalTasks(0);
         replenisher.setCreateTime(LocalDateTime.now());
         replenisher.setUpdateTime(LocalDateTime.now());
@@ -302,7 +303,7 @@ public class ReplenisherServiceImpl extends ServiceImpl<ReplenisherMapper, Reple
             }
 
             // 3. 检查状态
-            if (replenisher.getStatus() == null || replenisher.getStatus() == 0) {
+            if (replenisher.getStatus() == null || replenisher.getStatus() == CommonStatus.DISABLED.getCode()) {
                 log.warn("[补货员] 账号已被禁用: id={}, openid={}", replenisher.getId(), openid);
                 return Result.error(403, "您的账号已被禁用,请联系管理员");
             }
@@ -407,7 +408,7 @@ public class ReplenisherServiceImpl extends ServiceImpl<ReplenisherMapper, Reple
 
             // 6. 绑定微信openid + 激活账号
             replenisher.setWechatOpenid(openid);
-            replenisher.setStatus(1);
+            replenisher.setStatus(CommonStatus.ENABLED.getCode());
             replenisher.setUpdateTime(LocalDateTime.now());
             this.updateById(replenisher);
 
@@ -498,7 +499,7 @@ public class ReplenisherServiceImpl extends ServiceImpl<ReplenisherMapper, Reple
      */
     private void fillStatusLabel(Replenisher r) {
         if (r.getStatus() != null) {
-            if (r.getStatus() == 1) {
+            if (r.getStatus() == CommonStatus.ENABLED.getCode()) {
                 r.setStatusLabel("正常");
                 r.setStatusColor("success");
             } else {

+ 6 - 4
haha-service/src/main/java/com/haha/service/impl/ShopServiceImpl.java

@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.haha.common.constant.DeviceConstants;
+import com.haha.common.enums.CommonStatus;
 import com.haha.common.exception.BusinessException;
 import com.haha.common.vo.ShopDeviceVO;
 import com.haha.common.vo.ShopSelectVO;
@@ -161,7 +163,7 @@ public class ShopServiceImpl extends ServiceImpl<ShopMapper, Shop> implements Sh
         
         // 默认状态
         if (shop.getStatus() == null) {
-            shop.setStatus(1);
+            shop.setStatus(CommonStatus.ENABLED.getCode());
         }
         
         shop.setCreateTime(LocalDateTime.now());
@@ -226,7 +228,7 @@ public class ShopServiceImpl extends ServiceImpl<ShopMapper, Shop> implements Sh
 
         // 启用门店数
         long enabled = this.lambdaQuery()
-                .eq(Shop::getStatus, 1)
+                .eq(Shop::getStatus, CommonStatus.ENABLED.getCode())
                 .count();
 
         // 禁用门店数
@@ -237,7 +239,7 @@ public class ShopServiceImpl extends ServiceImpl<ShopMapper, Shop> implements Sh
 
         // 在线设备数
         long onlineDevices = deviceService.lambdaQuery()
-                .eq(Device::getStatus, 1)
+                .eq(Device::getStatus, DeviceConstants.STATUS_ONLINE)
                 .count();
 
         return ShopStatisticsVO.builder()
@@ -380,7 +382,7 @@ public class ShopServiceImpl extends ServiceImpl<ShopMapper, Shop> implements Sh
         // 统计在线设备数量
         long onlineCount = deviceService.lambdaQuery()
                 .eq(Device::getShopId, shop.getId())
-                .eq(Device::getStatus, 1)
+                .eq(Device::getStatus, DeviceConstants.STATUS_ONLINE)
                 .count();
         shop.setOnlineCount((int) onlineCount);
     }

+ 8 - 6
haha-service/src/main/java/com/haha/service/impl/StatisticsServiceImpl.java

@@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.haha.entity.dto.*;
+import com.haha.common.constant.DeviceConstants;
 import com.haha.common.constant.OrderConstants;
+import com.haha.common.enums.CommonStatus;
 import com.haha.entity.*;
 import com.haha.mapper.*;
 import com.haha.service.StatisticsService;
@@ -80,7 +82,7 @@ public class StatisticsServiceImpl implements StatisticsService {
         
         long totalDevices = deviceMapper.selectCount(null);
         long onlineDevices = deviceMapper.selectCount(
-                new LambdaQueryWrapper<Device>().eq(Device::getStatus, 1)
+                new LambdaQueryWrapper<Device>().eq(Device::getStatus, DeviceConstants.STATUS_ONLINE)
         );
         overview.setTotalDevices((int) totalDevices);
         overview.setOnlineDevices((int) onlineDevices);
@@ -413,7 +415,7 @@ public class StatisticsServiceImpl implements StatisticsService {
         
         long totalDevices = deviceMapper.selectCount(null);
         long onlineDevices = deviceMapper.selectCount(
-                new LambdaQueryWrapper<Device>().eq(Device::getStatus, 1)
+                new LambdaQueryWrapper<Device>().eq(Device::getStatus, DeviceConstants.STATUS_ONLINE)
         );
         
         result.put("totalDevices", totalDevices);
@@ -486,8 +488,8 @@ public class StatisticsServiceImpl implements StatisticsService {
             vo.setDeviceName(device.getName());
             vo.setShopId(device.getShopId());
             vo.setStatus(device.getStatus());
-            vo.setStatusLabel(device.getStatus() != null && device.getStatus() == 1 ? "在线" : "离线");
-            vo.setStatusColor(device.getStatus() != null && device.getStatus() == 1 ? "success" : "info");
+            vo.setStatusLabel(DeviceConstants.isOnline(device.getStatus()) ? "在线" : "离线");
+            vo.setStatusColor(DeviceConstants.isOnline(device.getStatus()) ? "success" : "info");
             
             List<Order> deviceOrders = deviceOrderMap.getOrDefault(device.getDeviceId(), Collections.emptyList());
             
@@ -599,7 +601,7 @@ public class StatisticsServiceImpl implements StatisticsService {
         
         long totalShops = shopMapper.selectCount(null);
         long activeShops = shopMapper.selectCount(
-                new LambdaQueryWrapper<Shop>().eq(Shop::getStatus, 1)
+                new LambdaQueryWrapper<Shop>().eq(Shop::getStatus, CommonStatus.ENABLED.getCode())
         );
         
         result.put("totalShops", totalShops);
@@ -668,7 +670,7 @@ public class StatisticsServiceImpl implements StatisticsService {
             vo.setDistrict(shop.getDistrict());
             vo.setAddress(shop.getAddress());
             vo.setStatus(shop.getStatus());
-            vo.setStatusLabel(shop.getStatus() != null && shop.getStatus() == 1 ? "启用" : "禁用");
+            vo.setStatusLabel(CommonStatus.isEnabled(shop.getStatus()) ? "启用" : "禁用");
             
             long deviceCount = deviceMapper.selectCount(
                     new LambdaQueryWrapper<Device>().eq(Device::getShopId, shop.getId())

+ 6 - 5
haha-service/src/main/java/com/haha/service/impl/StockRecordServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.haha.common.enums.StockRecordStatus;
 import com.haha.common.exception.BusinessException;
 import com.haha.entity.StockRecord;
 import com.haha.entity.dto.StockRecordQueryDTO;
@@ -78,7 +79,7 @@ public class StockRecordServiceImpl extends ServiceImpl<StockRecordMapper, Stock
         record.setStockerId(stockerId);
         record.setStockerName(stockerName);
         record.setStockerPhone(stockerPhone);
-        record.setStatus(1); // 进行中
+        record.setStatus(StockRecordStatus.IN_PROGRESS.getCode());
         record.setTotalItems(0);
         record.setTotalQuantity(0);
         record.setRemark(remark);
@@ -103,7 +104,7 @@ public class StockRecordServiceImpl extends ServiceImpl<StockRecordMapper, Stock
         record.setStockerId(replenisherId);
         record.setStockerName(replenisherName);
         record.setStockerPhone(replenisherPhone);
-        record.setStatus(1); // 进行中
+        record.setStatus(StockRecordStatus.IN_PROGRESS.getCode());
         record.setTotalItems(0);
         record.setTotalQuantity(0);
         record.setRemark(remark);
@@ -125,7 +126,7 @@ public class StockRecordServiceImpl extends ServiceImpl<StockRecordMapper, Stock
             throw new BusinessException(404, "上货记录不存在");
         }
 
-        record.setStatus(1); // 进行中
+        record.setStatus(StockRecordStatus.IN_PROGRESS.getCode());
         record.setStartTime(LocalDateTime.now());
         record.setUpdateTime(LocalDateTime.now());
         updateById(record);
@@ -139,7 +140,7 @@ public class StockRecordServiceImpl extends ServiceImpl<StockRecordMapper, Stock
             throw new BusinessException(404, "上货记录不存在");
         }
 
-        record.setStatus(2); // 已完成
+        record.setStatus(StockRecordStatus.COMPLETED.getCode());
         record.setActivityId(activityId);
         record.setTotalItems(totalItems);
         record.setTotalQuantity(totalQuantity);
@@ -158,7 +159,7 @@ public class StockRecordServiceImpl extends ServiceImpl<StockRecordMapper, Stock
             throw new BusinessException(404, "上货记录不存在");
         }
 
-        record.setStatus(3); // 已取消
+        record.setStatus(StockRecordStatus.CANCELLED.getCode());
         record.setEndTime(LocalDateTime.now());
         record.setUpdateTime(LocalDateTime.now());
         updateById(record);

+ 5 - 5
haha-service/src/main/java/com/haha/service/impl/TimedDiscountServiceImpl.java

@@ -516,14 +516,14 @@ public class TimedDiscountServiceImpl extends ServiceImpl<TimedDiscountActivityM
     private List<Long> getTargetShopIds(TimedDiscountActivity activity) {
         if (activity.getApplyScope() == ApplyScopeEnum.ALL_SHOP.getCode()) {
             LambdaQueryWrapper<Shop> wrapper = new LambdaQueryWrapper<>();
-            wrapper.eq(Shop::getStatus, 1);
+            wrapper.eq(Shop::getStatus, CommonStatus.ENABLED.getCode());
             return shopMapper.selectList(wrapper).stream().map(Shop::getId).collect(Collectors.toList());
         }
         return getActivityShopIds(activity.getId());
     }
 
     private List<String> getProductTypes(TimedDiscountActivity activity) {
-        if (activity.getProductScope() == 1) {
+        if (activity.getProductScope() == ApplyScopeEnum.ALL_SHOP.getCode()) {
             return null;
         }
         if (StringUtils.hasText(activity.getProductTypes())) {
@@ -619,7 +619,7 @@ public class TimedDiscountServiceImpl extends ServiceImpl<TimedDiscountActivityM
     }
 
     private void saveActivityDevices(Long activityId, List<String> deviceIds, Integer deviceScope) {
-        if (deviceScope != null && deviceScope == 2
+        if (deviceScope != null && deviceScope == ApplyScopeEnum.SPECIFIED_SHOP.getCode()
                 && deviceIds != null && !deviceIds.isEmpty()) {
             for (String deviceId : deviceIds) {
                 TimedDiscountDevice discountDevice = new TimedDiscountDevice();
@@ -672,9 +672,9 @@ public class TimedDiscountServiceImpl extends ServiceImpl<TimedDiscountActivityM
         activity.setApplyScopeLabel(applyScopeLabel.getLabel());
 
         if (activity.getProductScope() != null) {
-            if (activity.getProductScope() == 1) {
+            if (activity.getProductScope() == ApplyScopeEnum.ALL_SHOP.getCode()) {
                 activity.setProductScopeLabel("全部商品");
-            } else if (activity.getProductScope() == 2) {
+            } else if (activity.getProductScope() == ApplyScopeEnum.SPECIFIED_SHOP.getCode()) {
                 activity.setProductScopeLabel("指定分类");
             } else {
                 activity.setProductScopeLabel("指定商品");

+ 18 - 18
haha-service/src/main/java/com/haha/service/impl/UnifiedActivityServiceImpl.java

@@ -62,7 +62,7 @@ public class UnifiedActivityServiceImpl implements UnifiedActivityService {
         Long creatorId = 1L;  // 默认值,实际应从 SecurityContext 获取
         String creatorName = "系统管理员";  // 默认值,实际应从 SecurityContext 获取
 
-        if (dto.getActivityType() == 4) {
+        if (dto.getActivityType() == ActivityTypeEnum.INVITE_REWARD.getCode()) {
             log.info("[统一活动] 路由到邀请活动服务");
             InviteActivityCreateDTO inviteDTO = convertToInviteCreateDTO(dto);
             InviteActivity activity = inviteActivityService.create(inviteDTO, creatorId, creatorName);
@@ -72,7 +72,7 @@ public class UnifiedActivityServiceImpl implements UnifiedActivityService {
                     dto.getInviterCouponTemplateId(), dto.getInviteeCouponTemplateId());
 
             return activity.getId();
-        } else if (dto.getActivityType() >= 1 && dto.getActivityType() <= 3) {
+        } else if (dto.getActivityType() >= ActivityTypeEnum.FIRST_ORDER_DISCOUNT.getCode() && dto.getActivityType() <= ActivityTypeEnum.FULL_REDUCTION.getCode()) {
             log.info("[统一活动] 路由到营销活动服务");
             ActivityCreateDTO marketingDTO = convertToMarketingCreateDTO(dto);
             MarketingActivity activity = marketingActivityService.create(marketingDTO, creatorId, creatorName);
@@ -88,7 +88,7 @@ public class UnifiedActivityServiceImpl implements UnifiedActivityService {
 
         Integer type = getActivityTypeFromUpdateDTO(dto);
 
-        if (type == 4) {
+        if (type == ActivityTypeEnum.INVITE_REWARD.getCode()) {
             log.info("[统一活动] 路由到邀请活动服务进行更新");
 
             // 【Task 8】更新前获取旧的优惠券模板ID,用于后续清理旧关联
@@ -111,7 +111,7 @@ public class UnifiedActivityServiceImpl implements UnifiedActivityService {
             syncCouponTemplateAssociation(dto.getId(),
                     oldInviterCouponId, oldInviteeCouponId,
                     dto.getInviterCouponTemplateId(), dto.getInviteeCouponTemplateId());
-        } else if (type >= 1 && type <= 3) {
+        } else if (type >= ActivityTypeEnum.FIRST_ORDER_DISCOUNT.getCode() && type <= ActivityTypeEnum.FULL_REDUCTION.getCode()) {
             log.info("[统一活动] 路由到营销活动服务进行更新");
             ActivityUpdateDTO marketingDTO = convertToMarketingUpdateDTO(dto);
             marketingActivityService.update(marketingDTO);
@@ -125,14 +125,14 @@ public class UnifiedActivityServiceImpl implements UnifiedActivityService {
         log.info("[统一活动] 分页查询 - type: {}, page: {}, size: {}",
                 queryDTO.getActivityType(), queryDTO.getPage(), queryDTO.getPageSize());
 
-        if (queryDTO.getActivityType() != null && queryDTO.getActivityType() == 4) {
+        if (queryDTO.getActivityType() != null && queryDTO.getActivityType() == ActivityTypeEnum.INVITE_REWARD.getCode()) {
             // 仅查询邀请活动,并转换为统一 VO 格式
             log.info("[统一活动] 查询邀请活动列表");
             InviteRecordQueryDTO inviteQuery = convertToInviteQuery(queryDTO);
             IPage<InviteActivity> page = inviteActivityService.getPage(inviteQuery);
             return convertInvitePageToUnified(page);
         } else if (queryDTO.getActivityType() == null ||
-                (queryDTO.getActivityType() >= 1 && queryDTO.getActivityType() <= 3)) {
+                (queryDTO.getActivityType() >= ActivityTypeEnum.FIRST_ORDER_DISCOUNT.getCode() && queryDTO.getActivityType() <= ActivityTypeEnum.FULL_REDUCTION.getCode())) {
             // 查询营销活动 (type 1-3 或全部)
             log.info("[统一活动] 查询营销活动列表");
             ActivityQueryDTO marketingQuery = convertToMarketingQuery(queryDTO);
@@ -147,11 +147,11 @@ public class UnifiedActivityServiceImpl implements UnifiedActivityService {
     public UnifiedActivityVO getDetail(Long id, Integer type) {
         log.info("[统一活动] 查询详情 - id: {}, type: {}", id, type);
 
-        if (type == 4) {
+        if (type == ActivityTypeEnum.INVITE_REWARD.getCode()) {
             log.info("[统一活动] 从邀请活动服务获取详情");
             InviteActivity activity = inviteActivityService.getDetail(id);
             return convertInviteToUnifiedVO(activity);
-        } else if (type >= 1 && type <= 3) {
+        } else if (type >= ActivityTypeEnum.FIRST_ORDER_DISCOUNT.getCode() && type <= ActivityTypeEnum.FULL_REDUCTION.getCode()) {
             log.info("[统一活动] 从营销活动服务获取详情");
             MarketingActivity activity = marketingActivityService.getDetail(id);
             return convertMarketingToUnifiedVO(activity);
@@ -166,10 +166,10 @@ public class UnifiedActivityServiceImpl implements UnifiedActivityService {
     public void publish(Long id, Integer type) {
         log.info("[统一活动] 发布活动 - id: {}, type: {}", id, type);
 
-        if (type == 4) {
+        if (type == ActivityTypeEnum.INVITE_REWARD.getCode()) {
             boolean result = inviteActivityService.publish(id);
             logPublishResult(id, type, result);
-        } else if (type >= 1 && type <= 3) {
+        } else if (type >= ActivityTypeEnum.FIRST_ORDER_DISCOUNT.getCode() && type <= ActivityTypeEnum.FULL_REDUCTION.getCode()) {
             boolean result = marketingActivityService.publish(id);
             logPublishResult(id, type, result);
         } else {
@@ -181,10 +181,10 @@ public class UnifiedActivityServiceImpl implements UnifiedActivityService {
     public void pause(Long id, Integer type) {
         log.info("[统一活动] 暂停活动 - id: {}, type: {}", id, type);
 
-        if (type == 4) {
+        if (type == ActivityTypeEnum.INVITE_REWARD.getCode()) {
             boolean result = inviteActivityService.pause(id);
             logOperationResult("暂停", id, type, result);
-        } else if (type >= 1 && type <= 3) {
+        } else if (type >= ActivityTypeEnum.FIRST_ORDER_DISCOUNT.getCode() && type <= ActivityTypeEnum.FULL_REDUCTION.getCode()) {
             boolean result = marketingActivityService.pause(id);
             logOperationResult("暂停", id, type, result);
         } else {
@@ -196,10 +196,10 @@ public class UnifiedActivityServiceImpl implements UnifiedActivityService {
     public void resume(Long id, Integer type) {
         log.info("[统一活动] 恢复活动 - id: {}, type: {}", id, type);
 
-        if (type == 4) {
+        if (type == ActivityTypeEnum.INVITE_REWARD.getCode()) {
             boolean result = inviteActivityService.resume(id);
             logOperationResult("恢复", id, type, result);
-        } else if (type >= 1 && type <= 3) {
+        } else if (type >= ActivityTypeEnum.FIRST_ORDER_DISCOUNT.getCode() && type <= ActivityTypeEnum.FULL_REDUCTION.getCode()) {
             boolean result = marketingActivityService.resume(id);
             logOperationResult("恢复", id, type, result);
         } else {
@@ -213,7 +213,7 @@ public class UnifiedActivityServiceImpl implements UnifiedActivityService {
     public void delete(Long id, Integer type) {
         log.info("[统一活动] 删除活动 - id: {}, type: {}", id, type);
 
-        if (type == 4) {
+        if (type == ActivityTypeEnum.INVITE_REWARD.getCode()) {
             // 【Task 8】删除前清理关联的优惠券模板 activityId
             try {
                 InviteActivity existingActivity = inviteActivityService.getDetail(id);
@@ -228,7 +228,7 @@ public class UnifiedActivityServiceImpl implements UnifiedActivityService {
 
             boolean result = inviteActivityService.deleteActivity(id);
             logOperationResult("删除", id, type, result);
-        } else if (type >= 1 && type <= 3) {
+        } else if (type >= ActivityTypeEnum.FIRST_ORDER_DISCOUNT.getCode() && type <= ActivityTypeEnum.FULL_REDUCTION.getCode()) {
             boolean result = marketingActivityService.deleteActivity(id);
             logOperationResult("删除", id, type, result);
         } else {
@@ -463,7 +463,7 @@ public class UnifiedActivityServiceImpl implements UnifiedActivityService {
         return UnifiedActivityVO.builder()
                 .id(activity.getId())
                 .activityName(activity.getActivityName())
-                .activityType(4)  // 邀请活动固定为 type 4
+                .activityType(ActivityTypeEnum.INVITE_REWARD.getCode())
                 .activityTypeName(ActivityTypeEnum.INVITE_REWARD.getLabel())
                 .activityDesc(activity.getActivityDesc())
                 .startTime(activity.getStartTime())
@@ -505,7 +505,7 @@ public class UnifiedActivityServiceImpl implements UnifiedActivityService {
             InviteActivity inviteActivity = inviteActivityService.getById(id);
             if (inviteActivity != null && inviteActivity.getDeleted() != null && inviteActivity.getDeleted() == 0) {
                 log.info("[统一活动] 从邀请活动表查到活动类型: id={}, type=4", id);
-                return 4;
+                return ActivityTypeEnum.INVITE_REWARD.getCode();
             }
         } catch (Exception e) {
             log.debug("[统一活动] 邀请活动表未找到该记录: id={}", id);

+ 5 - 3
haha-service/src/main/java/com/haha/service/impl/UserCouponServiceImpl.java

@@ -6,9 +6,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.haha.common.constant.MarketingConstants;
+import com.haha.common.enums.CommonStatus;
 import com.haha.common.enums.CouponStatusEnum;
 import com.haha.common.enums.DistributeTypeEnum;
 import com.haha.common.enums.TargetTypeEnum;
+import com.haha.common.enums.ValidTypeEnum;
 import com.haha.common.exception.BusinessException;
 import com.haha.entity.CouponDistribute;
 import com.haha.entity.CouponTemplate;
@@ -94,7 +96,7 @@ public class UserCouponServiceImpl extends ServiceImpl<UserCouponMapper, UserCou
                 log.warn("[优惠券服务] 领取优惠券失败 - 模板不存在, templateId: {}", templateId);
                 throw new BusinessException(404, "优惠券不存在");
             }
-            if (template.getStatus() != 1) {
+            if (template.getStatus() != CommonStatus.ENABLED.getCode()) {
                 log.warn("[优惠券服务] 领取优惠券失败 - 模板已禁用, templateId: {}", templateId);
                 throw new BusinessException(400, "优惠券已禁用");
             }
@@ -123,7 +125,7 @@ public class UserCouponServiceImpl extends ServiceImpl<UserCouponMapper, UserCou
             userCoupon.setReceiveTime(LocalDateTime.now());
             userCoupon.setDiscountAmount(template.getDiscountValue());
 
-            if (template.getValidType() == 1) {
+            if (template.getValidType() == ValidTypeEnum.FIXED_TIME.getCode()) {
                 userCoupon.setValidStartTime(template.getValidStartTime());
                 userCoupon.setValidEndTime(template.getValidEndTime());
             } else {
@@ -190,7 +192,7 @@ public class UserCouponServiceImpl extends ServiceImpl<UserCouponMapper, UserCou
                 userCoupon.setReceiveTime(LocalDateTime.now());
                 userCoupon.setDiscountAmount(template.getDiscountValue());
 
-                if (template.getValidType() == 1) {
+                if (template.getValidType() == ValidTypeEnum.FIXED_TIME.getCode()) {
                     userCoupon.setValidStartTime(template.getValidStartTime());
                     userCoupon.setValidEndTime(template.getValidEndTime());
                 } else {

+ 13 - 15
haha-service/src/main/java/com/haha/service/impl/UserServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.haha.entity.dto.UserQueryDTO;
+import com.haha.common.enums.CommonStatus;
 import com.haha.common.enums.UserTag;
 import com.haha.entity.User;
 import com.haha.mapper.UserMapper;
@@ -85,11 +86,11 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         stats.put("total", total);
         
         // 正常用户数
-        long active = lambdaQuery().eq(User::getStatus, 1).count();
+        long active = lambdaQuery().eq(User::getStatus, CommonStatus.ENABLED.getCode()).count();
         stats.put("active", active);
-        
+
         // 禁用用户数
-        long disabled = lambdaQuery().eq(User::getStatus, 0).count();
+        long disabled = lambdaQuery().eq(User::getStatus, CommonStatus.DISABLED.getCode()).count();
         stats.put("disabled", disabled);
         
         // 新增用户数(今日)
@@ -124,18 +125,15 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
 
             // 状态标签
             if (user.getStatus() != null) {
-                switch (user.getStatus()) {
-                    case 1:
-                        user.setStatusLabel("正常");
-                        user.setStatusColor("success");
-                        break;
-                    case 0:
-                        user.setStatusLabel("禁用");
-                        user.setStatusColor("danger");
-                        break;
-                    default:
-                        user.setStatusLabel("未知");
-                        user.setStatusColor("info");
+                if (user.getStatus() == CommonStatus.ENABLED.getCode()) {
+                    user.setStatusLabel("正常");
+                    user.setStatusColor("success");
+                } else if (user.getStatus() == CommonStatus.DISABLED.getCode()) {
+                    user.setStatusLabel("禁用");
+                    user.setStatusColor("danger");
+                } else {
+                    user.setStatusLabel("未知");
+                    user.setStatusColor("info");
                 }
             }
         }

+ 2 - 1
haha-service/src/main/java/com/haha/service/payment/impl/PaymentServiceImpl.java

@@ -2,6 +2,7 @@ package com.haha.service.payment.impl;
 
 import com.haha.common.constant.OrderConstants;
 import com.haha.common.enums.PaymentChannel;
+import com.haha.common.enums.RefundStatus;
 import com.haha.entity.Order;
 import com.haha.service.AccountService;
 import com.haha.service.OrderService;
@@ -528,7 +529,7 @@ public class PaymentServiceImpl implements PaymentService {
             }
         }
 
-        order.setRefundStatus("REFUNDED");
+        order.setRefundStatus(RefundStatus.REFUNDED.getCode());
         order.setRefundAmount(refundAmount);
         order.setRefundTime(LocalDateTime.now());
         order.setRefundReason(reason);

+ 3 - 2
haha-service/src/main/java/com/haha/service/payment/payscore/impl/PayScoreServiceImpl.java

@@ -7,6 +7,7 @@ import com.haha.common.enums.OrderStatus;
 import com.haha.common.enums.PayScoreState;
 import com.haha.common.enums.PayStatus;
 import com.haha.common.enums.PaymentChannel;
+import com.haha.common.enums.RefundStatus;
 import com.haha.entity.Order;
 import com.haha.entity.User;
 import com.haha.service.OrderService;
@@ -314,7 +315,7 @@ public class PayScoreServiceImpl implements PayScoreService {
             log.info("[支付分服务] 用户完成支付 - orderId: {}, amount: {}元, transactionId: {}",
                     order.getId(), result.getTotalAmount(), result.getTransactionId());
         } else if ("PAYSCORE.REFUND_PAID".equals(eventType)) {
-            order.setRefundStatus("REFUNDED");
+            order.setRefundStatus(RefundStatus.REFUNDED.getCode());
             order.setPayStatus(OrderConstants.PAY_STATUS_REFUND);
             order.setRefundTime(result.getPayTime() != null ? result.getPayTime() : LocalDateTime.now());
             if (result.getTotalAmount() != null) {
@@ -569,7 +570,7 @@ public class PayScoreServiceImpl implements PayScoreService {
         PayScoreResult result = payScoreStrategy.refundServiceOrder(request);
 
         if (result.isSuccess()) {
-            order.setRefundStatus("REFUNDED");
+            order.setRefundStatus(RefundStatus.REFUNDED.getCode());
             order.setRefundAmount(actualRefundAmount);
             order.setRefundTime(LocalDateTime.now());
             order.setRefundReason(reason);