浏览代码

fix: 全面消除遗漏的魔法值,统一使用枚举和常量

- DoorRecordServiceImpl: 使用DeviceDoorStatus/RecognizeConsumeType替换"OPENED"/"CLOSED"字符串和0/1
- HahaCallbackServiceImpl: 使用RecognizeActionType替换"IN"/"OUT"字符串
- DataSyncServiceImpl: 消除重复的同步状态局部常量,改用SyncConstants;设备状态映射改用DeviceConstants/DeviceOnlineStatus
- AnnouncementServiceImpl: 消除重复的公告状态局部常量,改用AnnouncementConstants
- 全局替换setDeleted/getDeleted/deleted查询中的0/1魔法值为CommonConstants.NOT_DELETED/DELETED
- InviteActivityServiceImpl: 使用ActivityStatusEnum替换活动状态魔法值
- PaymentServiceImpl/WxPayScoreStrategy/PayScoreServiceImpl: 使用PayScoreState/PayStatus替换状态魔法字符串
- OrderServiceImpl: 使用PaymentChannel替换"wechat"/"alipay"字符串
- StatisticsServiceImpl: 使用UserTag替换"new"字符串
- 其他遗漏: CheckinRecord/DataSyncController/DistributorReferral等文件

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
skyline 2 周之前
父节点
当前提交
386eff4d01
共有 22 个文件被更改,包括 121 次插入112 次删除
  1. 3 2
      haha-admin/src/main/java/com/haha/admin/controller/DataSyncController.java
  2. 7 11
      haha-service/src/main/java/com/haha/service/impl/AnnouncementServiceImpl.java
  3. 1 1
      haha-service/src/main/java/com/haha/service/impl/CheckinRecordServiceImpl.java
  4. 6 5
      haha-service/src/main/java/com/haha/service/impl/CouponTemplateServiceImpl.java
  5. 20 24
      haha-service/src/main/java/com/haha/service/impl/DataSyncServiceImpl.java
  6. 2 1
      haha-service/src/main/java/com/haha/service/impl/DistributorQrcodeServiceImpl.java
  7. 4 2
      haha-service/src/main/java/com/haha/service/impl/DistributorReferralServiceImpl.java
  8. 5 4
      haha-service/src/main/java/com/haha/service/impl/DistributorReportServiceImpl.java
  9. 9 8
      haha-service/src/main/java/com/haha/service/impl/DistributorServiceImpl.java
  10. 8 6
      haha-service/src/main/java/com/haha/service/impl/DoorRecordServiceImpl.java
  11. 2 2
      haha-service/src/main/java/com/haha/service/impl/HahaCallbackServiceImpl.java
  12. 18 17
      haha-service/src/main/java/com/haha/service/impl/InviteActivityServiceImpl.java
  13. 2 1
      haha-service/src/main/java/com/haha/service/impl/MarketingRuleServiceImpl.java
  14. 6 5
      haha-service/src/main/java/com/haha/service/impl/MenuServiceImpl.java
  15. 2 2
      haha-service/src/main/java/com/haha/service/impl/OrderServiceImpl.java
  16. 2 1
      haha-service/src/main/java/com/haha/service/impl/StatisticsServiceImpl.java
  17. 8 7
      haha-service/src/main/java/com/haha/service/impl/TimedDiscountServiceImpl.java
  18. 2 1
      haha-service/src/main/java/com/haha/service/impl/UnifiedActivityServiceImpl.java
  19. 3 2
      haha-service/src/main/java/com/haha/service/impl/UserCouponServiceImpl.java
  20. 3 3
      haha-service/src/main/java/com/haha/service/payment/impl/PaymentServiceImpl.java
  21. 1 1
      haha-service/src/main/java/com/haha/service/payment/payscore/impl/PayScoreServiceImpl.java
  22. 7 6
      haha-service/src/main/java/com/haha/service/payment/payscore/impl/WxPayScoreStrategy.java

+ 3 - 2
haha-admin/src/main/java/com/haha/admin/controller/DataSyncController.java

@@ -3,6 +3,7 @@ package com.haha.admin.controller;
 import cn.dev33.satoken.stp.StpUtil;
 import com.haha.admin.annotation.RequirePermission;
 import com.haha.common.annotation.Log;
+import com.haha.common.constant.SyncConstants;
 import com.haha.common.enums.OperationType;
 import com.haha.common.vo.Result;
 import com.haha.entity.SyncRecord;
@@ -49,7 +50,7 @@ public class DataSyncController {
 
             SyncRecord record = dataSyncService.syncDevices(operatorId, operatorName);
             
-            if (record.getStatus() == 3) {
+            if (record.getStatus() == SyncConstants.STATUS_SYNC_FAILED) {
                 return Result.error("同步失败: " + record.getErrorMessage());
             }
             return Result.success(record);
@@ -84,7 +85,7 @@ public class DataSyncController {
 
             SyncRecord record = dataSyncService.syncProducts(operatorId, operatorName);
             
-            if (record.getStatus() == 3) {
+            if (record.getStatus() == SyncConstants.STATUS_SYNC_FAILED) {
                 return Result.error("同步失败: " + record.getErrorMessage());
             }
             return Result.success(record);

+ 7 - 11
haha-service/src/main/java/com/haha/service/impl/AnnouncementServiceImpl.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.AnnouncementConstants;
 import com.haha.entity.dto.AnnouncementQueryDTO;
 import com.haha.entity.Announcement;
 import com.haha.mapper.AnnouncementMapper;
@@ -34,11 +35,6 @@ public class AnnouncementServiceImpl extends ServiceImpl<AnnouncementMapper, Ann
     public static final int TYPE_MAINTENANCE = 3; // 维护公告
     public static final int TYPE_OTHER = 4;       // 其他
 
-    // 公告状态
-    public static final int STATUS_DRAFT = 0;     // 草稿
-    public static final int STATUS_PUBLISHED = 1; // 已发布
-    public static final int STATUS_OFFLINE = 2;   // 已下线
-
     @Override
     public IPage<Announcement> getPage(int page, int pageSize, AnnouncementQueryDTO queryDTO) {
         LambdaQueryWrapper<Announcement> wrapper = new LambdaQueryWrapper<>();
@@ -80,7 +76,7 @@ public class AnnouncementServiceImpl extends ServiceImpl<AnnouncementMapper, Ann
             return false;
         }
 
-        announcement.setStatus(STATUS_PUBLISHED);
+        announcement.setStatus(AnnouncementConstants.STATUS_PUBLISHED);
         announcement.setPublishTime(LocalDateTime.now());
         announcement.setPublisherId(publisherId);
         announcement.setPublisherName(publisherName);
@@ -97,7 +93,7 @@ public class AnnouncementServiceImpl extends ServiceImpl<AnnouncementMapper, Ann
             return false;
         }
 
-        announcement.setStatus(STATUS_OFFLINE);
+        announcement.setStatus(AnnouncementConstants.STATUS_OFFLINE);
         announcement.setOfflineTime(LocalDateTime.now());
         announcement.setUpdateTime(LocalDateTime.now());
 
@@ -121,7 +117,7 @@ public class AnnouncementServiceImpl extends ServiceImpl<AnnouncementMapper, Ann
     @Override
     public List<Announcement> getAppList(int limit) {
         LambdaQueryWrapper<Announcement> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(Announcement::getStatus, STATUS_PUBLISHED)
+        wrapper.eq(Announcement::getStatus, AnnouncementConstants.STATUS_PUBLISHED)
                .orderByDesc(Announcement::getIsTop)
                .orderByDesc(Announcement::getPublishTime)
                .last("LIMIT " + limit);
@@ -170,15 +166,15 @@ public class AnnouncementServiceImpl extends ServiceImpl<AnnouncementMapper, Ann
 
         // 公告状态
         switch (announcement.getStatus()) {
-            case STATUS_DRAFT:
+            case AnnouncementConstants.STATUS_DRAFT:
                 announcement.setStatusLabel("草稿");
                 announcement.setStatusColor("info");
                 break;
-            case STATUS_PUBLISHED:
+            case AnnouncementConstants.STATUS_PUBLISHED:
                 announcement.setStatusLabel("已发布");
                 announcement.setStatusColor("success");
                 break;
-            case STATUS_OFFLINE:
+            case AnnouncementConstants.STATUS_OFFLINE:
                 announcement.setStatusLabel("已下线");
                 announcement.setStatusColor("danger");
                 break;

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

@@ -61,7 +61,7 @@ public class CheckinRecordServiceImpl extends ServiceImpl<CheckinRecordMapper, C
         record.setRemark(dto.getRemark());
         record.setOfflineId(dto.getOfflineId());
         record.setCheckinTime(LocalDateTime.now());
-        record.setStatus("synced");
+        record.setStatus(CheckinConstants.STATUS_SYNCED);
         record.setSyncedAt(LocalDateTime.now());
         record.setCreateTime(LocalDateTime.now());
         record.setUpdateTime(LocalDateTime.now());

+ 6 - 5
haha-service/src/main/java/com/haha/service/impl/CouponTemplateServiceImpl.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.ApplyScopeEnum;
 import com.haha.common.enums.CommonStatus;
 import com.haha.common.enums.CouponTypeEnum;
@@ -56,7 +57,7 @@ public class CouponTemplateServiceImpl extends ServiceImpl<CouponTemplateMapper,
         wrapper.eq(queryDTO.getCreatorId() != null, CouponTemplate::getCreatorId, queryDTO.getCreatorId());
         wrapper.ge(queryDTO.getValidStartTimeBegin() != null, CouponTemplate::getValidStartTime, queryDTO.getValidStartTimeBegin());
         wrapper.le(queryDTO.getValidStartTimeEnd() != null, CouponTemplate::getValidStartTime, queryDTO.getValidStartTimeEnd());
-        wrapper.eq(CouponTemplate::getDeleted, 0);
+        wrapper.eq(CouponTemplate::getDeleted, CommonConstants.NOT_DELETED);
         wrapper.orderByDesc(CouponTemplate::getCreateTime);
 
         IPage<CouponTemplate> result = this.page(page, wrapper);
@@ -68,7 +69,7 @@ public class CouponTemplateServiceImpl extends ServiceImpl<CouponTemplateMapper,
     @Override
     public CouponTemplate getDetail(Long id) {
         CouponTemplate template = this.getById(id);
-        if (template == null || template.getDeleted() == 1) {
+        if (template == null || template.getDeleted() == CommonConstants.DELETED) {
             throw new BusinessException(404, "优惠券模板不存在");
         }
         fillLabels(template);
@@ -101,7 +102,7 @@ public class CouponTemplateServiceImpl extends ServiceImpl<CouponTemplateMapper,
         template.setStatus(CommonStatus.ENABLED.getCode());
         template.setCreatorId(creatorId);
         template.setCreatorName(creatorName);
-        template.setDeleted(0);
+        template.setDeleted(CommonConstants.NOT_DELETED);
 
         this.save(template);
 
@@ -122,7 +123,7 @@ public class CouponTemplateServiceImpl extends ServiceImpl<CouponTemplateMapper,
     @Transactional(rollbackFor = Exception.class)
     public boolean updateStatus(Long id, Integer status) {
         CouponTemplate template = this.getById(id);
-        if (template == null || template.getDeleted() == 1) {
+        if (template == null || template.getDeleted() == CommonConstants.DELETED) {
             throw new BusinessException(404, "优惠券模板不存在");
         }
 
@@ -142,7 +143,7 @@ public class CouponTemplateServiceImpl extends ServiceImpl<CouponTemplateMapper,
             throw new BusinessException(404, "优惠券模板不存在");
         }
 
-        template.setDeleted(1);
+        template.setDeleted(CommonConstants.DELETED);
         boolean result = this.updateById(template);
 
         if (result) {

+ 20 - 24
haha-service/src/main/java/com/haha/service/impl/DataSyncServiceImpl.java

@@ -5,7 +5,11 @@ 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.constant.DeviceConstants;
 import com.haha.common.constant.RedisConstants;
+import com.haha.common.constant.SyncConstants;
+import com.haha.common.enums.DeviceOnlineStatus;
 import com.haha.common.exception.BusinessException;
 import com.haha.entity.Device;
 import com.haha.entity.Product;
@@ -46,14 +50,6 @@ public class DataSyncServiceImpl extends ServiceImpl<SyncRecordMapper, SyncRecor
     private final SyncLogMapper syncLogMapper;
     private final StringRedisTemplate stringRedisTemplate;
 
-    /**
-     * 同步状态常量
-     */
-    private static final int STATUS_PENDING = 0;      // 待同步
-    private static final int STATUS_SYNCING = 1;      // 同步中
-    private static final int STATUS_SUCCESS = 2;      // 同步成功
-    private static final int STATUS_FAILED = 3;       // 同步失败
-
     /**
      * 同步类型
      */
@@ -68,7 +64,7 @@ public class DataSyncServiceImpl extends ServiceImpl<SyncRecordMapper, SyncRecor
         // 1. 创建同步记录
         SyncRecord record = new SyncRecord();
         record.setSyncType(SYNC_TYPE_DEVICE);
-        record.setStatus(STATUS_SYNCING);
+        record.setStatus(SyncConstants.STATUS_SYNCING);
         record.setStartTime(LocalDateTime.now());
         record.setOperatorId(operatorId);
         record.setOperatorName(operatorName);
@@ -108,7 +104,7 @@ public class DataSyncServiceImpl extends ServiceImpl<SyncRecordMapper, SyncRecor
             // 4. 更新同步记录
             record.setSuccessCount(successCount);
             record.setFailCount(failCount);
-            record.setStatus(failCount == 0 ? STATUS_SUCCESS : (successCount > 0 ? STATUS_SUCCESS : STATUS_FAILED));
+            record.setStatus(failCount == 0 ? SyncConstants.STATUS_SYNCED : (successCount > 0 ? SyncConstants.STATUS_SYNCED : SyncConstants.STATUS_SYNC_FAILED));
             record.setEndTime(LocalDateTime.now());
             record.setDuration(java.time.Duration.between(record.getStartTime(), record.getEndTime()).toMillis());
             if (errorMsg.length() > 0) {
@@ -120,14 +116,14 @@ public class DataSyncServiceImpl extends ServiceImpl<SyncRecordMapper, SyncRecor
 
         } catch (HahaException e) {
             log.error("调用哈哈平台API失败", e);
-            record.setStatus(STATUS_FAILED);
+            record.setStatus(SyncConstants.STATUS_SYNC_FAILED);
             record.setEndTime(LocalDateTime.now());
             record.setDuration(java.time.Duration.between(record.getStartTime(), record.getEndTime()).toMillis());
             record.setErrorMessage("调用哈哈平台API失败: " + e.getMessage());
             updateById(record);
         } catch (Exception e) {
             log.error("设备数据同步异常", e);
-            record.setStatus(STATUS_FAILED);
+            record.setStatus(SyncConstants.STATUS_SYNC_FAILED);
             record.setEndTime(LocalDateTime.now());
             record.setDuration(java.time.Duration.between(record.getStartTime(), record.getEndTime()).toMillis());
             record.setErrorMessage("同步异常: " + e.getMessage());
@@ -150,7 +146,7 @@ public class DataSyncServiceImpl extends ServiceImpl<SyncRecordMapper, SyncRecor
             // 更新设备信息
             existDevice.setName(deviceInfo.getName());
             existDevice.setAddress(deviceInfo.getAddress());
-            existDevice.setStatus("1".equals(deviceInfo.getStatus()) ? 1 : 0);
+            existDevice.setStatus("1".equals(deviceInfo.getStatus()) ? DeviceConstants.STATUS_ONLINE : DeviceOnlineStatus.OFFLINE.getCode());
             deviceService.updateById(existDevice);
 
             // 记录成功日志
@@ -162,7 +158,7 @@ public class DataSyncServiceImpl extends ServiceImpl<SyncRecordMapper, SyncRecor
             newDevice.setDeviceId(deviceInfo.getId());
             newDevice.setName(deviceInfo.getName());
             newDevice.setAddress(deviceInfo.getAddress());
-            newDevice.setStatus("1".equals(deviceInfo.getStatus()) ? 1 : 0);
+            newDevice.setStatus("1".equals(deviceInfo.getStatus()) ? DeviceConstants.STATUS_ONLINE : DeviceOnlineStatus.OFFLINE.getCode());
             deviceService.save(newDevice);
 
             // 记录成功日志
@@ -234,11 +230,11 @@ public class DataSyncServiceImpl extends ServiceImpl<SyncRecordMapper, SyncRecor
         stats.put("totalRecords", totalRecords);
 
         // 成功次数
-        long successRecords = lambdaQuery().eq(SyncRecord::getStatus, STATUS_SUCCESS).count();
+        long successRecords = lambdaQuery().eq(SyncRecord::getStatus, SyncConstants.STATUS_SYNCED).count();
         stats.put("successRecords", successRecords);
 
         // 失败次数
-        long failedRecords = lambdaQuery().eq(SyncRecord::getStatus, STATUS_FAILED).count();
+        long failedRecords = lambdaQuery().eq(SyncRecord::getStatus, SyncConstants.STATUS_SYNC_FAILED).count();
         stats.put("failedRecords", failedRecords);
 
         // 设备同步统计
@@ -263,7 +259,7 @@ public class DataSyncServiceImpl extends ServiceImpl<SyncRecordMapper, SyncRecor
         // 1. 创建同步记录
         SyncRecord record = new SyncRecord();
         record.setSyncType(SYNC_TYPE_PRODUCT);
-        record.setStatus(STATUS_SYNCING);
+        record.setStatus(SyncConstants.STATUS_SYNCING);
         record.setStartTime(LocalDateTime.now());
         record.setOperatorId(operatorId);
         record.setOperatorName(operatorName);
@@ -332,7 +328,7 @@ public class DataSyncServiceImpl extends ServiceImpl<SyncRecordMapper, SyncRecor
             record.setTotalCount(totalCount);
             record.setSuccessCount(successCount);
             record.setFailCount(failCount);
-            record.setStatus(failCount == 0 ? STATUS_SUCCESS : (successCount > 0 ? STATUS_SUCCESS : STATUS_FAILED));
+            record.setStatus(failCount == 0 ? SyncConstants.STATUS_SYNCED : (successCount > 0 ? SyncConstants.STATUS_SYNCED : SyncConstants.STATUS_SYNC_FAILED));
             record.setEndTime(LocalDateTime.now());
             record.setDuration(java.time.Duration.between(record.getStartTime(), record.getEndTime()).toMillis());
             if (errorMsg.length() > 0) {
@@ -344,14 +340,14 @@ public class DataSyncServiceImpl extends ServiceImpl<SyncRecordMapper, SyncRecor
 
         } catch (HahaException e) {
             log.error("调用哈哈平台API失败", e);
-            record.setStatus(STATUS_FAILED);
+            record.setStatus(SyncConstants.STATUS_SYNC_FAILED);
             record.setEndTime(LocalDateTime.now());
             record.setDuration(java.time.Duration.between(record.getStartTime(), record.getEndTime()).toMillis());
             record.setErrorMessage("调用哈哈平台API失败: " + e.getMessage());
             updateById(record);
         } catch (Exception e) {
             log.error("商品数据同步异常", e);
-            record.setStatus(STATUS_FAILED);
+            record.setStatus(SyncConstants.STATUS_SYNC_FAILED);
             record.setEndTime(LocalDateTime.now());
             record.setDuration(java.time.Duration.between(record.getStartTime(), record.getEndTime()).toMillis());
             record.setErrorMessage("同步异常: " + e.getMessage());
@@ -388,7 +384,7 @@ public class DataSyncServiceImpl extends ServiceImpl<SyncRecordMapper, SyncRecor
             existProduct.setCostPrice(parseDouble(productData.get("cost_price")));
             existProduct.setRetailPrice(parseDouble(productData.get("cprice")));
             existProduct.setCustomerId(productData.get("customer_id") != null ? productData.get("customer_id").toString() : null);
-            existProduct.setSyncStatus(STATUS_SUCCESS);
+            existProduct.setSyncStatus(SyncConstants.STATUS_SYNCED);
             existProduct.setSyncTime(LocalDateTime.now());
             existProduct.setUpdateTime(LocalDateTime.now());
             productService.updateById(existProduct);
@@ -409,9 +405,9 @@ public class DataSyncServiceImpl extends ServiceImpl<SyncRecordMapper, SyncRecor
             newProduct.setCostPrice(parseDouble(productData.get("cost_price")));
             newProduct.setRetailPrice(parseDouble(productData.get("cprice")));
             newProduct.setCustomerId(productData.get("customer_id") != null ? productData.get("customer_id").toString() : null);
-            newProduct.setSyncStatus(STATUS_SUCCESS);
+            newProduct.setSyncStatus(SyncConstants.STATUS_SYNCED);
             newProduct.setSyncTime(LocalDateTime.now());
-            newProduct.setIsDeleted(0);
+            newProduct.setIsDeleted(CommonConstants.NOT_DELETED);
             newProduct.setCreateTime(LocalDateTime.now());
             newProduct.setUpdateTime(LocalDateTime.now());
             productService.save(newProduct);
@@ -473,7 +469,7 @@ public class DataSyncServiceImpl extends ServiceImpl<SyncRecordMapper, SyncRecor
             newDevice.setDeviceId(target.getId());
             newDevice.setName(target.getName());
             newDevice.setAddress(target.getAddress());
-            newDevice.setStatus("1".equals(target.getStatus()) ? 1 : 0);
+            newDevice.setStatus("1".equals(target.getStatus()) ? DeviceConstants.STATUS_ONLINE : DeviceOnlineStatus.OFFLINE.getCode());
             deviceService.save(newDevice);
 
             log.info("自动同步:设备 {} ({}) 创建成功", deviceId, target.getName());

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

@@ -1,5 +1,6 @@
 package com.haha.service.impl;
 
+import com.haha.common.constant.CommonConstants;
 import com.haha.common.exception.BusinessException;
 import com.haha.entity.Distributor;
 import com.haha.mapper.DistributorMapper;
@@ -35,7 +36,7 @@ public class DistributorQrcodeServiceImpl implements DistributorQrcodeService {
     @Transactional(rollbackFor = Exception.class)
     public String generateQrcode(Long distributorId) {
         Distributor distributor = distributorService.getById(distributorId);
-        if (distributor == null || distributor.getDeleted() == 1) {
+        if (distributor == null || distributor.getDeleted() == CommonConstants.DELETED) {
             throw new BusinessException(404, "分销员不存在");
         }
 

+ 4 - 2
haha-service/src/main/java/com/haha/service/impl/DistributorReferralServiceImpl.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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.haha.common.constant.CommonConstants;
 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.DistributorReferral;
@@ -42,8 +44,8 @@ public class DistributorReferralServiceImpl extends ServiceImpl<DistributorRefer
 
         LambdaQueryWrapper<Distributor> distributorWrapper = new LambdaQueryWrapper<>();
         distributorWrapper.eq(Distributor::getCode, distributorCode);
-        distributorWrapper.eq(Distributor::getStatus, 1);
-        distributorWrapper.eq(Distributor::getDeleted, 0);
+        distributorWrapper.eq(Distributor::getStatus, DistributorStatus.ACTIVE.getCode());
+        distributorWrapper.eq(Distributor::getDeleted, CommonConstants.NOT_DELETED);
         Distributor distributor = distributorMapper.selectOne(distributorWrapper);
         if (distributor == null) {
             throw new BusinessException(404, "分销员不存在或未激活");

+ 5 - 4
haha-service/src/main/java/com/haha/service/impl/DistributorReportServiceImpl.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.DistributorCommissionStatus;
 import com.haha.common.enums.DistributorReferralStatus;
 import com.haha.common.enums.DistributorStatus;
@@ -49,7 +50,7 @@ public class DistributorReportServiceImpl extends ServiceImpl<DistributorMonthly
     public void generateMonthlyReport(String yearMonth) {
         LambdaQueryWrapper<Distributor> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(Distributor::getStatus, DistributorStatus.ACTIVE.getCode());
-        wrapper.eq(Distributor::getDeleted, 0);
+        wrapper.eq(Distributor::getDeleted, CommonConstants.NOT_DELETED);
         List<Distributor> distributors = distributorMapper.selectList(wrapper);
 
         for (Distributor distributor : distributors) {
@@ -163,13 +164,13 @@ public class DistributorReportServiceImpl extends ServiceImpl<DistributorMonthly
     public DistributorDashboardVO getDashboard() {
         try {
             Long totalDistributors = distributorMapper.selectCount(
-                    new LambdaQueryWrapper<Distributor>().eq(Distributor::getDeleted, 0));
+                    new LambdaQueryWrapper<Distributor>().eq(Distributor::getDeleted, CommonConstants.NOT_DELETED));
 
             Long activeDistributors = distributorMapper.selectCount(
-                    new LambdaQueryWrapper<Distributor>().eq(Distributor::getStatus, DistributorStatus.ACTIVE.getCode()).eq(Distributor::getDeleted, 0));
+                    new LambdaQueryWrapper<Distributor>().eq(Distributor::getStatus, DistributorStatus.ACTIVE.getCode()).eq(Distributor::getDeleted, CommonConstants.NOT_DELETED));
 
             List<Distributor> allDistributors = distributorMapper.selectList(
-                    new LambdaQueryWrapper<Distributor>().eq(Distributor::getDeleted, 0));
+                    new LambdaQueryWrapper<Distributor>().eq(Distributor::getDeleted, CommonConstants.NOT_DELETED));
 
             Long totalReferrals = allDistributors.stream()
                     .mapToLong(d -> d.getTotalReferrals() != null ? d.getTotalReferrals() : 0)

+ 9 - 8
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.constant.CommonConstants;
 import com.haha.common.enums.DistributorStatus;
 import com.haha.common.exception.BusinessException;
 import com.haha.common.vo.StatusLabel;
@@ -60,7 +61,7 @@ public class DistributorServiceImpl extends ServiceImpl<DistributorMapper, Distr
         distributor.setCreatorName(creatorName);
         distributor.setCreateTime(LocalDateTime.now());
         distributor.setUpdateTime(LocalDateTime.now());
-        distributor.setDeleted(0);
+        distributor.setDeleted(CommonConstants.NOT_DELETED);
 
         this.save(distributor);
 
@@ -72,7 +73,7 @@ public class DistributorServiceImpl extends ServiceImpl<DistributorMapper, Distr
     @Transactional(rollbackFor = Exception.class)
     public Distributor update(DistributorUpdateDTO dto) {
         Distributor distributor = this.getById(dto.getId());
-        if (distributor == null || distributor.getDeleted() == 1) {
+        if (distributor == null || distributor.getDeleted() == CommonConstants.DELETED) {
             throw new BusinessException(404, "分销员不存在");
         }
 
@@ -102,7 +103,7 @@ public class DistributorServiceImpl extends ServiceImpl<DistributorMapper, Distr
     @Transactional(rollbackFor = Exception.class)
     public boolean activate(Long id) {
         Distributor distributor = this.getById(id);
-        if (distributor == null || distributor.getDeleted() == 1) {
+        if (distributor == null || distributor.getDeleted() == CommonConstants.DELETED) {
             throw new BusinessException(404, "分销员不存在");
         }
         if (!DistributorStatus.isPending(distributor.getStatus())) {
@@ -123,7 +124,7 @@ public class DistributorServiceImpl extends ServiceImpl<DistributorMapper, Distr
     @Transactional(rollbackFor = Exception.class)
     public boolean deactivate(Long id) {
         Distributor distributor = this.getById(id);
-        if (distributor == null || distributor.getDeleted() == 1) {
+        if (distributor == null || distributor.getDeleted() == CommonConstants.DELETED) {
             throw new BusinessException(404, "分销员不存在");
         }
         if (!DistributorStatus.isActive(distributor.getStatus())) {
@@ -148,7 +149,7 @@ public class DistributorServiceImpl extends ServiceImpl<DistributorMapper, Distr
         wrapper.like(queryDTO.getName() != null, Distributor::getName, queryDTO.getName());
         wrapper.eq(queryDTO.getPhone() != null, Distributor::getPhone, queryDTO.getPhone());
         wrapper.eq(queryDTO.getStatus() != null, Distributor::getStatus, queryDTO.getStatus());
-        wrapper.eq(Distributor::getDeleted, 0);
+        wrapper.eq(Distributor::getDeleted, CommonConstants.NOT_DELETED);
         wrapper.orderByDesc(Distributor::getCreateTime);
 
         IPage<Distributor> result = this.page(page, wrapper);
@@ -160,7 +161,7 @@ public class DistributorServiceImpl extends ServiceImpl<DistributorMapper, Distr
     @Override
     public Distributor getDetail(Long id) {
         Distributor distributor = this.getById(id);
-        if (distributor == null || distributor.getDeleted() == 1) {
+        if (distributor == null || distributor.getDeleted() == CommonConstants.DELETED) {
             throw new BusinessException(404, "分销员不存在");
         }
         fillStatusLabel(distributor);
@@ -171,7 +172,7 @@ public class DistributorServiceImpl extends ServiceImpl<DistributorMapper, Distr
     @Transactional(rollbackFor = Exception.class)
     public boolean delete(Long id) {
         Distributor distributor = this.getById(id);
-        if (distributor == null || distributor.getDeleted() == 1) {
+        if (distributor == null || distributor.getDeleted() == CommonConstants.DELETED) {
             throw new BusinessException(404, "分销员不存在");
         }
 
@@ -182,7 +183,7 @@ public class DistributorServiceImpl extends ServiceImpl<DistributorMapper, Distr
             throw new BusinessException(400, "该分销员已有推荐记录,无法删除");
         }
 
-        distributor.setDeleted(1);
+        distributor.setDeleted(CommonConstants.DELETED);
         distributor.setUpdateTime(LocalDateTime.now());
         this.updateById(distributor);
 

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

@@ -2,6 +2,8 @@ package com.haha.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.haha.common.enums.DeviceDoorStatus;
+import com.haha.common.enums.RecognizeConsumeType;
 import com.haha.entity.DoorRecord;
 import com.haha.mapper.DoorRecordMapper;
 import com.haha.service.DoorRecordService;
@@ -45,8 +47,8 @@ public class DoorRecordServiceImpl extends ServiceImpl<DoorRecordMapper, DoorRec
             record.setUserId(userId);
             record.setDoorIndex(doorIndex);
             record.setOpenType(openType);
-            record.setDoorStatus("OPENED");
-            record.setNobuy(0); // 默认假设有消费,后续 AI 识别会更新
+            record.setDoorStatus(DeviceDoorStatus.OPENED.getCode());
+            record.setNobuy(RecognizeConsumeType.CONSUMED.getCode()); // 默认假设有消费,后续 AI 识别会更新
             record.setOpenTime(now);
             record.setSource(source);
 
@@ -86,13 +88,13 @@ public class DoorRecordServiceImpl extends ServiceImpl<DoorRecordMapper, DoorRec
             }
 
             LocalDateTime closeTime = LocalDateTime.now();
-            int result = baseMapper.updateDoorStatus(activityId, "CLOSED", closeTime);
+            int result = baseMapper.updateDoorStatus(activityId, DeviceDoorStatus.CLOSED.getCode(), closeTime);
 
             if (result > 0) {
                 log.info("更新门状态为已关门 - activityId: {}, 持续时长:{}秒", activityId, record.getDuration());
 
                 // 同时更新 Redis
-                updateRedisDoorStatus(activityId, "CLOSED", closeTime);
+                updateRedisDoorStatus(activityId, DeviceDoorStatus.CLOSED.getCode(), closeTime);
                 return true;
             } else {
                 log.error("更新门状态失败 - activityId: {}", activityId);
@@ -113,7 +115,7 @@ public class DoorRecordServiceImpl extends ServiceImpl<DoorRecordMapper, DoorRec
                 log.info("标记无消费记录 - activityId: {}", activityId);
 
                 // 同时更新 Redis
-                updateRedisNobuy(activityId, 1);
+                updateRedisNobuy(activityId, RecognizeConsumeType.NO_CONSUME.getCode());
                 return true;
             } else {
                 log.error("标记无消费记录失败 - activityId: {}", activityId);
@@ -187,7 +189,7 @@ public class DoorRecordServiceImpl extends ServiceImpl<DoorRecordMapper, DoorRec
             record.put("openType", openType);
             record.put("openTime", String.valueOf(openTime.toEpochSecond(java.time.ZoneOffset.UTC)));
             record.put("source", source != null ? source : "");
-            record.put("status", "OPENED");
+            record.put("status", DeviceDoorStatus.OPENED.getCode());
 
             stringRedisTemplate.opsForHash().putAll(key, record);
             stringRedisTemplate.expire(key, REDIS_EXPIRE_MINUTES, TimeUnit.MINUTES);

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

@@ -1038,14 +1038,14 @@ public class HahaCallbackServiceImpl implements HahaCallbackService {
         try {
             JSONObject result = JSON.parseObject(resultStr);
             String type = result.getString("type");
-            if ("IN".equalsIgnoreCase(type)) {
+            if (RecognizeActionType.IN.getCode().equalsIgnoreCase(type)) {
                 log.info("识别结果类型为IN(放入) - 非正常消费订单");
                 return RecognizeActionType.IN.getCode();
             }
             return RecognizeActionType.OUT.getCode();
         } catch (Exception e) {
             log.warn("解析识别结果类型失败,默认为OUT", e);
-            return "OUT";
+            return RecognizeActionType.OUT.getCode();
         }
     }
 

+ 18 - 17
haha-service/src/main/java/com/haha/service/impl/InviteActivityServiceImpl.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.ApplyScopeEnum;
 import com.haha.common.enums.InviteRewardStatusEnum;
@@ -95,7 +96,7 @@ public class InviteActivityServiceImpl extends ServiceImpl<InviteActivityMapper,
         wrapper.eq(queryDTO.getStatus() != null, InviteActivity::getStatus, queryDTO.getStatus());
         wrapper.ge(queryDTO.getStartDate() != null, InviteActivity::getStartTime, queryDTO.getStartDate());
         wrapper.le(queryDTO.getEndDate() != null, InviteActivity::getEndTime, queryDTO.getEndDate());
-        wrapper.eq(InviteActivity::getDeleted, 0);
+        wrapper.eq(InviteActivity::getDeleted, CommonConstants.NOT_DELETED);
         wrapper.orderByDesc(InviteActivity::getCreateTime);
 
         IPage<InviteActivity> result = this.page(page, wrapper);
@@ -107,7 +108,7 @@ public class InviteActivityServiceImpl extends ServiceImpl<InviteActivityMapper,
     @Override
     public InviteActivity getDetail(Long id) {
         InviteActivity activity = this.getById(id);
-        if (activity == null || activity.getDeleted() == 1) {
+        if (activity == null || activity.getDeleted() == CommonConstants.DELETED) {
             throw new BusinessException(404, "邀请活动不存在");
         }
         fillLabels(activity);
@@ -167,7 +168,7 @@ public class InviteActivityServiceImpl extends ServiceImpl<InviteActivityMapper,
         activity.setRewardCount(0);
         activity.setCreatorId(creatorId);
         activity.setCreatorName(creatorName);
-        activity.setDeleted(0);
+        activity.setDeleted(CommonConstants.NOT_DELETED);
 
         this.save(activity);
 
@@ -180,7 +181,7 @@ public class InviteActivityServiceImpl extends ServiceImpl<InviteActivityMapper,
     @Transactional(rollbackFor = Exception.class)
     public InviteActivity update(InviteActivityUpdateDTO dto) {
         InviteActivity activity = this.getById(dto.getId());
-        if (activity == null || activity.getDeleted() == 1) {
+        if (activity == null || activity.getDeleted() == CommonConstants.DELETED) {
             throw new BusinessException(404, "邀请活动不存在");
         }
 
@@ -274,7 +275,7 @@ public class InviteActivityServiceImpl extends ServiceImpl<InviteActivityMapper,
     @Transactional(rollbackFor = Exception.class)
     public boolean publish(Long id) {
         InviteActivity activity = this.getById(id);
-        if (activity == null || activity.getDeleted() == 1) {
+        if (activity == null || activity.getDeleted() == CommonConstants.DELETED) {
             throw new BusinessException(404, "邀请活动不存在");
         }
 
@@ -307,7 +308,7 @@ public class InviteActivityServiceImpl extends ServiceImpl<InviteActivityMapper,
     @Transactional(rollbackFor = Exception.class)
     public boolean pause(Long id) {
         InviteActivity activity = this.getById(id);
-        if (activity == null || activity.getDeleted() == 1) {
+        if (activity == null || activity.getDeleted() == CommonConstants.DELETED) {
             throw new BusinessException(404, "邀请活动不存在");
         }
 
@@ -327,7 +328,7 @@ public class InviteActivityServiceImpl extends ServiceImpl<InviteActivityMapper,
     @Transactional(rollbackFor = Exception.class)
     public boolean resume(Long id) {
         InviteActivity activity = this.getById(id);
-        if (activity == null || activity.getDeleted() == 1) {
+        if (activity == null || activity.getDeleted() == CommonConstants.DELETED) {
             throw new BusinessException(404, "邀请活动不存在");
         }
 
@@ -355,7 +356,7 @@ public class InviteActivityServiceImpl extends ServiceImpl<InviteActivityMapper,
             throw new BusinessException(400, "当前状态不允许删除");
         }
 
-        activity.setDeleted(1);
+        activity.setDeleted(CommonConstants.DELETED);
         boolean result = this.updateById(activity);
 
         if (result) {
@@ -437,7 +438,7 @@ public class InviteActivityServiceImpl extends ServiceImpl<InviteActivityMapper,
 
         // 3. 检查活动是否在进行中
         InviteActivity activity = this.getById(activityId);
-        if (activity == null || activity.getDeleted() == 1) {
+        if (activity == null || activity.getDeleted() == CommonConstants.DELETED) {
             throw new BusinessException(404, "邀请活动不存在");
         }
         if (activity.getStatus() != ActivityStatusEnum.ONGOING.getCode()) {
@@ -1123,14 +1124,14 @@ public class InviteActivityServiceImpl extends ServiceImpl<InviteActivityMapper,
         // 1. 将应该开始的活动状态更新为"进行中"(草稿/已发布 + 开始时间到了 + 未结束)
         List<InviteActivity> shouldStart = inviteActivityMapper.selectList(
             new LambdaQueryWrapper<InviteActivity>()
-                .in(InviteActivity::getStatus, 0, 1)
+                .in(InviteActivity::getStatus, ActivityStatusEnum.DRAFT.getCode(), ActivityStatusEnum.PUBLISHED.getCode())
                 .le(InviteActivity::getStartTime, now)
                 .ge(InviteActivity::getEndTime, now)
-                .eq(InviteActivity::getDeleted, 0)
+                .eq(InviteActivity::getDeleted, CommonConstants.NOT_DELETED)
         );
 
         for (InviteActivity activity : shouldStart) {
-            inviteActivityMapper.updateStatus(activity.getId(), 2);
+            inviteActivityMapper.updateStatus(activity.getId(), ActivityStatusEnum.ONGOING.getCode());
             startedCount++;
             log.info("[邀请定时任务] 活动{}已自动开始", activity.getActivityName());
         }
@@ -1138,13 +1139,13 @@ public class InviteActivityServiceImpl extends ServiceImpl<InviteActivityMapper,
         // 2. 将应该结束的活动状态更新为"已结束"(进行中 + 结束时间过了)
         List<InviteActivity> shouldEnd = inviteActivityMapper.selectList(
             new LambdaQueryWrapper<InviteActivity>()
-                .eq(InviteActivity::getStatus, 2)
+                .eq(InviteActivity::getStatus, ActivityStatusEnum.ONGOING.getCode())
                 .lt(InviteActivity::getEndTime, now)
-                .eq(InviteActivity::getDeleted, 0)
+                .eq(InviteActivity::getDeleted, CommonConstants.NOT_DELETED)
         );
 
         for (InviteActivity activity : shouldEnd) {
-            inviteActivityMapper.updateStatus(activity.getId(), 4);
+            inviteActivityMapper.updateStatus(activity.getId(), ActivityStatusEnum.ENDED.getCode());
             endedCount++;
             log.info("[邀请定时任务] 活动{}已自动结束", activity.getActivityName());
         }
@@ -1187,9 +1188,9 @@ public class InviteActivityServiceImpl extends ServiceImpl<InviteActivityMapper,
 
         return inviteActivityMapper.selectList(
             new LambdaQueryWrapper<InviteActivity>()
-                .eq(InviteActivity::getStatus, 2)
+                .eq(InviteActivity::getStatus, ActivityStatusEnum.ONGOING.getCode())
                 .between(InviteActivity::getEndTime, now, deadline)
-                .eq(InviteActivity::getDeleted, 0)
+                .eq(InviteActivity::getDeleted, CommonConstants.NOT_DELETED)
         );
     }
 

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

@@ -1,6 +1,7 @@
 package com.haha.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.haha.common.constant.CommonConstants;
 import com.haha.common.enums.ActivityStatusEnum;
 import com.haha.common.enums.ActivityTypeEnum;
 import com.haha.common.enums.ApplyScopeEnum;
@@ -213,7 +214,7 @@ public class MarketingRuleServiceImpl implements MarketingRuleService {
                         .eq(MarketingActivity::getStatus, ActivityStatusEnum.ONGOING.getCode())
                         .le(MarketingActivity::getStartTime, now)
                         .ge(MarketingActivity::getEndTime, now)
-                        .eq(MarketingActivity::getDeleted, 0)
+                        .eq(MarketingActivity::getDeleted, CommonConstants.NOT_DELETED)
         );
 
         return activities.stream()

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

@@ -6,6 +6,7 @@ import com.haha.entity.Menu;
 import com.haha.entity.RoleMenu;
 import com.haha.mapper.MenuMapper;
 import com.haha.mapper.RoleMenuMapper;
+import com.haha.common.constant.CommonConstants;
 import com.haha.service.MenuService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -29,7 +30,7 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
     @Override
     public List<Menu> getAllMenus() {
         return lambdaQuery()
-                .eq(Menu::getDeleted, 0)
+                .eq(Menu::getDeleted, CommonConstants.NOT_DELETED)
                 .orderByAsc(Menu::getRank, Menu::getId)
                 .list();
     }
@@ -37,7 +38,7 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
     @Override
     public List<Menu> searchByTitle(String title) {
         return lambdaQuery()
-                .eq(Menu::getDeleted, 0)
+                .eq(Menu::getDeleted, CommonConstants.NOT_DELETED)
                 .like(Menu::getTitle, title)
                 .orderByAsc(Menu::getRank, Menu::getId)
                 .list();
@@ -48,7 +49,7 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
     public Menu createMenu(Menu menu) {
         menu.setCreateTime(LocalDateTime.now());
         menu.setUpdateTime(LocalDateTime.now());
-        menu.setDeleted(0);
+        menu.setDeleted(CommonConstants.NOT_DELETED);
         if (menu.getRank() == null) {
             menu.setRank(99);
         }
@@ -81,7 +82,7 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
         for (Long menuId : idsToDelete) {
             Menu menu = new Menu();
             menu.setId(menuId);
-            menu.setDeleted(1);
+            menu.setDeleted(CommonConstants.DELETED);
             menu.setUpdateTime(LocalDateTime.now());
             updateById(menu);
         }
@@ -94,7 +95,7 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
     private void collectChildIds(Long parentId, List<Long> result) {
         List<Menu> children = lambdaQuery()
                 .eq(Menu::getParentId, parentId)
-                .eq(Menu::getDeleted, 0)
+                .eq(Menu::getDeleted, CommonConstants.NOT_DELETED)
                 .list();
         for (Menu child : children) {
             result.add(child.getId());

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

@@ -299,9 +299,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                     continue;
                 }
                 String lowerChannel = channel.toLowerCase();
-                if (lowerChannel.contains("wechat")) {
+                if (lowerChannel.contains(PaymentChannel.WECHAT.getCode())) {
                     wechatAmount = wechatAmount.add(amount);
-                } else if (lowerChannel.contains("alipay")) {
+                } else if (lowerChannel.contains(PaymentChannel.ALIPAY.getCode())) {
                     alipayAmount = alipayAmount.add(amount);
                 } else {
                     otherAmount = otherAmount.add(amount);

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

@@ -7,6 +7,7 @@ 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.common.enums.UserTag;
 import com.haha.entity.*;
 import com.haha.mapper.*;
 import com.haha.service.StatisticsService;
@@ -1387,7 +1388,7 @@ public class StatisticsServiceImpl implements StatisticsService {
         long daysSinceLastOrder = ChronoUnit.DAYS.between(lastOrderDate, now);
         
         if (totalOrders == 1) {
-            return "new";
+            return UserTag.NEW.getCode();
         } else if (totalOrders >= 5) {
             return "loyal";
         } else if (daysSinceLastOrder > 60) {

+ 8 - 7
haha-service/src/main/java/com/haha/service/impl/TimedDiscountServiceImpl.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.constant.CommonConstants;
 import com.haha.common.enums.*;
 import com.haha.common.exception.BusinessException;
 import com.haha.common.vo.StatusLabel;
@@ -55,7 +56,7 @@ public class TimedDiscountServiceImpl extends ServiceImpl<TimedDiscountActivityM
         wrapper.like(StringUtils.hasText(queryDTO.getActivityName()), TimedDiscountActivity::getActivityName, queryDTO.getActivityName());
         wrapper.eq(queryDTO.getStatus() != null, TimedDiscountActivity::getStatus, queryDTO.getStatus());
         wrapper.eq(queryDTO.getDiscountType() != null, TimedDiscountActivity::getDiscountType, queryDTO.getDiscountType());
-        wrapper.eq(TimedDiscountActivity::getDeleted, 0);
+        wrapper.eq(TimedDiscountActivity::getDeleted, CommonConstants.NOT_DELETED);
         wrapper.orderByDesc(TimedDiscountActivity::getCreateTime);
 
         IPage<TimedDiscountActivity> result = this.page(page, wrapper);
@@ -67,7 +68,7 @@ public class TimedDiscountServiceImpl extends ServiceImpl<TimedDiscountActivityM
     @Override
     public TimedDiscountActivity getDetail(Long id) {
         TimedDiscountActivity activity = this.getById(id);
-        if (activity == null || activity.getDeleted() == 1) {
+        if (activity == null || activity.getDeleted() == CommonConstants.DELETED) {
             throw new BusinessException(404, "活动不存在");
         }
         fillLabels(activity);
@@ -106,7 +107,7 @@ public class TimedDiscountServiceImpl extends ServiceImpl<TimedDiscountActivityM
         activity.setNotifyOnExecute(dto.getNotifyOnExecute() != null ? dto.getNotifyOnExecute() : 0);
         activity.setCreatorId(creatorId);
         activity.setCreatorName(creatorName);
-        activity.setDeleted(0);
+        activity.setDeleted(CommonConstants.NOT_DELETED);
 
         this.save(activity);
 
@@ -122,7 +123,7 @@ public class TimedDiscountServiceImpl extends ServiceImpl<TimedDiscountActivityM
     @Transactional(rollbackFor = Exception.class)
     public TimedDiscountActivity update(TimedDiscountUpdateDTO dto) {
         TimedDiscountActivity activity = this.getById(dto.getId());
-        if (activity == null || activity.getDeleted() == 1) {
+        if (activity == null || activity.getDeleted() == CommonConstants.DELETED) {
             throw new BusinessException(404, "活动不存在");
         }
 
@@ -160,7 +161,7 @@ public class TimedDiscountServiceImpl extends ServiceImpl<TimedDiscountActivityM
     @Transactional(rollbackFor = Exception.class)
     public boolean updateStatus(Long id, Integer status) {
         TimedDiscountActivity activity = this.getById(id);
-        if (activity == null || activity.getDeleted() == 1) {
+        if (activity == null || activity.getDeleted() == CommonConstants.DELETED) {
             throw new BusinessException(404, "活动不存在");
         }
 
@@ -181,7 +182,7 @@ public class TimedDiscountServiceImpl extends ServiceImpl<TimedDiscountActivityM
             throw new BusinessException(404, "活动不存在");
         }
 
-        activity.setDeleted(1);
+        activity.setDeleted(CommonConstants.DELETED);
         boolean result = this.updateById(activity);
 
         if (result) {
@@ -223,7 +224,7 @@ public class TimedDiscountServiceImpl extends ServiceImpl<TimedDiscountActivityM
     public List<TimedDiscountActivity> getEnabledActivities() {
         LambdaQueryWrapper<TimedDiscountActivity> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(TimedDiscountActivity::getStatus, NightDiscountStatusEnum.ENABLED.getCode());
-        wrapper.eq(TimedDiscountActivity::getDeleted, 0);
+        wrapper.eq(TimedDiscountActivity::getDeleted, CommonConstants.NOT_DELETED);
         wrapper.eq(TimedDiscountActivity::getAutoExecute, 1);
         return this.list(wrapper);
     }

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

@@ -2,6 +2,7 @@ package com.haha.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.haha.common.constant.CommonConstants;
 import com.haha.common.enums.ActivityStatusEnum;
 import com.haha.common.enums.ActivityTypeEnum;
 import com.haha.common.exception.BusinessException;
@@ -503,7 +504,7 @@ public class UnifiedActivityServiceImpl implements UnifiedActivityService {
         // 1. 先尝试从邀请活动表查询(type=4)
         try {
             InviteActivity inviteActivity = inviteActivityService.getById(id);
-            if (inviteActivity != null && inviteActivity.getDeleted() != null && inviteActivity.getDeleted() == 0) {
+            if (inviteActivity != null && inviteActivity.getDeleted() != null && inviteActivity.getDeleted() == CommonConstants.NOT_DELETED) {
                 log.info("[统一活动] 从邀请活动表查到活动类型: id={}, type=4", id);
                 return ActivityTypeEnum.INVITE_REWARD.getCode();
             }

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

@@ -5,6 +5,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.constant.MarketingConstants;
 import com.haha.common.enums.CommonStatus;
 import com.haha.common.enums.CouponStatusEnum;
@@ -92,7 +93,7 @@ public class UserCouponServiceImpl extends ServiceImpl<UserCouponMapper, UserCou
 
         try {
             CouponTemplate template = templateMapper.selectById(templateId);
-            if (template == null || template.getDeleted() == 1) {
+            if (template == null || template.getDeleted() == CommonConstants.DELETED) {
                 log.warn("[优惠券服务] 领取优惠券失败 - 模板不存在, templateId: {}", templateId);
                 throw new BusinessException(404, "优惠券不存在");
             }
@@ -155,7 +156,7 @@ public class UserCouponServiceImpl extends ServiceImpl<UserCouponMapper, UserCou
         log.info("[优惠券发放] 查询模板结果 - templateId={}, template={}", 
                 dto.getTemplateId(), template != null ? "存在" : "不存在");
         
-        if (template == null || template.getDeleted() == 1) {
+        if (template == null || template.getDeleted() == CommonConstants.DELETED) {
             log.error("[优惠券发放] 模板不存在或已删除 - templateId={}, deleted={}", 
                     dto.getTemplateId(), template != null ? template.getDeleted() : "N/A");
             throw new BusinessException(404, "优惠券模板不存在");

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

@@ -388,11 +388,11 @@ public class PaymentServiceImpl implements PaymentService {
             boolean isPaid = OrderConstants.PAY_STATUS_PAID.equals(order.getPayStatus());
             return PaymentResult.builder()
                     .success(isPaid)
-                    .errorCode(isPaid ? null : "UNPAID")
+                    .errorCode(isPaid ? null : OrderConstants.PAY_STATUS_UNPAID)
                     .errorMsg(isPaid ? null : "订单未支付")
                     .build();
         }
-        
+
         // 4. 如果是余额支付,直接返回本地状态
         if (channel == PaymentChannel.BALANCE) {
             boolean isPaid = OrderConstants.PAY_STATUS_PAID.equals(order.getPayStatus());
@@ -400,7 +400,7 @@ public class PaymentServiceImpl implements PaymentService {
             return PaymentResult.builder()
                     .success(isPaid)
                     .channel(channel)
-                    .errorCode(isPaid ? null : "UNPAID")
+                    .errorCode(isPaid ? null : OrderConstants.PAY_STATUS_UNPAID)
                     .errorMsg(isPaid ? null : "订单未支付")
                     .build();
         }

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

@@ -171,7 +171,7 @@ public class PayScoreServiceImpl implements PayScoreService {
 
         if (result.isSuccess()) {
             // 微信 API 调用成功,根据返回的 state 更新订单
-            String state = result.getState() != null ? result.getState() : "USER_PAYING";
+            String state = result.getState() != null ? result.getState() : PayScoreState.USER_PAYING.getCode();
             order.setPayScoreState(state);
             order.setServiceEndTime(LocalDateTime.now());
             order.setTotalAmount(totalAmount);

+ 7 - 6
haha-service/src/main/java/com/haha/service/payment/payscore/impl/WxPayScoreStrategy.java

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.haha.common.enums.PayScoreState;
 import com.haha.common.enums.PaymentChannel;
 import com.haha.service.payment.config.WxPayConfig;
 import com.haha.service.payment.payscore.*;
@@ -284,12 +285,12 @@ public class WxPayScoreStrategy implements PayScoreStrategy {
                 String outOrderNo = getJsonString(respJson, "out_order_no");
                 String state = getJsonString(respJson, "state");
                 log.info("[微信支付分] 完结订单成功 - 订单号: {}, 状态: {}", outOrderNo, state);
-                return PayScoreResult.success(outOrderNo != null ? outOrderNo : request.getOutOrderNo(), 
-                        state != null ? state : "USER_PAYING");
+                return PayScoreResult.success(outOrderNo != null ? outOrderNo : request.getOutOrderNo(),
+                        state != null ? state : PayScoreState.USER_PAYING.getCode());
             }
 
             log.info("[微信支付分] 完结订单成功 - 订单号: {}", request.getOutOrderNo());
-            return PayScoreResult.success(request.getOutOrderNo(), "USER_PAYING");
+            return PayScoreResult.success(request.getOutOrderNo(), PayScoreState.USER_PAYING.getCode());
 
         } catch (HttpException e) {
             log.error("[微信支付分] 完结订单HTTP异常: {}", e.getMessage(), e);
@@ -346,12 +347,12 @@ public class WxPayScoreStrategy implements PayScoreStrategy {
                 String outOrderNo = getJsonString(respJson, "out_order_no");
                 String state = getJsonString(respJson, "state");
                 log.info("[微信支付分] 取消订单成功 - 订单号: {}, 状态: {}", outOrderNo, state);
-                return PayScoreResult.success(outOrderNo != null ? outOrderNo : request.getOutOrderNo(), 
-                        state != null ? state : "REVOKED");
+                return PayScoreResult.success(outOrderNo != null ? outOrderNo : request.getOutOrderNo(),
+                        state != null ? state : PayScoreState.REVOKED.getCode());
             }
 
             log.info("[微信支付分] 取消订单成功 - 订单号: {}", request.getOutOrderNo());
-            return PayScoreResult.success(request.getOutOrderNo(), "REVOKED");
+            return PayScoreResult.success(request.getOutOrderNo(), PayScoreState.REVOKED.getCode());
 
         } catch (HttpException e) {
             log.error("[微信支付分] 取消订单HTTP异常: {}", e.getMessage(), e);