From 3733713e5c2c29eca823e4951afe9b91ce84415b Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 4 Jan 2026 08:19:29 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=A1=AE=E4=BF=9D=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=91=98=E5=8F=AF=E4=BB=A5=E7=9C=8B=E5=88=B0=E6=89=80=E6=9C=89?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 待审核任务:管理员可看到所有待审核任务 - 待审核子任务组:管理员可看到所有待审核子任务组 - 进行中子任务:管理员可看到所有进行中子任务 - 已完成子任务:管理员可看到所有已完成子任务 --- .../controller/TaskItemController.java | 27 ++++++++++++++++--- .../com/designhub/mapper/TaskItemMapper.java | 12 ++++----- .../service/TaskApprovalService.java | 22 ++++++++++----- .../designhub/service/TaskItemService.java | 7 ++--- 4 files changed, 50 insertions(+), 18 deletions(-) diff --git a/backend/src/main/java/com/designhub/controller/TaskItemController.java b/backend/src/main/java/com/designhub/controller/TaskItemController.java index 3a7214d..7d6ed26 100644 --- a/backend/src/main/java/com/designhub/controller/TaskItemController.java +++ b/backend/src/main/java/com/designhub/controller/TaskItemController.java @@ -55,7 +55,13 @@ public class TaskItemController { String actualToken = token.replace("Bearer ", ""); Long userId = jwtUtil.getUserIdFromToken(actualToken); - IPage items = taskItemService.getInProgressItems(page, pageSize, userId); + + // 检查是否是管理员 + com.designhub.entity.User user = userMapper.selectById(userId); + boolean isAdmin = user != null && Integer.valueOf(1).equals(user.getIsAdmin()); + + // 管理员可以看到所有进行中的子任务 + IPage items = taskItemService.getInProgressItems(page, pageSize, isAdmin ? null : userId); return Result.success(items); } @@ -71,7 +77,13 @@ public class TaskItemController { String actualToken = token.replace("Bearer ", ""); Long userId = jwtUtil.getUserIdFromToken(actualToken); - IPage items = taskItemService.getCompletedItems(page, pageSize, userId); + + // 检查是否是管理员 + com.designhub.entity.User user = userMapper.selectById(userId); + boolean isAdmin = user != null && Integer.valueOf(1).equals(user.getIsAdmin()); + + // 管理员可以看到所有已完成的子任务 + IPage items = taskItemService.getCompletedItems(page, pageSize, isAdmin ? null : userId); return Result.success(items); } @@ -227,9 +239,18 @@ public class TaskItemController { String actualToken = token.replace("Bearer ", ""); Long userId = jwtUtil.getUserIdFromToken(actualToken); + // 检查是否是管理员 + com.designhub.entity.User user = userMapper.selectById(userId); + boolean isAdmin = user != null && Integer.valueOf(1).equals(user.getIsAdmin()); + + // 管理员可以看到所有待审核子任务组 + if (isAdmin) { + List> groups = taskItemService.getPendingApprovalGroups(null); + return Result.success(groups); + } + // 如果没有提供部门ID,从用户信息中获取 if (deptId == null) { - com.designhub.entity.User user = userMapper.selectById(userId); if (user == null || user.getDeptId() == null) { return Result.success(new java.util.ArrayList<>()); } diff --git a/backend/src/main/java/com/designhub/mapper/TaskItemMapper.java b/backend/src/main/java/com/designhub/mapper/TaskItemMapper.java index 034044e..f40b997 100644 --- a/backend/src/main/java/com/designhub/mapper/TaskItemMapper.java +++ b/backend/src/main/java/com/designhub/mapper/TaskItemMapper.java @@ -58,7 +58,7 @@ public interface TaskItemMapper extends BaseMapper { @Param("keyword") String keyword); /** - * 查询进行中的子任务列表(按接单人) + * 查询进行中的子任务列表(按接单人,null表示查询所有-管理员) */ @Select("") IPage selectInProgressItems(Page page, @Param("receiverId") Long receiverId); /** - * 查询已完成的子任务列表(按接单人) + * 查询已完成的子任务列表(按接单人,null表示查询所有-管理员) */ @Select("") IPage selectCompletedItems(Page page, diff --git a/backend/src/main/java/com/designhub/service/TaskApprovalService.java b/backend/src/main/java/com/designhub/service/TaskApprovalService.java index 676231c..7d9956b 100644 --- a/backend/src/main/java/com/designhub/service/TaskApprovalService.java +++ b/backend/src/main/java/com/designhub/service/TaskApprovalService.java @@ -415,14 +415,24 @@ public class TaskApprovalService { /** * 获取待审核任务列表 + * 管理员可以看到所有待审核任务 */ public List getPendingApprovalTasks(Long userId) { - List tasks = taskMapper.selectList( - new LambdaQueryWrapper() - .eq(Task::getCurrentApproverId, userId) - .in(Task::getApprovalStatus, "pending_demand_approval", "pending_receiving_approval") - .orderByDesc(Task::getCreateTime) - ); + // 检查用户是否是管理员 + User user = userMapper.selectById(userId); + boolean isAdmin = user != null && Integer.valueOf(1).equals(user.getIsAdmin()); + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(Task::getApprovalStatus, "pending_demand_approval", "pending_receiving_approval"); + + // 非管理员只能看到分配给自己的待审核任务 + if (!isAdmin) { + wrapper.eq(Task::getCurrentApproverId, userId); + } + + wrapper.orderByDesc(Task::getCreateTime); + + List tasks = taskMapper.selectList(wrapper); // 填充关联信息 for (Task task : tasks) { diff --git a/backend/src/main/java/com/designhub/service/TaskItemService.java b/backend/src/main/java/com/designhub/service/TaskItemService.java index a7a6d72..32410e6 100644 --- a/backend/src/main/java/com/designhub/service/TaskItemService.java +++ b/backend/src/main/java/com/designhub/service/TaskItemService.java @@ -657,10 +657,10 @@ public class TaskItemService { /** * 获取待审核的子任务组列表(按主任务分组) - * @param receiverDeptId 接单部门ID + * @param receiverDeptId 接单部门ID,null表示查询所有(管理员) */ public List> getPendingApprovalGroups(Long receiverDeptId) { - // 查询该部门所有有待审核子任务组的主任务 + // 查询所有有待审核子任务组的主任务 List pendingItems = taskItemMapper.selectList( new LambdaQueryWrapper() .eq(TaskItem::getStatus, "pending_approval") @@ -670,7 +670,8 @@ public class TaskItemService { Map> groupMap = new HashMap<>(); for (TaskItem item : pendingItems) { Task mainTask = taskMapper.selectById(item.getTaskId()); - if (mainTask != null && receiverDeptId.equals(mainTask.getReceiverDeptId())) { + // receiverDeptId为null表示管理员,可以看到所有任务 + if (mainTask != null && (receiverDeptId == null || receiverDeptId.equals(mainTask.getReceiverDeptId()))) { String key = item.getTaskId() + "-" + item.getGroupNo(); if (!groupMap.containsKey(key)) { Map groupInfo = new HashMap<>();