wangzhijun 1 день назад
Родитель
Сommit
0d4b654cc2

+ 28 - 0
nightFragrance-massage/src/main/java/com/ylx/point/enums/ActivityNameEnum.java

@@ -0,0 +1,28 @@
+package com.ylx.point.enums;
+
+import lombok.Getter;
+
+@Getter
+public enum ActivityNameEnum {
+
+    COMPLETE_ORDER(1, "完成订单"),
+
+    RECHARGE_TASK(2, "充值任务"),
+
+    SHARE_ACCOUNT(3, "分享服务号"),
+
+    BROWSE_DYNAMIC(4, "浏览动态"),
+
+    BROWSE_MERCHANT(5, "浏览商户"),
+
+    USER_SIGN_IN(6, "每日签到");
+
+    private final Integer code;
+    private final String info;
+
+    ActivityNameEnum(Integer code, String info) {
+        this.code = code;
+        this.info = info;
+    }
+
+}

+ 2 - 1
nightFragrance-massage/src/main/java/com/ylx/point/service/impl/PointActivityServiceImpl.java

@@ -18,6 +18,7 @@ import com.ylx.point.domain.*;
 import com.ylx.point.domain.dto.*;
 import com.ylx.point.domain.vo.*;
 import com.ylx.point.enums.ActivityCompletionTaskTypeEnum;
+import com.ylx.point.enums.ActivityNameEnum;
 import com.ylx.point.enums.PointActivityStatusEnum;
 import com.ylx.point.enums.PointActivityTypeEnum;
 import com.ylx.point.mapper.PointActivityMapper;
@@ -585,7 +586,7 @@ public class PointActivityServiceImpl extends ServiceImpl<PointActivityMapper, P
 
         // 6. 发放积分
         try {
-            pointAccountService.addPoints(openId, rewardPoints, activityName, null, activityId, taskId, taskType);
+            pointAccountService.addPoints(openId, rewardPoints, ActivityNameEnum.USER_SIGN_IN.name(), null, activityId, taskId, taskType);
         } catch (Exception e) {
             log.error("签到发放积分异常 openid:{}", openId, e);
             throw new ServiceException("签到成功,但积分发放失败,请联系客服");

+ 47 - 9
nightFragrance-massage/src/main/java/com/ylx/point/service/impl/PointUserActivityTaskCompletionServiceImpl.java

@@ -16,6 +16,7 @@ import com.ylx.point.domain.PointActivity;
 import com.ylx.point.domain.PointActivityTask;
 import com.ylx.point.domain.PointUserActivityTaskCompletion;
 import com.ylx.point.domain.vo.PointActivityOverviewVO;
+import com.ylx.point.enums.ActivityNameEnum;
 import com.ylx.point.enums.PointActivityStatusEnum;
 import com.ylx.point.enums.PointActivityTaskTypeEnum;
 import com.ylx.point.enums.PointActivityTypeEnum;
@@ -132,6 +133,8 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
     @Transactional(rollbackFor = Exception.class)
     public void executeTask(Long taskId) {
 
+        String activityName = null;
+
         // 1. 获取当前登录用户
         WxLoginUser loginUser = getCurrentWxLoginUser();
         String openId = loginUser.getCOpenid();
@@ -164,13 +167,44 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
         // --- 逻辑分支开始 ---
 
         // 场景 A: 每日任务/签到 -> 只需要检查今天是否做过
-        if (pointActivityType == PointActivityTypeEnum.SIGN_TASK || pointActivityType == PointActivityTypeEnum.DAILY_ACTIVITY) {
+        if (pointActivityType == PointActivityTypeEnum.SIGN_TASK) {
+            activityName = ActivityNameEnum.USER_SIGN_IN.getInfo();
             boolean completed = this.isTodayCompleted(openId, activityId, taskId, taskType.getCode());
             if (completed) {
                 throw new ServiceException("今日任务已完成,请勿重复领取");
             }
             // 每日任务通常点一下就算完成,或者根据具体业务逻辑判断
             isVerified = true;
+        } else if (pointActivityType == PointActivityTypeEnum.DAILY_ACTIVITY) {
+            // 1. 检查今日是否已完成 (保留核心业务校验)
+            boolean completed = this.isTodayCompleted(openId, activityId, taskId, taskType.getCode());
+            if (completed) {
+                throw new ServiceException("今日任务已完成,请勿重复领取");
+            }
+
+            // 2. 仅根据任务类型获取名称 (移除所有业务计数逻辑)
+            switch (taskType) {
+                case COMPLETE_ORDER:
+                    activityName = ActivityNameEnum.COMPLETE_ORDER.getInfo();
+                    break;
+                case RECHARGE_TASK:
+                    activityName = ActivityNameEnum.RECHARGE_TASK.getInfo();
+                    break;
+                case SHARE_SERVICE:
+                    activityName = ActivityNameEnum.SHARE_ACCOUNT.getInfo();
+                    break;
+                case BROWLE_NEWS:
+                    activityName = ActivityNameEnum.BROWSE_DYNAMIC.getInfo();
+                    break;
+                case BROWLE_MERCHANT:
+                    activityName = ActivityNameEnum.BROWSE_MERCHANT.getInfo();
+                    break;
+                default:
+                    throw new ServiceException("不支持的任务类型: " + taskType);
+            }
+
+            // 标记为已验证,允许后续流程继续(如果需要)
+            isVerified = true;
         }
         // 场景 B: 新手任务 或 每月任务 -> 需要核实业务数据(订单/充值)
         else if (pointActivityType == PointActivityTypeEnum.NEW_USER_ACTIVITY || pointActivityType == PointActivityTypeEnum.MONTHLY_ACTIVITY) {
@@ -182,25 +216,29 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
                 case COMPLETE_ORDER: // 完成订单
                     int orderCount = orderService.countCompletedOrders(openId, queryTime);
                     isVerified = orderCount >= targetCount;
+                    activityName = ActivityNameEnum.COMPLETE_ORDER.getInfo();
                     break;
-
                 case RECHARGE_TASK: // 充值任务
                     int rechargeCount = rechargeService.countSuccessRecharges(openId, queryTime);
                     isVerified = rechargeCount >= targetCount;
+                    activityName = ActivityNameEnum.RECHARGE_TASK.getInfo();
                     break;
-
                 case SHARE_SERVICE: // 分享服务号
+                    activityName = ActivityNameEnum.SHARE_ACCOUNT.getInfo();
+                    isVerified = true;
+                    break;
                 case BROWLE_NEWS:    // 浏览动态
+                    activityName = ActivityNameEnum.BROWSE_DYNAMIC.getInfo();
+                    isVerified = true;
+                    break;
                 case BROWLE_MERCHANT:// 浏览商户
-                    // 这类任务通常前端跳转后,用户回来点击就算完成,或者这里直接设为 true
+                    activityName = ActivityNameEnum.BROWSE_MERCHANT.getInfo();
                     isVerified = true;
                     break;
-
                 default:
                     throw new ServiceException("不支持的任务类型: " + taskType);
             }
-        }
-        else {
+        } else {
             throw new ServiceException("不支持的活动类型");
         }
 
@@ -226,12 +264,12 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
             // 注意:这里我使用了你之前的 completeTask 逻辑,而不是直接 set 目标值
             // 因为如果是“累计充值1000元”,用户充了500+500,直接set成1会丢失进度
             // 但如果是“完成1笔订单”,直接调用 completeTask 即可
-            this.completeTask(openId, activityId, taskId, activityType);
+            this.completeTask(openId, activityId, taskId, taskType.getCode());
 
             // 4.3 发放积分
             // 注意:这里需要确保只发一次。如果 completeTask 只是增加次数,这里需要判断是否刚好达标才发分
             // 为了简单,假设这里调用 addPoints 是安全的(或者你在 addPoints 内部做幂等)
-            pointAccountService.addPoints(openId, task.getRewardPoints().intValue(), activity.getName(), null, activityId, taskId, taskType.getCode());
+            pointAccountService.addPoints(openId, task.getRewardPoints().intValue(), activityName, null, activityId, taskId, taskType.getCode());
 
         }
     }