From 4fa9591629721797386fc11836e3a9deb69cd58c Mon Sep 17 00:00:00 2001 From: lrj <owen.stl@gmail.com> Date: 星期三, 24 九月 2025 17:00:37 +0800 Subject: [PATCH] 修改评分逻辑,支持多个评委 --- backend/src/main/java/com/rongyichuang/activity/service/ActivityService.java | 62 ++++++++++++++++++++++++++++--- 1 files changed, 56 insertions(+), 6 deletions(-) diff --git a/backend/src/main/java/com/rongyichuang/activity/service/ActivityService.java b/backend/src/main/java/com/rongyichuang/activity/service/ActivityService.java index 26d1ee5..216689c 100644 --- a/backend/src/main/java/com/rongyichuang/activity/service/ActivityService.java +++ b/backend/src/main/java/com/rongyichuang/activity/service/ActivityService.java @@ -20,6 +20,7 @@ import org.springframework.util.StringUtils; import java.util.List; +import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; @@ -267,14 +268,63 @@ } /** - * 鑾峰彇鎵�鏈夋湁鏁堟瘮璧涳紙鐢ㄤ簬涓嬫媺閫夋嫨锛� + * 鑾峰彇鎵�鏈夋湁鏁堟瘮璧涘拰闃舵锛堢敤浜庝笅鎷夐�夋嫨锛� */ - public List<ActivityResponse> findAllCompetitions() { - // 涓存椂淇敼锛氫笉浣跨敤state瀛楁杩涜鏌ヨ - List<Activity> activities = activityRepository.findByPidOrderByNameAsc(0L); - return activities.stream() - .map(ActivityResponse::new) + public List<ActivityResponse> findAllActivitiesForSelection() { + // 鑾峰彇鎵�鏈夋椿鍔紙鍖呮嫭姣旇禌鍜岄樁娈碉級 + List<Activity> activities = activityRepository.findByStateOrderByPidAscNameAsc(1); + + // 鍒涘缓姣旇禌ID鍒版瘮璧涘璞$殑鏄犲皠锛岀敤浜庡揩閫熸煡鎵剧埗姣旇禌 + Map<Long, Activity> competitionMap = activities.stream() + .filter(activity -> activity.getPid() == 0) + .collect(Collectors.toMap(Activity::getId, activity -> activity)); + + // 杞崲涓篈ctivityResponse骞跺~鍏卲arent淇℃伅 + List<ActivityResponse> result = activities.stream() + .map(activity -> { + ActivityResponse response = new ActivityResponse(activity); + // 濡傛灉鏄樁娈碉紙pid > 0锛夛紝濉厖parent淇℃伅 + if (activity.getPid() > 0) { + Activity parentActivity = competitionMap.get(activity.getPid()); + if (parentActivity != null) { + response.setParent(new ActivityResponse(parentActivity)); + } + } + return response; + }) .collect(Collectors.toList()); + + // 鑷畾涔夋帓搴忥細姣旇禌鍜屽叾闃舵鏀惧湪涓�璧� + result.sort((a, b) -> { + // 濡傛灉閮芥槸姣旇禌锛坧id=0锛夛紝鎸夊悕绉版帓搴� + if (a.getPid() == 0 && b.getPid() == 0) { + return a.getName().compareTo(b.getName()); + } + // 濡傛灉閮芥槸闃舵锛屽厛鎸夌埗姣旇禌鍚嶇О鎺掑簭锛屽啀鎸夐樁娈靛悕绉版帓搴� + if (a.getPid() > 0 && b.getPid() > 0) { + String aParentName = a.getParent() != null ? a.getParent().getName() : ""; + String bParentName = b.getParent() != null ? b.getParent().getName() : ""; + int parentCompare = aParentName.compareTo(bParentName); + if (parentCompare != 0) { + return parentCompare; + } + return a.getName().compareTo(b.getName()); + } + // 濡傛灉涓�涓槸姣旇禌锛屼竴涓槸闃舵 + if (a.getPid() == 0 && b.getPid() > 0) { + String bParentName = b.getParent() != null ? b.getParent().getName() : ""; + int compare = a.getName().compareTo(bParentName); + return compare <= 0 ? -1 : 1; // 姣旇禌鎺掑湪鍏堕樁娈靛墠闈� + } + if (a.getPid() > 0 && b.getPid() == 0) { + String aParentName = a.getParent() != null ? a.getParent().getName() : ""; + int compare = aParentName.compareTo(b.getName()); + return compare < 0 ? -1 : 1; // 闃舵鎺掑湪鍏舵瘮璧涘悗闈� + } + return 0; + }); + + return result; } /** -- Gitblit v1.8.0