diff --git a/backend/src/main/java/com/designhub/service/TaskService.java b/backend/src/main/java/com/designhub/service/TaskService.java index d61f8de..96b7990 100644 --- a/backend/src/main/java/com/designhub/service/TaskService.java +++ b/backend/src/main/java/com/designhub/service/TaskService.java @@ -1964,18 +1964,44 @@ public class TaskService { Long todayNewCount = taskMapper.selectCount(todayNewQuery); // 获取总积分 - LambdaQueryWrapper scoreQuery = new LambdaQueryWrapper() - .eq(Task::getStatus, "completed") - .select(Task::getScoreReward); - if (!isAdmin) { - scoreQuery.eq(Task::getReceiverId, userId); + int totalScore = 0; + if (isDeptView && "demand".equals(deptType)) { + // 需求部门视角:统计该部门发布任务消耗的总积分 + LambdaQueryWrapper scoreQuery = new LambdaQueryWrapper() + .in(Task::getPublisherDeptId, deptAndChildIds) + .select(Task::getScore); + List publishedTasks = taskMapper.selectList(scoreQuery); + totalScore = publishedTasks.stream() + .filter(t -> t.getScore() != null) + .mapToInt(Task::getScore) + .sum(); + log.debug("需求部门积分统计: deptIds={}, totalScore={}", deptAndChildIds, totalScore); + } else if (isDeptView && "receiving".equals(deptType)) { + // 接单部门视角:统计该部门设计师获得的总积分 + LambdaQueryWrapper scoreQuery = new LambdaQueryWrapper() + .eq(Task::getStatus, "completed") + .in(Task::getReceiverDeptId, deptAndChildIds) + .select(Task::getScoreReward); + List completedTasks = taskMapper.selectList(scoreQuery); + totalScore = completedTasks.stream() + .filter(t -> t.getScoreReward() != null) + .mapToInt(t -> t.getScoreReward().intValue()) + .sum(); + log.debug("接单部门积分统计: deptIds={}, totalScore={}", deptAndChildIds, totalScore); + } else { + // 个人视角:统计当前用户获得的积分 + LambdaQueryWrapper scoreQuery = new LambdaQueryWrapper() + .eq(Task::getStatus, "completed") + .select(Task::getScoreReward); + if (!isAdmin) { + scoreQuery.eq(Task::getReceiverId, userId); + } + List completedTasks = taskMapper.selectList(scoreQuery); + totalScore = completedTasks.stream() + .filter(t -> t.getScoreReward() != null) + .mapToInt(t -> t.getScoreReward().intValue()) + .sum(); } - List completedTasks = taskMapper.selectList(scoreQuery); - - int totalScore = completedTasks.stream() - .filter(t -> t.getScoreReward() != null) - .mapToInt(t -> t.getScoreReward().intValue()) - .sum(); // 获取当月发布的任务数 Long publishedCount = 0L;