From 58d9f460b2f8c34430285115e2557d18333c5cab Mon Sep 17 00:00:00 2001
From: Codex Assistant <codex@example.com>
Date: 星期三, 08 十月 2025 14:16:55 +0800
Subject: [PATCH] feat: 修复Player实体phone字段数据冗余问题并优化小程序报名逻辑

---
 backend/src/main/java/com/rongyichuang/activity/service/ActivityService.java |   41 ++++++++++++++++++++++++++++++++++-------
 1 files changed, 34 insertions(+), 7 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 75bebca..0a257b0 100644
--- a/backend/src/main/java/com/rongyichuang/activity/service/ActivityService.java
+++ b/backend/src/main/java/com/rongyichuang/activity/service/ActivityService.java
@@ -60,11 +60,18 @@
     /**
      * 鍒嗛〉鏌ヨ姣旇禌鍒楄〃
      */
-    public PageResponse<ActivityResponse> findActivities(PageRequest pageRequest, String name) {
+    public PageResponse<ActivityResponse> findActivities(PageRequest pageRequest, String name, Integer state) {
         Pageable pageable = pageRequest.toPageable();
         Page<Activity> page;
 
-        if (StringUtils.hasText(name)) {
+        boolean hasName = StringUtils.hasText(name);
+        if (state != null) {
+            if (hasName) {
+                page = activityRepository.findByPidAndStateAndNameContainingOrderByCreateTimeDesc(0L, state, name, pageable);
+            } else {
+                page = activityRepository.findByPidAndStateOrderByCreateTimeDesc(0L, state, pageable);
+            }
+        } else if (hasName) {
             page = activityRepository.findByPidAndNameContainingOrderByCreateTimeDesc(0L, name, pageable);
         } else {
             // 鏌ヨ鎵�鏈変富娲诲姩锛坧id = 0锛�
@@ -74,22 +81,31 @@
         List<ActivityResponse> content = page.getContent().stream()
             .map(activity -> {
                 ActivityResponse response = new ActivityResponse(activity);
-                // 璁剧疆鍙傝禌浜烘暟锛堝彧缁熻绗竴闃舵鐨勫鏍搁�氳繃瀛﹀憳浜烘暟锛�
+                // 璁剧疆鍙傝禌浜烘暟锛堢粺璁$涓�闃舵鐨勫緟瀹℃牳鍜屽鏍搁�氳繃瀛﹀憳浜烘暟锛�
                 int playerCount = 0;
                 Activity firstStage = activityRepository.findFirstStageByActivityId(activity.getId());
                 if (firstStage != null) {
-                    // 濡傛灉鏈夌涓�闃舵锛岀粺璁$涓�闃舵鐨勫鏍搁�氳繃浜烘暟
-                    Long playerCountLong = activityPlayerRepository.countByStageIdAndState(firstStage.getId(), 1);
+                    // 濡傛灉鏈夌涓�闃舵锛岀粺璁$涓�闃舵鐨勫緟瀹℃牳鍜屽鏍搁�氳繃浜烘暟
+                    Long playerCountLong = activityPlayerRepository.countByStageId(firstStage.getId());
                     playerCount = playerCountLong != null ? playerCountLong.intValue() : 0;
                 } else {
-                    // 濡傛灉娌℃湁闃舵锛岀粺璁℃椿鍔ㄦ湰韬殑瀹℃牳閫氳繃浜烘暟
-                    Long playerCountLong = activityPlayerRepository.countByActivityIdAndState(activity.getId(), 1);
+                    // 濡傛灉娌℃湁闃舵锛岀粺璁℃椿鍔ㄦ湰韬殑寰呭鏍稿拰瀹℃牳閫氳繃浜烘暟
+                    Long playerCountLong = activityPlayerRepository.countByActivityId(activity.getId());
                     playerCount = playerCountLong != null ? playerCountLong.intValue() : 0;
                 }
                 response.setPlayerCount(playerCount);
                 return response;
             })
             .collect(Collectors.toList());
+
+        // 璋冭瘯锛氭墦鍗拌繑鍥炵粰鍓嶇鐨勫搷搴斿璞′腑鐨勬姤鍚嶆埅姝�
+        try {
+            content.stream().limit(10).forEach(r ->
+                log.info("Response(id={}, name={}) signupDeadline={}, matchTime={}", r.getId(), r.getName(), r.getSignupDeadline(), r.getMatchTime())
+            );
+        } catch (Exception e) {
+            log.warn("鎵撳嵃ActivityResponse鏃ュ織澶辫触: {}", e.getMessage());
+        }
         
         return new PageResponse<>(content, page.getTotalElements(), page.getNumber(), page.getSize());
     }
@@ -353,6 +369,17 @@
         }
         return false;
     }
+
+    public boolean updateActivityState(Long id, Integer state) {
+        Optional<Activity> activityOpt = activityRepository.findById(id);
+        if (activityOpt.isPresent()) {
+            Activity activity = activityOpt.get();
+            activity.setState(state);
+            activityRepository.save(activity);
+            return true;
+        }
+        return false;
+    }
     
     /**
      * 鑾峰彇鎵�鏈夋湁鏁堜富姣旇禌锛堢敤浜庝笅鎷夐�夋嫨锛�

--
Gitblit v1.8.0