diff --git a/backend-java/src/main/java/com/competition/modules/biz/contest/service/impl/ContestWorkServiceImpl.java b/backend-java/src/main/java/com/competition/modules/biz/contest/service/impl/ContestWorkServiceImpl.java index dde4a62..6830473 100644 --- a/backend-java/src/main/java/com/competition/modules/biz/contest/service/impl/ContestWorkServiceImpl.java +++ b/backend-java/src/main/java/com/competition/modules/biz/contest/service/impl/ContestWorkServiceImpl.java @@ -113,6 +113,7 @@ public class ContestWorkServiceImpl extends ServiceImpl registrationIds = workMap.values().stream() + .map(BizContestWork::getRegistrationId) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + Map regAccountMap = new HashMap<>(); + if (!registrationIds.isEmpty()) { + List registrations = registrationMapper.selectBatchIds(registrationIds); + for (BizContestRegistration r : registrations) { + regAccountMap.put(r.getId(), r.getAccountNo()); + } + } + // 组装VO并应用筛选 List> voList = new ArrayList<>(); for (BizContestWorkJudgeAssignment a : assignments) { BizContestWork work = workMap.get(a.getWorkId()); if (work == null) continue; + // 优先取作品上的账号,为空则从报名记录补充 + String submitterAcc = work.getSubmitterAccountNo(); + if (submitterAcc == null && work.getRegistrationId() != null) { + submitterAcc = regAccountMap.get(work.getRegistrationId()); + } + // workNo筛选 - if (StringUtils.hasText(workNo) && !work.getWorkNo().contains(workNo)) { + if (StringUtils.hasText(workNo) && (work.getWorkNo() == null + || !work.getWorkNo().contains(workNo))) { continue; } // accountNo筛选 - if (StringUtils.hasText(accountNo) && work.getSubmitterAccountNo() != null - && !work.getSubmitterAccountNo().contains(accountNo)) { + if (StringUtils.hasText(accountNo) && (submitterAcc == null + || !submitterAcc.contains(accountNo))) { continue; } @@ -402,7 +425,7 @@ public class ContestReviewServiceImpl implements IContestReviewService { map.put("title", work.getTitle()); map.put("previewUrl", work.getPreviewUrl()); map.put("previewUrls", work.getPreviewUrls()); - map.put("submitterAccountNo", work.getSubmitterAccountNo()); + map.put("submitterAccountNo", submitterAcc); BizContestWorkScore scoreRecord = scoreMap.get(a.getId()); if (scoreRecord != null) {