fix:修复评委打分403
This commit is contained in:
parent
f2c10d5e32
commit
1d43501983
@ -129,4 +129,12 @@ public class ContestReviewController {
|
||||
public Result<Map<String, Object>> calculateFinalScore(@PathVariable Long workId) {
|
||||
return Result.success(contestReviewService.calculateFinalScore(workId));
|
||||
}
|
||||
|
||||
@GetMapping("/judge/contests/{contestId}/detail")
|
||||
@RequirePermission("review:read")
|
||||
@Operation(summary = "获取评委视角的赛事详情(含评审规则)")
|
||||
public Result<Map<String, Object>> getJudgeContestDetail(@PathVariable Long contestId) {
|
||||
Long judgeId = SecurityUtil.getCurrentUserId();
|
||||
return Result.success(contestReviewService.getJudgeContestDetail(judgeId, contestId));
|
||||
}
|
||||
}
|
||||
|
||||
@ -31,4 +31,6 @@ public interface IContestReviewService {
|
||||
List<Map<String, Object>> getWorkScores(Long workId);
|
||||
|
||||
Map<String, Object> calculateFinalScore(Long workId);
|
||||
|
||||
Map<String, Object> getJudgeContestDetail(Long judgeId, Long contestId);
|
||||
}
|
||||
|
||||
@ -668,4 +668,51 @@ public class ContestReviewServiceImpl implements IContestReviewService {
|
||||
result.put("calculationRule", calculationRule);
|
||||
return result;
|
||||
}
|
||||
|
||||
// ====== 评委赛事详情 ======
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getJudgeContestDetail(Long judgeId, Long contestId) {
|
||||
log.info("获取评委赛事详情,评委ID:{},赛事ID:{}", judgeId, contestId);
|
||||
|
||||
// 验证评委属于该赛事
|
||||
LambdaQueryWrapper<BizContestJudge> judgeWrapper = new LambdaQueryWrapper<>();
|
||||
judgeWrapper.eq(BizContestJudge::getContestId, contestId);
|
||||
judgeWrapper.eq(BizContestJudge::getJudgeId, judgeId);
|
||||
judgeWrapper.eq(BizContestJudge::getValidState, 1);
|
||||
if (judgeMapper.selectCount(judgeWrapper) == 0) {
|
||||
throw BusinessException.of(ErrorCode.FORBIDDEN, "您不是该赛事的评委");
|
||||
}
|
||||
|
||||
BizContest contest = contestMapper.selectById(contestId);
|
||||
if (contest == null) {
|
||||
throw BusinessException.of(ErrorCode.NOT_FOUND, "赛事不存在");
|
||||
}
|
||||
|
||||
Map<String, Object> result = new LinkedHashMap<>();
|
||||
result.put("contestId", contest.getId());
|
||||
result.put("contestName", contest.getContestName());
|
||||
result.put("contestType", contest.getContestType());
|
||||
result.put("contestState", contest.getContestState());
|
||||
result.put("status", contest.getStatus());
|
||||
result.put("reviewStartTime", contest.getReviewStartTime());
|
||||
result.put("reviewEndTime", contest.getReviewEndTime());
|
||||
|
||||
// 评审规则(前端ReviewWorkModal需要此数据)
|
||||
if (contest.getReviewRuleId() != null) {
|
||||
BizContestReviewRule rule = reviewRuleMapper.selectById(contest.getReviewRuleId());
|
||||
if (rule != null) {
|
||||
Map<String, Object> ruleMap = new LinkedHashMap<>();
|
||||
ruleMap.put("id", rule.getId());
|
||||
ruleMap.put("ruleName", rule.getRuleName());
|
||||
ruleMap.put("ruleDescription", rule.getRuleDescription());
|
||||
ruleMap.put("judgeCount", rule.getJudgeCount());
|
||||
ruleMap.put("dimensions", rule.getDimensions());
|
||||
ruleMap.put("calculationRule", rule.getCalculationRule());
|
||||
result.put("reviewRule", ruleMap);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1242,6 +1242,14 @@ export const reviewsApi = {
|
||||
>(`/contests/reviews/judge/contests/${contestId}/works`, { params });
|
||||
return response;
|
||||
},
|
||||
|
||||
// 获取评委视角的赛事详情(含评审规则)
|
||||
getJudgeContestDetail: async (contestId: number): Promise<any> => {
|
||||
const response = await request.get<any, any>(
|
||||
`/contests/reviews/judge/contests/${contestId}/detail`
|
||||
);
|
||||
return response;
|
||||
},
|
||||
};
|
||||
|
||||
// 公告管理
|
||||
|
||||
@ -490,7 +490,7 @@ const fetchWorkDetail = async () => {
|
||||
// 获取活动的评审规则
|
||||
if (props.contestId) {
|
||||
try {
|
||||
const contest = await contestsApi.getDetail(props.contestId);
|
||||
const contest = await reviewsApi.getJudgeContestDetail(props.contestId);
|
||||
|
||||
if (contest.reviewRule) {
|
||||
// 确保 dimensions 是数组(可能是 JSON 字符串)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user