diff --git a/backend/src/main/java/com/designhub/service/TaskService.java b/backend/src/main/java/com/designhub/service/TaskService.java index 28d113d..7d4675d 100644 --- a/backend/src/main/java/com/designhub/service/TaskService.java +++ b/backend/src/main/java/com/designhub/service/TaskService.java @@ -2550,9 +2550,12 @@ public class TaskService { Task task = getTaskById(taskId); - // 验证权限(必须是任务发布人) - if (!userId.equals(task.getPublisherId())) { - throw new BusinessException(ResultCode.FORBIDDEN, "只有任务发布人可以评分"); + // 验证权限(必须是任务发布人、一级需求发起人或明细完善人) + boolean isPublisher = userId.equals(task.getPublisherId()); + boolean isPrimaryPublisher = userId.equals(task.getPrimaryPublisherId()); + boolean isDetailCompleter = userId.equals(task.getDetailCompleterId()); + if (!isPublisher && !isPrimaryPublisher && !isDetailCompleter) { + throw new BusinessException(ResultCode.FORBIDDEN, "只有任务发布人、一级需求发起人或明细完善人可以评分"); } // 验证任务状态(必须是已完成) diff --git a/frontend/src/views/TaskHall.vue b/frontend/src/views/TaskHall.vue index 992727a..76c7d33 100644 --- a/frontend/src/views/TaskHall.vue +++ b/frontend/src/views/TaskHall.vue @@ -5174,10 +5174,16 @@ const canCompleteTask = (task: TaskOrSubTask) => { return task.receiverId === userInfo.id && (task.progress || 0) >= 100 } -// 判断是否是任务发布人 +// 判断是否是任务发布人(包括一级需求发起人) const isTaskPublisher = (task: TaskOrSubTask) => { const userInfo = JSON.parse(localStorage.getItem('userInfo') || '{}') - return task.publisherId === userInfo.id + // 普通发起人 + if (task.publisherId === userInfo.id) return true + // 一级需求发起人 + if ((task as any).primaryPublisherId === userInfo.id) return true + // 明细完善人 + if ((task as any).detailCompleterId === userInfo.id) return true + return false } // 显示评分弹窗 @@ -5933,13 +5939,17 @@ const loadTaskProducts = async (taskId: number) => { } } -// 判断是否可以管理商品ID(任务发起者或管理员) +// 判断是否可以管理商品ID(任务发起者、一级需求发起人、明细完善人或管理员) const canManageProducts = (task: TaskOrSubTask) => { const userInfo = JSON.parse(localStorage.getItem('userInfo') || '{}') // 管理员可以管理 if (userInfo.isAdmin === 1 || userInfo.isAdmin === true) return true // 任务发起者可以管理 if (task.publisherId && task.publisherId === userInfo.id) return true + // 一级需求发起人可以管理 + if ((task as any).primaryPublisherId && (task as any).primaryPublisherId === userInfo.id) return true + // 明细完善人可以管理 + if ((task as any).detailCompleterId && (task as any).detailCompleterId === userInfo.id) return true return false }