Przeglądaj źródła

添加字段taskName

wangzhijun 15 godzin temu
rodzic
commit
a620a04a72

+ 3 - 0
nightFragrance-massage/src/main/java/com/ylx/point/domain/PointUserLog.java

@@ -49,6 +49,9 @@ public class PointUserLog extends BaseEntity {
     @Excel(name = "任务ID")
     private Long taskId;
 
+    @Excel(name = "任务名称")
+    private String taskName;
+
     /**
      * 1-普通活动 2-签到活动
      */

+ 6 - 2
nightFragrance-massage/src/main/java/com/ylx/point/enums/ActivityNameEnum.java

@@ -7,7 +7,7 @@ public enum ActivityNameEnum {
 
     COMPLETE_ORDER(1, "完成订单"),
 
-    RECHARGE_TASK(2, "充值任务"),
+    RECHARGE_TASK(2, "账户充值"),
 
     SHARE_ACCOUNT(3, "分享服务号"),
 
@@ -17,7 +17,11 @@ public enum ActivityNameEnum {
 
     USER_SIGN_IN(6, "每日签到"),
 
-    GOODS_REFUND(7, "商品退款");
+    GOODS_REFUND(7, "商品退款"),
+
+    GOODS_CONSUME(8, "商城消费"),
+
+    POINT_EXPIRE(9, "积分到期");
 
     private final Integer code;
     private final String info;

+ 17 - 13
nightFragrance-massage/src/main/java/com/ylx/point/service/IPointAccountService.java

@@ -4,24 +4,27 @@ public interface IPointAccountService {
 
     /**
      * 增加用户积分
-     * @param openId 用户openId
-     * @param points 积分数量(正数)
+     *
+     * @param openId       用户openId
+     * @param points       积分数量(正数)
      * @param activityName 活动名称
-     * @param bizOrderNo 业务订单号
-     * @param activityId 活动ID
-     * @param taskId 任务ID
-     * @param taskType 任务类型
+     * @param bizOrderNo   业务订单号
+     * @param activityId   活动ID
+     * @param taskId       任务ID
+     * @param taskType     任务类型
+     * @param taskName     任务名称
      * @return 变动后的余额
      */
-    Integer addPoints(String openId, int points, String activityName, String bizOrderNo, Long activityId, Long taskId, Integer taskType);
+    Integer addPoints(String openId, int points, String activityName, String bizOrderNo, Long activityId, Long taskId, Integer taskType, String taskName);
 
     /**
      * 扣减用户积分(用于积分商品下单)
      * 扣减顺序:先获取的先扣减(FIFO原则)
-     * @param openId 用户openId
+     *
+     * @param openId         用户openId
      * @param pointsToDeduct 需要扣减的积分数量(正数)
-     * @param bizOrderNo 业务订单号
-     * @param activityName 活动名称(如:积分商品兑换)
+     * @param bizOrderNo     业务订单号
+     * @param activityName   活动名称(如:积分商品兑换)
      * @return Integer 变动后的余额
      */
     Integer deductPoints(String openId, int pointsToDeduct, String bizOrderNo, String activityName);
@@ -29,10 +32,11 @@ public interface IPointAccountService {
     /**
      * 退款积分(用于积分商品退款)
      * 退回的积分没有过期时间
-     * @param openId 用户openId
+     *
+     * @param openId         用户openId
      * @param pointsToRefund 需要退回的积分数量(正数)
-     * @param bizOrderNo 业务订单号
-     * @param activityName 活动名称(如:积分商品退款)
+     * @param bizOrderNo     业务订单号
+     * @param activityName   活动名称(如:积分商品退款)
      * @return 变动后的余额
      */
     Integer refundPoints(String openId, int pointsToRefund, String bizOrderNo, String activityName);

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

@@ -39,7 +39,7 @@ public class PointAccountServiceImpl implements IPointAccountService {
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Integer addPoints(String openId, int points, String activityName, String bizOrderNo, Long activityId, Long taskId, Integer taskType) {
+    public Integer addPoints(String openId, int points, String activityName, String bizOrderNo, Long activityId, Long taskId, Integer taskType, String taskName) {
         if (points <= 0) {
             return getBalance(openId);
         }
@@ -56,6 +56,7 @@ public class PointAccountServiceImpl implements IPointAccountService {
         log.setActivityId(activityId);
         log.setTaskId(taskId);
         log.setTaskType(taskType);
+        log.setTaskName(taskName);
         log.setPoints(points);
         log.setOpType(1);        // 1-收入
         log.setBizOrderId(bizOrderNo);

+ 4 - 3
nightFragrance-massage/src/main/java/com/ylx/point/service/impl/PointActivityServiceImpl.java

@@ -483,10 +483,10 @@ public class PointActivityServiceImpl extends ServiceImpl<PointActivityMapper, P
 
     /**
      * 签到积分计算:基础分 + 阶梯奖励累加
-     *
+     * <p>
      * 配置口径:reward.continueDays 表示“本档位需要再连续签到 N 天”,需要做累计阈值:
      * 例如配置 1/2/3 天,对应阈值为 1、(1+2)=3、(1+2+3)=6。
-     *
+     * <p>
      * 业务规则:首日仅基础分,阶梯奖励从“超过阈值的下一天”开始生效,
      * 即连续天数满足 (continuousDays > threshold) 才加对应档位奖励。
      */
@@ -586,7 +586,7 @@ public class PointActivityServiceImpl extends ServiceImpl<PointActivityMapper, P
 
         // 6. 发放积分
         try {
-            pointAccountService.addPoints(openId, rewardPoints, ActivityNameEnum.USER_SIGN_IN.name(), null, activityId, taskId, taskType);
+            pointAccountService.addPoints(openId, rewardPoints, activityName, null, activityId, taskId, taskType, ActivityNameEnum.USER_SIGN_IN.name());
         } catch (Exception e) {
             log.error("签到发放积分异常 openid:{}", openId, e);
             throw new ServiceException("签到成功,但积分发放失败,请联系客服");
@@ -1016,6 +1016,7 @@ public class PointActivityServiceImpl extends ServiceImpl<PointActivityMapper, P
 
     /**
      * 获取当前城市生效的签到任务
+     *
      * @param cityCode
      * @return PointSignTask 积分签到任务规则
      */

+ 105 - 100
nightFragrance-massage/src/main/java/com/ylx/point/service/impl/PointUserActivityTaskCompletionServiceImpl.java

@@ -138,7 +138,7 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
     @Transactional(rollbackFor = Exception.class)
     public void executeTask(Long taskId) {
 
-        String activityName = null;
+        String taskName;
 
         // 1. 获取当前登录用户
         WxLoginUser loginUser = getCurrentWxLoginUser();
@@ -160,6 +160,7 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
         Integer activityType = activity.getActivityType();
         String isPermanent = activity.getIsPermanent();
         Date activityStartTime = activity.getStartTime();
+        String activityName = activity.getName();
 
         PointActivityTypeEnum pointActivityType = PointActivityTypeEnum.valueOf(activityType);
         PointActivityTaskTypeEnum taskType = PointActivityTaskTypeEnum.getByInfo(task.getTaskName());
@@ -173,7 +174,7 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
 
         // 场景 A: 每日任务/签到 -> 只需要检查今天是否做过
         if (pointActivityType == PointActivityTypeEnum.SIGN_TASK) {
-            activityName = ActivityNameEnum.USER_SIGN_IN.getInfo();
+            taskName = ActivityNameEnum.USER_SIGN_IN.getInfo();
             boolean completed = this.isTodayCompleted(openId, activityId, taskId, taskType.getCode());
             if (completed) {
                 throw new ServiceException("今日任务已完成,请勿重复领取");
@@ -190,19 +191,19 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
             // 2. 仅根据任务类型获取名称 (移除所有业务计数逻辑)
             switch (taskType) {
                 case COMPLETE_ORDER:
-                    activityName = ActivityNameEnum.COMPLETE_ORDER.getInfo();
+                    taskName = ActivityNameEnum.COMPLETE_ORDER.getInfo();
                     break;
                 case RECHARGE_TASK:
-                    activityName = ActivityNameEnum.RECHARGE_TASK.getInfo();
+                    taskName = ActivityNameEnum.RECHARGE_TASK.getInfo();
                     break;
                 case SHARE_SERVICE:
-                    activityName = ActivityNameEnum.SHARE_ACCOUNT.getInfo();
+                    taskName = ActivityNameEnum.SHARE_ACCOUNT.getInfo();
                     break;
                 case BROWLE_NEWS:
-                    activityName = ActivityNameEnum.BROWSE_DYNAMIC.getInfo();
+                    taskName = ActivityNameEnum.BROWSE_DYNAMIC.getInfo();
                     break;
                 case BROWLE_MERCHANT:
-                    activityName = ActivityNameEnum.BROWSE_MERCHANT.getInfo();
+                    taskName = ActivityNameEnum.BROWSE_MERCHANT.getInfo();
                     break;
                 default:
                     throw new ServiceException("不支持的任务类型: " + taskType);
@@ -221,23 +222,23 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
                 case COMPLETE_ORDER: // 完成订单
                     int orderCount = orderService.countCompletedOrders(openId, queryTime);
                     isVerified = orderCount >= targetCount;
-                    activityName = ActivityNameEnum.COMPLETE_ORDER.getInfo();
+                    taskName = ActivityNameEnum.COMPLETE_ORDER.getInfo();
                     break;
                 case RECHARGE_TASK: // 充值任务
                     int rechargeCount = rechargeService.countSuccessRecharges(openId, queryTime);
                     isVerified = rechargeCount >= targetCount;
-                    activityName = ActivityNameEnum.RECHARGE_TASK.getInfo();
+                    taskName = ActivityNameEnum.RECHARGE_TASK.getInfo();
                     break;
                 case SHARE_SERVICE: // 分享服务号
-                    activityName = ActivityNameEnum.SHARE_ACCOUNT.getInfo();
+                    taskName = ActivityNameEnum.SHARE_ACCOUNT.getInfo();
                     isVerified = true;
                     break;
                 case BROWLE_NEWS:    // 浏览动态
-                    activityName = ActivityNameEnum.BROWSE_DYNAMIC.getInfo();
+                    taskName = ActivityNameEnum.BROWSE_DYNAMIC.getInfo();
                     isVerified = true;
                     break;
                 case BROWLE_MERCHANT:// 浏览商户
-                    activityName = ActivityNameEnum.BROWSE_MERCHANT.getInfo();
+                    taskName = ActivityNameEnum.BROWSE_MERCHANT.getInfo();
                     isVerified = true;
                     break;
                 default:
@@ -274,7 +275,7 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
             // 4.3 发放积分
             // 注意:这里需要确保只发一次。如果 completeTask 只是增加次数,这里需要判断是否刚好达标才发分
             // 为了简单,假设这里调用 addPoints 是安全的(或者你在 addPoints 内部做幂等)
-            pointAccountService.addPoints(openId, task.getRewardPoints().intValue(), activityName, null, activityId, taskId, taskType.getCode());
+            pointAccountService.addPoints(openId, task.getRewardPoints().intValue(), activityName, null, activityId, taskId, taskType.getCode(), taskName);
 
         }
     }
@@ -308,20 +309,21 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
 
     /**
      * 通用任务完成方法(内部使用)
-     * @param openId 用户openId
-     * @param taskTypeEnum 任务类型枚举
+     *
+     * @param openId           用户openId
+     * @param taskTypeEnum     任务类型枚举
      * @param activityNameEnum 活动名称枚举
-     * @param countSupplier 查询已完成次数的函数
+     * @param countSupplier    查询已完成次数的函数
      */
     private void completeTaskByPriorityInternal(String openId,
-                                           PointActivityTaskTypeEnum taskTypeEnum,
-                                           ActivityNameEnum activityNameEnum,
-                                           java.util.function.Function<Date, Integer> countSupplier) {
+                                                PointActivityTaskTypeEnum taskTypeEnum,
+                                                ActivityNameEnum activityNameEnum,
+                                                java.util.function.Function<Date, Integer> countSupplier) {
         // 活动类型优先级:新手活动、每日活动、每月活动
         List<Integer> priorityTypes = Arrays.asList(
-            PointActivityTypeEnum.NEW_USER_ACTIVITY.getCode(),
-            PointActivityTypeEnum.DAILY_ACTIVITY.getCode(),
-            PointActivityTypeEnum.MONTHLY_ACTIVITY.getCode()
+                PointActivityTypeEnum.NEW_USER_ACTIVITY.getCode(),
+                PointActivityTypeEnum.DAILY_ACTIVITY.getCode(),
+                PointActivityTypeEnum.MONTHLY_ACTIVITY.getCode()
         );
 
         // 按优先级遍历活动类型
@@ -329,21 +331,21 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
             try {
                 // 查询该活动类型下所有进行中的任务
                 List<PointActivityTask> taskList = pointActivityTaskService.list(
-                    Wrappers.lambdaQuery(PointActivityTask.class)
-                        .eq(PointActivityTask::getTaskName, activityNameEnum.getInfo())
-                        .eq(PointActivityTask::getStatus, 0)
-                        .eq(PointActivityTask::getIsDeleted, 0)
+                        Wrappers.lambdaQuery(PointActivityTask.class)
+                                .eq(PointActivityTask::getTaskName, activityNameEnum.getInfo())
+                                .eq(PointActivityTask::getStatus, 0)
+                                .eq(PointActivityTask::getIsDeleted, 0)
                 );
 
                 // 过滤出属于该活动类型的任务
                 taskList = taskList.stream()
-                    .filter(task -> {
-                        PointActivity activity = pointActivityService.getById(task.getActivityId());
-                        return activity != null
-                            && activity.getActivityType().equals(activityType)
-                            && activity.getStatus().equals(PointActivityStatusEnum.IN_PROGRESS.getCode());
-                    })
-                    .collect(Collectors.toList());
+                        .filter(task -> {
+                            PointActivity activity = pointActivityService.getById(task.getActivityId());
+                            return activity != null
+                                    && activity.getActivityType().equals(activityType)
+                                    && activity.getStatus().equals(PointActivityStatusEnum.IN_PROGRESS.getCode());
+                        })
+                        .collect(Collectors.toList());
 
                 if (CollectionUtil.isEmpty(taskList)) {
                     continue;
@@ -371,11 +373,11 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
                         if (completedCount >= targetCount) {
                             // 查询是否已经完成过该任务
                             PointUserActivityTaskCompletion existingRecord = this.getOne(
-                                new LambdaQueryWrapper<PointUserActivityTaskCompletion>()
-                                    .eq(PointUserActivityTaskCompletion::getOpenId, openId)
-                                    .eq(PointUserActivityTaskCompletion::getTaskId, task.getId())
-                                    .eq(PointUserActivityTaskCompletion::getActivityId, activity.getId())
-                                    .eq(PointUserActivityTaskCompletion::getTaskType, taskTypeEnum.getCode())
+                                    new LambdaQueryWrapper<PointUserActivityTaskCompletion>()
+                                            .eq(PointUserActivityTaskCompletion::getOpenId, openId)
+                                            .eq(PointUserActivityTaskCompletion::getTaskId, task.getId())
+                                            .eq(PointUserActivityTaskCompletion::getActivityId, activity.getId())
+                                            .eq(PointUserActivityTaskCompletion::getTaskType, taskTypeEnum.getCode())
                             );
 
                             // 检查是否已经达到目标次数(防刷)
@@ -389,13 +391,14 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
 
                             // 发放积分
                             pointAccountService.addPoints(
-                                openId,
-                                task.getRewardPoints().intValue(),
-                                activityNameEnum.getInfo(),
-                                null,
-                                activity.getId(),
-                                task.getId(),
-                                taskTypeEnum.getCode()
+                                    openId,
+                                    task.getRewardPoints().intValue(),
+                                    activity.getName(),
+                                    null,
+                                    activity.getId(),
+                                    task.getId(),
+                                    taskTypeEnum.getCode(),
+                                    activityNameEnum.getInfo()
                             );
 
                             // 成功完成一个任务后,跳出循环(只完成优先级最高的一个任务)
@@ -404,7 +407,7 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
                     } catch (ServiceException e) {
                         // 如果任务已完成或不符合条件,继续尝试下一个任务
                         if (!e.getMessage().contains("今日任务已完成")
-                            && !e.getMessage().contains("任务奖励已领取")) {
+                                && !e.getMessage().contains("任务奖励已领取")) {
                             // 其他异常则抛出
                             throw e;
                         }
@@ -422,9 +425,9 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
     public void completeOrderTaskByPriority(String openId) {
         // 活动类型优先级:新手活动、每日活动、每月活动
         List<Integer> priorityTypes = Arrays.asList(
-            PointActivityTypeEnum.NEW_USER_ACTIVITY.getCode(),
-            PointActivityTypeEnum.DAILY_ACTIVITY.getCode(),
-            PointActivityTypeEnum.MONTHLY_ACTIVITY.getCode()
+                PointActivityTypeEnum.NEW_USER_ACTIVITY.getCode(),
+                PointActivityTypeEnum.DAILY_ACTIVITY.getCode(),
+                PointActivityTypeEnum.MONTHLY_ACTIVITY.getCode()
         );
 
         // 按优先级遍历活动类型
@@ -432,21 +435,21 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
             try {
                 // 查询该活动类型下所有进行中的"完成订单"任务
                 List<PointActivityTask> taskList = pointActivityTaskService.list(
-                    Wrappers.lambdaQuery(PointActivityTask.class)
-                        .eq(PointActivityTask::getTaskName, ActivityNameEnum.COMPLETE_ORDER.getInfo())
-                        .eq(PointActivityTask::getStatus, 0)
-                        .eq(PointActivityTask::getIsDeleted, 0)
+                        Wrappers.lambdaQuery(PointActivityTask.class)
+                                .eq(PointActivityTask::getTaskName, ActivityNameEnum.COMPLETE_ORDER.getInfo())
+                                .eq(PointActivityTask::getStatus, 0)
+                                .eq(PointActivityTask::getIsDeleted, 0)
                 );
 
                 // 过滤出属于该活动类型的任务
                 taskList = taskList.stream()
-                    .filter(task -> {
-                        PointActivity activity = pointActivityService.getById(task.getActivityId());
-                        return activity != null
-                            && activity.getActivityType().equals(activityType)
-                            && activity.getStatus().equals(PointActivityStatusEnum.IN_PROGRESS.getCode());
-                    })
-                    .collect(Collectors.toList());
+                        .filter(task -> {
+                            PointActivity activity = pointActivityService.getById(task.getActivityId());
+                            return activity != null
+                                    && activity.getActivityType().equals(activityType)
+                                    && activity.getStatus().equals(PointActivityStatusEnum.IN_PROGRESS.getCode());
+                        })
+                        .collect(Collectors.toList());
 
                 if (CollectionUtil.isEmpty(taskList)) {
                     continue;
@@ -474,11 +477,11 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
                         if (orderCount >= targetCount) {
                             // 查询是否已经完成过该任务
                             PointUserActivityTaskCompletion existingRecord = this.getOne(
-                                new LambdaQueryWrapper<PointUserActivityTaskCompletion>()
-                                    .eq(PointUserActivityTaskCompletion::getOpenId, openId)
-                                    .eq(PointUserActivityTaskCompletion::getTaskId, task.getId())
-                                    .eq(PointUserActivityTaskCompletion::getActivityId, activity.getId())
-                                    .eq(PointUserActivityTaskCompletion::getTaskType, PointActivityTaskTypeEnum.COMPLETE_ORDER.getCode())
+                                    new LambdaQueryWrapper<PointUserActivityTaskCompletion>()
+                                            .eq(PointUserActivityTaskCompletion::getOpenId, openId)
+                                            .eq(PointUserActivityTaskCompletion::getTaskId, task.getId())
+                                            .eq(PointUserActivityTaskCompletion::getActivityId, activity.getId())
+                                            .eq(PointUserActivityTaskCompletion::getTaskType, PointActivityTaskTypeEnum.COMPLETE_ORDER.getCode())
                             );
 
                             // 检查是否已经达到目标次数(防刷)
@@ -492,13 +495,14 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
 
                             // 发放积分
                             pointAccountService.addPoints(
-                                openId,
-                                task.getRewardPoints().intValue(),
-                                ActivityNameEnum.COMPLETE_ORDER.getInfo(),
-                                null,
-                                activity.getId(),
-                                task.getId(),
-                                PointActivityTaskTypeEnum.COMPLETE_ORDER.getCode()
+                                    openId,
+                                    task.getRewardPoints().intValue(),
+                                    activity.getName(),
+                                    null,
+                                    activity.getId(),
+                                    task.getId(),
+                                    PointActivityTaskTypeEnum.COMPLETE_ORDER.getCode(),
+                                    ActivityNameEnum.COMPLETE_ORDER.getInfo()
                             );
 
                             // 成功完成一个任务后,跳出循环(只完成优先级最高的一个任务)
@@ -507,7 +511,7 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
                     } catch (ServiceException e) {
                         // 如果任务已完成或不符合条件,继续尝试下一个任务
                         if (!e.getMessage().contains("今日任务已完成")
-                            && !e.getMessage().contains("任务奖励已领取")) {
+                                && !e.getMessage().contains("任务奖励已领取")) {
                             // 其他异常则抛出
                             throw e;
                         }
@@ -525,9 +529,9 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
     public void completeRechargeTaskByPriority(String openId) {
         // 活动类型优先级:新手活动、每日活动、每月活动
         List<Integer> priorityTypes = Arrays.asList(
-            PointActivityTypeEnum.NEW_USER_ACTIVITY.getCode(),
-            PointActivityTypeEnum.DAILY_ACTIVITY.getCode(),
-            PointActivityTypeEnum.MONTHLY_ACTIVITY.getCode()
+                PointActivityTypeEnum.NEW_USER_ACTIVITY.getCode(),
+                PointActivityTypeEnum.DAILY_ACTIVITY.getCode(),
+                PointActivityTypeEnum.MONTHLY_ACTIVITY.getCode()
         );
 
         // 按优先级遍历活动类型
@@ -535,21 +539,21 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
             try {
                 // 查询该活动类型下所有进行中的"充值任务"
                 List<PointActivityTask> taskList = pointActivityTaskService.list(
-                    Wrappers.lambdaQuery(PointActivityTask.class)
-                        .eq(PointActivityTask::getTaskName, ActivityNameEnum.RECHARGE_TASK.getInfo())
-                        .eq(PointActivityTask::getStatus, 0)
-                        .eq(PointActivityTask::getIsDeleted, 0)
+                        Wrappers.lambdaQuery(PointActivityTask.class)
+                                .eq(PointActivityTask::getTaskName, ActivityNameEnum.RECHARGE_TASK.getInfo())
+                                .eq(PointActivityTask::getStatus, 0)
+                                .eq(PointActivityTask::getIsDeleted, 0)
                 );
 
                 // 过滤出属于该活动类型的任务
                 taskList = taskList.stream()
-                    .filter(task -> {
-                        PointActivity activity = pointActivityService.getById(task.getActivityId());
-                        return activity != null
-                            && activity.getActivityType().equals(activityType)
-                            && activity.getStatus().equals(PointActivityStatusEnum.IN_PROGRESS.getCode());
-                    })
-                    .collect(Collectors.toList());
+                        .filter(task -> {
+                            PointActivity activity = pointActivityService.getById(task.getActivityId());
+                            return activity != null
+                                    && activity.getActivityType().equals(activityType)
+                                    && activity.getStatus().equals(PointActivityStatusEnum.IN_PROGRESS.getCode());
+                        })
+                        .collect(Collectors.toList());
 
                 if (CollectionUtil.isEmpty(taskList)) {
                     continue;
@@ -577,11 +581,11 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
                         if (rechargeCount >= targetCount) {
                             // 查询是否已经完成过该任务
                             PointUserActivityTaskCompletion existingRecord = this.getOne(
-                                new LambdaQueryWrapper<PointUserActivityTaskCompletion>()
-                                    .eq(PointUserActivityTaskCompletion::getOpenId, openId)
-                                    .eq(PointUserActivityTaskCompletion::getTaskId, task.getId())
-                                    .eq(PointUserActivityTaskCompletion::getActivityId, activity.getId())
-                                    .eq(PointUserActivityTaskCompletion::getTaskType, PointActivityTaskTypeEnum.RECHARGE_TASK.getCode())
+                                    new LambdaQueryWrapper<PointUserActivityTaskCompletion>()
+                                            .eq(PointUserActivityTaskCompletion::getOpenId, openId)
+                                            .eq(PointUserActivityTaskCompletion::getTaskId, task.getId())
+                                            .eq(PointUserActivityTaskCompletion::getActivityId, activity.getId())
+                                            .eq(PointUserActivityTaskCompletion::getTaskType, PointActivityTaskTypeEnum.RECHARGE_TASK.getCode())
                             );
 
                             // 检查是否已经达到目标次数(防刷)
@@ -595,13 +599,14 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
 
                             // 发放积分
                             pointAccountService.addPoints(
-                                openId,
-                                task.getRewardPoints().intValue(),
-                                ActivityNameEnum.RECHARGE_TASK.getInfo(),
-                                null,
-                                activity.getId(),
-                                task.getId(),
-                                PointActivityTaskTypeEnum.RECHARGE_TASK.getCode()
+                                    openId,
+                                    task.getRewardPoints().intValue(),
+                                    activity.getName(),
+                                    null,
+                                    activity.getId(),
+                                    task.getId(),
+                                    PointActivityTaskTypeEnum.RECHARGE_TASK.getCode(),
+                                    ActivityNameEnum.RECHARGE_TASK.getInfo()
                             );
 
                             // 成功完成一个任务后,跳出循环(只完成优先级最高的一个任务)
@@ -610,7 +615,7 @@ public class PointUserActivityTaskCompletionServiceImpl extends ServiceImpl<Poin
                     } catch (ServiceException e) {
                         // 如果任务已完成或不符合条件,继续尝试下一个任务
                         if (!e.getMessage().contains("今日任务已完成")
-                            && !e.getMessage().contains("任务奖励已领取")) {
+                                && !e.getMessage().contains("任务奖励已领取")) {
                             // 其他异常则抛出
                             throw e;
                         }

+ 1 - 0
nightFragrance-massage/src/main/resources/mapper/point/PointUserLogMapper.xml

@@ -10,6 +10,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="activityId"    column="activity_id"    />
         <result property="activityName"    column="activity_name"    />
         <result property="taskId"    column="task_id"    />
+        <result property="taskName"    column="task_name"    />
         <result property="taskType"    column="task_type"    />
         <result property="points"    column="points"    />
         <result property="balanceAfter"    column="balance_after"    />