Ver Fonte

chore: auto bump version and changelog [skip ci]

iwt há 1 semana atrás
pai
commit
9d95adf509

+ 24 - 0
cfc-backend/src/main/java/com/etotem/cfc/controller/HealthExerciseController.java

@@ -72,6 +72,30 @@ public class HealthExerciseController {
         if (!hasContent) return Result.error("请填写运动时长或添加图片/语音");
         record.setCreatedAt(new Date());
         healthExerciseRecordMapper.insert(record);
+        
+        // ===== 任务回写挂钩 =====
+        try {
+            if (record.getTaskId() != null) {
+                // 一次性任务:直接完成
+                Task linkedTask = taskMapper.selectById(record.getTaskId());
+                if (linkedTask != null) {
+                    taskService.completeTask(
+                            record.getTaskId(),
+                            record.getMemberId(),
+                            record.getPhotoUrls() != null ? record.getPhotoUrls() : "",
+                            record.getRemark() != null ? record.getRemark() : "运动打卡",
+                            "text");
+                }
+            } else {
+                // 每日进度型任务:累计进度
+                com.etotem.cfc.entity.FamilyMember fm = familyMemberMapper.selectById(record.getMemberId());
+                if (fm != null && fm.getUserId() != null) {
+                    taskService.updateProgress(fm.getUserId(), "EXERCISE", 1);
+                }
+            }
+        } catch (Exception e) {
+            log.warn("运动打卡任务回写失败: {}", e.getMessage());
+        }
                 // 触发画像重算
         try {
             Long triggerMemberId = record.getMemberId();

+ 17 - 10
cfc-backend/src/main/java/com/etotem/cfc/controller/HealthMealController.java

@@ -4,27 +4,25 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.etotem.cfc.common.Result;
 import com.etotem.cfc.entity.HealthMealRecord;
 import com.etotem.cfc.entity.FoodRecommendIndex;
+import com.etotem.cfc.entity.FamilyMember;
 import com.etotem.cfc.entity.Task;
 import com.etotem.cfc.entity.FamilyMember;
 import com.etotem.cfc.mapper.HealthMealRecordMapper;
 import com.etotem.cfc.mapper.FoodRecommendIndexMapper;
 import com.etotem.cfc.mapper.TaskMapper;
 import com.etotem.cfc.mapper.FamilyMemberMapper;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import java.sql.Date;
-import java.time.LocalDate;
-import java.time.format.DateTimeFormatter;
-import java.util.*;
-import java.util.stream.Collectors;
 import com.etotem.cfc.service.PointsService;
 import com.etotem.cfc.service.TaskService;
+import com.etotem.cfc.service.ProfileComputeService;
+import com.etotem.cfc.service.PointsService;
+import com.etotem.cfc.service.TaskService;
+import com.etotem.cfc.util.ParamUtils;
+import lombok.extern.slf4j.Slf4j;
+import com.etotem.cfc.service.ProfileComputeService;
 import com.etotem.cfc.util.ParamUtils;
 import lombok.extern.slf4j.Slf4j;
 
+@Slf4j
 @Tag(name = "饮食打卡")
 @RestController
 @RequestMapping("/api/health/meal")
@@ -39,6 +37,15 @@ public class HealthMealController {
     @Resource
     private PointsService pointsService;
 
+    @Resource
+    private TaskService taskService;
+
+    @Resource
+    private TaskMapper taskMapper;
+
+    @Resource
+    private FamilyMemberMapper familyMemberMapper;
+
     @Resource
     private com.etotem.cfc.service.ProfileComputeService profileComputeService;
 

+ 41 - 1
cfc-backend/src/main/java/com/etotem/cfc/controller/HealthSleepController.java

@@ -3,7 +3,11 @@ package com.etotem.cfc.controller;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.etotem.cfc.common.Result;
 import com.etotem.cfc.entity.HealthSleepRecord;
+import com.etotem.cfc.entity.Task;
+import com.etotem.cfc.entity.FamilyMember;
 import com.etotem.cfc.mapper.HealthSleepRecordMapper;
+import com.etotem.cfc.mapper.TaskMapper;
+import com.etotem.cfc.mapper.FamilyMemberMapper;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.web.bind.annotation.*;
@@ -14,7 +18,10 @@ import java.util.List;
 import java.util.Map;
 import com.etotem.cfc.util.SortUtil;
 import com.etotem.cfc.util.ParamUtils;
+import com.etotem.cfc.service.TaskService;
+import lombok.extern.slf4j.Slf4j;
 
+@Slf4j
 @Tag(name = "睡眠打卡")
 @RestController
 @RequestMapping("/api/health/sleep")
@@ -23,6 +30,15 @@ public class HealthSleepController {
     @Resource
     private HealthSleepRecordMapper healthSleepRecordMapper;
 
+    @Resource
+    private TaskService taskService;
+
+    @Resource
+    private TaskMapper taskMapper;
+
+    @Resource
+    private FamilyMemberMapper familyMemberMapper;
+
     @Resource
     private com.etotem.cfc.service.ProfileComputeService profileComputeService;
 
@@ -50,7 +66,31 @@ public class HealthSleepController {
         if (record.getWakeTime() == null) return Result.error("请选择醒来时间");
         record.setCreatedAt(new Date());
         healthSleepRecordMapper.insert(record);
-                // 触发画像重算
+
+        // ===== 任务回写挂钩 =====
+        try {
+            if (record.getTaskId() != null) {
+                Task linkedTask = taskMapper.selectById(record.getTaskId());
+                if (linkedTask != null) {
+                    taskService.completeTask(
+                            record.getTaskId(),
+                            record.getMemberId(),
+                            "",
+                            record.getRemark() != null ? record.getRemark() : "睡眠打卡",
+                            "text");
+                }
+            } else {
+                // 每日进度型任务:累计进度
+                com.etotem.cfc.entity.FamilyMember fm = familyMemberMapper.selectById(record.getMemberId());
+                if (fm != null && fm.getUserId() != null) {
+                    taskService.updateProgress(fm.getUserId(), "SLEEP", 1);
+                }
+            }
+        } catch (Exception e) {
+            log.warn("睡眠打卡任务回写失败: {}", e.getMessage());
+        }
+
+        // 触发画像重算
         try {
             Long triggerMemberId = record.getMemberId();
             if (triggerMemberId != null) {

+ 1 - 1
cfc-web/.last_build_commit

@@ -1 +1 @@
-d3dd21973c73e18af07624350995515e0a1a5ef2
+9b071c174e6ca176a931c1e9a89f4f6f0f6cb956