fix: 一级需求发起人可以评分和填写商品ID
问题:一级需求部门成员发布任务完结后无法评分和填写商品ID 原因:权限判断只检查publisherId,未考虑primaryPublisherId和detailCompleterId 修复: - 前端:isTaskPublisher和canManageProducts函数增加对一级需求发起人和明细完善人的判断 - 后端:rateTask方法增加对primaryPublisherId和detailCompleterId的权限验证 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
01f0e3e3dc
commit
59e8f23370
@ -2550,9 +2550,12 @@ public class TaskService {
|
|||||||
|
|
||||||
Task task = getTaskById(taskId);
|
Task task = getTaskById(taskId);
|
||||||
|
|
||||||
// 验证权限(必须是任务发布人)
|
// 验证权限(必须是任务发布人、一级需求发起人或明细完善人)
|
||||||
if (!userId.equals(task.getPublisherId())) {
|
boolean isPublisher = userId.equals(task.getPublisherId());
|
||||||
throw new BusinessException(ResultCode.FORBIDDEN, "只有任务发布人可以评分");
|
boolean isPrimaryPublisher = userId.equals(task.getPrimaryPublisherId());
|
||||||
|
boolean isDetailCompleter = userId.equals(task.getDetailCompleterId());
|
||||||
|
if (!isPublisher && !isPrimaryPublisher && !isDetailCompleter) {
|
||||||
|
throw new BusinessException(ResultCode.FORBIDDEN, "只有任务发布人、一级需求发起人或明细完善人可以评分");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 验证任务状态(必须是已完成)
|
// 验证任务状态(必须是已完成)
|
||||||
|
|||||||
@ -5174,10 +5174,16 @@ const canCompleteTask = (task: TaskOrSubTask) => {
|
|||||||
return task.receiverId === userInfo.id && (task.progress || 0) >= 100
|
return task.receiverId === userInfo.id && (task.progress || 0) >= 100
|
||||||
}
|
}
|
||||||
|
|
||||||
// 判断是否是任务发布人
|
// 判断是否是任务发布人(包括一级需求发起人)
|
||||||
const isTaskPublisher = (task: TaskOrSubTask) => {
|
const isTaskPublisher = (task: TaskOrSubTask) => {
|
||||||
const userInfo = JSON.parse(localStorage.getItem('userInfo') || '{}')
|
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 canManageProducts = (task: TaskOrSubTask) => {
|
||||||
const userInfo = JSON.parse(localStorage.getItem('userInfo') || '{}')
|
const userInfo = JSON.parse(localStorage.getItem('userInfo') || '{}')
|
||||||
// 管理员可以管理
|
// 管理员可以管理
|
||||||
if (userInfo.isAdmin === 1 || userInfo.isAdmin === true) return true
|
if (userInfo.isAdmin === 1 || userInfo.isAdmin === true) return true
|
||||||
// 任务发起者可以管理
|
// 任务发起者可以管理
|
||||||
if (task.publisherId && task.publisherId === userInfo.id) 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
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user