From 5c761f733aa309405cc60d717ad8981ee8d342ab Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 23 Jan 2026 13:42:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E5=85=81=E8=AE=B8?= =?UTF-8?q?=E9=9C=80=E6=B1=82=E9=83=A8=E9=97=A8=E6=88=90=E5=91=98=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E5=BE=85=E5=AE=8C=E5=96=84=E6=98=8E=E7=BB=86=E7=9A=84?= =?UTF-8?q?=E4=B8=80=E7=BA=A7=E9=9C=80=E6=B1=82=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/designhub/service/TaskService.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/backend/src/main/java/com/designhub/service/TaskService.java b/backend/src/main/java/com/designhub/service/TaskService.java index 851ab6b..84c952e 100644 --- a/backend/src/main/java/com/designhub/service/TaskService.java +++ b/backend/src/main/java/com/designhub/service/TaskService.java @@ -1671,7 +1671,22 @@ public class TaskService { && existTask.getDetailCompleterId() != null && userId.equals(existTask.getDetailCompleterId()); - if (!isAdmin && !userId.equals(existTask.getPublisherId()) && !isPrimaryTaskDetailCompleter) { + // 对于一级需求任务在待完善明细状态,需求部门的成员都可以编辑 + boolean isDemandDeptMemberForPrimaryTask = false; + if (existTask.getIsPrimaryTask() != null && existTask.getIsPrimaryTask() == 1 + && "pending_detail_completion".equals(existTask.getApprovalStatus())) { + // 获取当前用户的部门类型 + User currentUser = userMapper.selectById(userId); + if (currentUser != null && currentUser.getDeptId() != null) { + Department userDept = departmentMapper.selectById(currentUser.getDeptId()); + if (userDept != null && "demand".equals(userDept.getDeptType())) { + isDemandDeptMemberForPrimaryTask = true; + log.info("需求部门成员 {} 编辑一级需求任务 {}", userId, id); + } + } + } + + if (!isAdmin && !userId.equals(existTask.getPublisherId()) && !isPrimaryTaskDetailCompleter && !isDemandDeptMemberForPrimaryTask) { throw new BusinessException(ResultCode.FORBIDDEN, "只有任务发布人或指定的明细完善人可以更新任务"); }