From a88d077dda70c4ce995d2cd7ecb2780144c3b7f2 Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 12 Jan 2026 15:14:05 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=8E=A5=E5=8D=95?= =?UTF-8?q?=E9=83=A8=E9=97=A8=E8=B4=9F=E8=B4=A3=E4=BA=BA=E9=A9=B3=E5=9B=9E?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=97=B6=EF=BC=8C=E4=BB=BB=E5=8A=A1=E6=9C=AA?= =?UTF-8?q?=E6=8C=87=E5=AE=9A=E6=8E=A5=E5=8D=95=E9=83=A8=E9=97=A8=E7=9A=84?= =?UTF-8?q?=E6=9D=83=E9=99=90=E9=AA=8C=E8=AF=81=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designhub/service/TaskItemService.java | 29 ++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/com/designhub/service/TaskItemService.java b/backend/src/main/java/com/designhub/service/TaskItemService.java index 5c17851..bf2c53b 100644 --- a/backend/src/main/java/com/designhub/service/TaskItemService.java +++ b/backend/src/main/java/com/designhub/service/TaskItemService.java @@ -999,11 +999,32 @@ public class TaskItemService { boolean isAdmin = rejector != null && Integer.valueOf(1).equals(rejector.getIsAdmin()); if (!isAdmin) { - if (mainTask.getReceiverDeptId() == null) { - throw new BusinessException(ResultCode.FORBIDDEN, "任务未指定接单部门"); + boolean hasPermission = false; + + if (mainTask.getReceiverDeptId() != null) { + // 如果任务已指定接单部门,检查用户是否是该部门的负责人 + com.designhub.entity.Department receiverDept = departmentMapper.selectById(mainTask.getReceiverDeptId()); + if (receiverDept != null && rejectorId.equals(receiverDept.getLeaderId())) { + hasPermission = true; + log.info("用户 {} 是任务接单部门 {} 的负责人", rejectorId, mainTask.getReceiverDeptId()); + } + } else { + // 如果任务未指定接单部门,检查用户是否是任何接单部门的负责人 + List receivingDepts = departmentMapper.selectList( + new LambdaQueryWrapper() + .eq(com.designhub.entity.Department::getLeaderId, rejectorId) + .eq(com.designhub.entity.Department::getDeptType, "receiving") + .eq(com.designhub.entity.Department::getStatus, 1) + .eq(com.designhub.entity.Department::getDeleted, 0) + ); + if (!receivingDepts.isEmpty()) { + hasPermission = true; + log.info("用户 {} 是接单部门负责人(管理的接单部门:{}),允许驳回未指定接单部门的任务", + rejectorId, receivingDepts.stream().map(com.designhub.entity.Department::getDeptName).collect(java.util.stream.Collectors.toList())); + } } - com.designhub.entity.Department receiverDept = departmentMapper.selectById(mainTask.getReceiverDeptId()); - if (receiverDept == null || !rejectorId.equals(receiverDept.getLeaderId())) { + + if (!hasPermission) { throw new BusinessException(ResultCode.FORBIDDEN, "只有接单部门负责人可以驳回子任务组"); } } else {