Kaynağa Gözat

调整做任务赚积分接口

wangzhijun 3 gün önce
ebeveyn
işleme
db4d06cf9e

+ 24 - 29
nightFragrance-massage/src/main/java/com/ylx/point/service/impl/PointActivityServiceImpl.java

@@ -297,14 +297,34 @@ public class PointActivityServiceImpl extends ServiceImpl<PointActivityMapper, P
             Map<Long, PointUserActivityTaskCompletion> completionMap = completionList.stream()
                     .collect(Collectors.toMap(PointUserActivityTaskCompletion::getTaskId, c -> c));
 
-            // 5. 筛选【未完成】的任务
+            // 5. 对任务进行排序:未完成优先,创建时间正序
+            taskList.sort((t1, t2) -> {
+                PointUserActivityTaskCompletion comp1 = completionMap.get(t1.getId());
+                PointUserActivityTaskCompletion comp2 = completionMap.get(t2.getId());
+                
+                // 判断是否已完成
+                boolean isCompleted1 = comp1 != null;
+                boolean isCompleted2 = comp2 != null;
+                
+                // 未完成优先
+                if (isCompleted1 != isCompleted2) {
+                    return isCompleted1 ? 1 : -1;
+                }
+                
+                // 同一状态按创建时间正序排列
+                if (t1.getCreateTime() != null && t2.getCreateTime() != null) {
+                    return t1.getCreateTime().compareTo(t2.getCreateTime());
+                }
+                
+                return 0;
+            });
+
+            // 6. 筛选任务并添加到结果列表
             for (PointActivityTask task : taskList) {
                 if (resultList.size() >= TARGET_COUNT) break;
 
                 PointUserActivityTaskCompletion completion = completionMap.get(task.getId());
-                if (isTaskIncomplete(task, completion)) {
-                    resultList.add(convertToVo(task, completion));
-                }
+                resultList.add(convertToVo(task, completion));
             }
         }
 
@@ -488,31 +508,6 @@ public class PointActivityServiceImpl extends ServiceImpl<PointActivityMapper, P
         }
     }
 
-    /**
-     * 判断任务是否未完成
-     */
-    private boolean isTaskIncomplete(PointActivityTask task, PointUserActivityTaskCompletion completion) {
-
-        // 1. 获取规则要求的次数
-        int requiredCount = 0;
-        try {
-            requiredCount = Integer.parseInt(task.getTriggerValue());
-        } catch (NumberFormatException e) {
-            // 如果配置错误,为了安全起见,默认视为未完成(或根据业务抛出异常)
-            return true;
-        }
-
-        // 2. 获取用户实际完成的次数
-        int actualCount = 0;
-        if (ObjectUtil.isNotNull(completion) && ObjectUtil.isNotNull(completion.getCompletedCount())) {
-            actualCount = completion.getCompletedCount();
-        }
-
-        // 3. 核心判断逻辑
-        // 如果 实际次数 < 要求次数,则任务“未完成” (返回 true)
-        return actualCount < requiredCount;
-    }
-
     /**
      * 组装 VO 对象
      */

+ 7 - 2
nightFragrance-massage/src/main/resources/mapper/point/PointActivityTaskMapper.xml

@@ -107,10 +107,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         WHERE
             a.activity_type = #{activityType}
         AND t.is_deleted = 0
-        AND t.status = 1
+        AND t.status = 0
         AND a.status = 1
+        AND (
+            (a.is_permanent = '1')
+            OR (a.start_time &lt;= NOW() AND a.end_time &gt;= NOW())
+        )
         ORDER BY
-            t.sort_order ASC,         -- 按排序字段正序排列
+            t.create_time ASC,
+            t.sort_order ASC,
             t.id ASC
     </select>