Browse Source

feat(tasks): 任务首页重设计 - 支持分配任务给家庭成员,接受/拒绝机制及关系分数调整

iwt 1 month ago
parent
commit
1120fbee57

+ 38 - 0
cfc-backend/src/main/java/com/etotem/cfc/controller/task/TaskController.java

@@ -175,4 +175,42 @@ public class TaskController {
             return Result.error("批量操作失败: " + e.getMessage());
         }
     }
+
+    @Operation(summary = "获取我收到的待接受任务列表")
+    @PostMapping("/my-pending")
+    public Result<List<Task>> getMyPendingTasks(@RequestAttribute(value = "currentMemberId", required = false) Long currentMemberId,
+                                                @RequestBody Map<String, Object> params) {
+        Long memberId = params.get("memberId") != null ? Long.valueOf(params.get("memberId").toString()) : currentMemberId;
+        if (memberId == null) {
+            return Result.error("memberId不能为空");
+        }
+        List<Task> tasks = taskService.getMyPendingTasks(memberId);
+        return Result.success(tasks);
+    }
+
+    @Operation(summary = "接受任务")
+    @PostMapping("/accept")
+    public Result<Boolean> acceptTask(@PathVariable Long id,
+                                      @RequestAttribute(value = "currentMemberId", required = false) Long currentMemberId,
+                                      @RequestBody Map<String, Object> params) {
+        Long memberId = params.get("memberId") != null ? Long.valueOf(params.get("memberId").toString()) : currentMemberId;
+        if (memberId == null) {
+            return Result.error("memberId不能为空");
+        }
+        boolean success = taskService.acceptTask(id, memberId);
+        return Result.success(success);
+    }
+
+    @Operation(summary = "拒绝任务")
+    @PostMapping("/reject/{id}")
+    public Result<Boolean> rejectTask(@PathVariable Long id,
+                                      @RequestAttribute(value = "currentMemberId", required = false) Long currentMemberId,
+                                      @RequestBody Map<String, Object> params) {
+        Long memberId = params.get("memberId") != null ? Long.valueOf(params.get("memberId").toString()) : currentMemberId;
+        if (memberId == null) {
+            return Result.error("memberId不能为空");
+        }
+        boolean success = taskService.rejectTask(id, memberId);
+        return Result.success(success);
+    }
 }

+ 3 - 1
cfc-backend/src/main/java/com/etotem/cfc/service/TaskService.java

@@ -194,7 +194,9 @@ public class TaskService implements TaskServiceInterface {
         }
 
 task.setReviewByCategory(dto.getReviewByCategory() != null ? dto.getReviewByCategory() : 0);
-        task.setStatus("pending");
+        if (!"assigned".equals(task.getStatus())) {
+            task.setStatus("pending");
+        }
         task.setCreatedAt(new Date());
         task.setUpdatedAt(new Date());
 

+ 15 - 0
cfc-frontend/utils/api.js

@@ -536,6 +536,21 @@ export const completeParentTask = (taskId) => {
   return request(`/api/tasks/${taskId}/complete-parent`, 'POST', {})
 }
 
+// ===
+// 家庭成员任务分配模块
+// ===
+export const getMyPendingTasks = (memberId) => {
+  return request('/api/tasks/my-pending', 'POST', { memberId })
+}
+
+export const acceptTask = (taskId, memberId) => {
+  return request('/api/tasks/accept', 'POST', { taskId, memberId })
+}
+
+export const rejectTask = (taskId, memberId) => {
+  return request(`/api/tasks/reject/${taskId}`, 'POST', { memberId })
+}
+
 // ===
 // 家长心愿单模块
 // ===

+ 1 - 1
cfc-web/.last_build_commit

@@ -1 +1 @@
-ac0cdfc09af1368cab08fb1a5a7075d3b020978d
+3afd3cd0af07a6eac78062b2a68e4c398e27c92f

+ 2 - 2
cfc-web/package-lock.json

@@ -1,12 +1,12 @@
 {
   "name": "cfc-web",
-  "version": "1.0.883",
+  "version": "1.0.884",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
       "name": "cfc-web",
-      "version": "1.0.883",
+      "version": "1.0.884",
       "dependencies": {
         "@wangeditor/editor": "^5.1.23",
         "@wangeditor/editor-for-vue": "^1.0.2",