From 7ba080d35812e6db7bd5aa8f88161c02653eb6c1 Mon Sep 17 00:00:00 2001
From: lrj <owen.stl@gmail.com>
Date: 星期三, 24 九月 2025 22:42:35 +0800
Subject: [PATCH] feat: 优化员工和评委编辑功能的密码重置逻辑
---
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