From ba94ceae1315174798ae1967ef62268c6d16cd5b Mon Sep 17 00:00:00 2001
From: Codex Assistant <codex@example.com>
Date: 星期一, 06 十月 2025 22:07:06 +0800
Subject: [PATCH] feat: 评审与活动相关改动 - backend(GraphQL): Activity schema 增加 updateActivityState(id, state);实现 resolver/service 仅更新 state=2 作为逻辑删除 - backend(GraphQL): region.graphqls 新增 Query leafRegions - backend(GraphQL): player.graphqls 的 projectReviewApplications 增加可选参数 regionId - backend(Service): listProjectReviewApplications 绑定 regionId 参数,修复 QueryParameterException - frontend(web): 新增 api/activity.js 的 updateActivityState 并接入 activity-list 删除逻辑 - frontend(web): review-list.vue 权限仅校验登录,移除角色限制;查询参数修正为 name/regionId - frontend(web): 删除未引用的 ActivityList.vue - frontend(web): projectReviewNew.js GraphQL 查询增加 name 参数

---
 backend/src/main/java/com/rongyichuang/activity/service/ActivityService.java |   59 +++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 53 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 b692385..845d515 100644
--- a/backend/src/main/java/com/rongyichuang/activity/service/ActivityService.java
+++ b/backend/src/main/java/com/rongyichuang/activity/service/ActivityService.java
@@ -16,6 +16,8 @@
 import com.rongyichuang.common.dto.PageResponse;
 import com.rongyichuang.rating.entity.RatingScheme;
 import com.rongyichuang.rating.repository.RatingSchemeRepository;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Example;
 import org.springframework.data.domain.ExampleMatcher;
@@ -38,6 +40,8 @@
 @Transactional
 public class ActivityService {
     
+    private static final Logger log = LoggerFactory.getLogger(ActivityService.class);
+    
     @Autowired
     private ActivityRepository activityRepository;
     
@@ -56,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锛�
@@ -86,6 +97,15 @@
                 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());
     }
@@ -185,6 +205,9 @@
         // 淇濆瓨姣旇禌
         activity = activityRepository.save(activity);
         
+        // 璁板綍鏃ュ織浠ヤ究璋冭瘯
+        log.info("淇濆瓨姣旇禌鎴愬姛锛屾瘮璧汭D: {}, 姣旇禌鍚嶇О: {}", activity.getId(), activity.getName());
+        
         // 濡傛灉鏄瘮璧涗笖鏈夐樁娈典俊鎭紝淇濆瓨闃舵
         if (input.isMainActivity() && input.getStages() != null && !input.getStages().isEmpty()) {
             saveActivityStages(activity.getId(), input.getStages());
@@ -264,7 +287,11 @@
                 stage.setRatingSchemeId(activity.getRatingSchemeId());
             }
             
-            activityRepository.save(stage);
+            // 淇濆瓨闃舵骞惰幏鍙栬嚜澧濱D
+            stage = activityRepository.save(stage);
+            
+            // 璁板綍鏃ュ織浠ヤ究璋冭瘯
+            log.info("淇濆瓨闃舵鎴愬姛锛岄樁娈礗D: {}, 闃舵鍚嶇О: {}", stage.getId(), stage.getName());
         }
     }
     
@@ -273,14 +300,20 @@
      */
     private void saveActivityJudges(Long activityId, List<ActivityJudgeInput> judgeInputs) {
         if (judgeInputs == null || judgeInputs.isEmpty()) {
+            log.info("娌℃湁璇勫闇�瑕佷繚瀛橈紝姣旇禌ID: {}", activityId);
             return;
         }
+        
+        log.info("寮�濮嬩繚瀛樿瘎濮旓紝姣旇禌ID: {}, 璇勫鏁伴噺: {}", activityId, judgeInputs.size());
         
         // 鑾峰彇姣旇禌鐨勬墍鏈夐樁娈碉紙濡傛灉鏈夌殑璇濓級
         List<Activity> stages = activityRepository.findByPidAndStateOrderByCreateTimeAsc(activityId, 1);
         
         // 淇濆瓨璇勫鍏宠仈
         for (ActivityJudgeInput judgeInput : judgeInputs) {
+            log.info("澶勭悊璇勫: ID={}, 濮撳悕={}, 闃舵IDs={}", 
+                judgeInput.getJudgeId(), judgeInput.getJudgeName(), judgeInput.getStageIds());
+            
             // 鍏堝垹闄よ璇勫鐨勭幇鏈夊叧鑱�
             activityJudgeRepository.deleteByActivityIdAndJudgeId(activityId, judgeInput.getJudgeId());
             
@@ -289,12 +322,14 @@
                 if (stages.isEmpty()) {
                     // 姣旇禌娌℃湁闃舵锛岀洿鎺ュ叧鑱斿埌姣旇禌锛坰tage_id涓簄ull琛ㄧず鎵�鏈夐樁娈碉級
                     ActivityJudge activityJudge = new ActivityJudge(activityId, judgeInput.getJudgeId(), null);
-                    activityJudgeRepository.save(activityJudge);
+                    activityJudge = activityJudgeRepository.save(activityJudge);
+                    log.info("淇濆瓨璇勫鍏宠仈鎴愬姛: 姣旇禌ID={}, 璇勫ID={}, 闃舵ID=null", activityId, judgeInput.getJudgeId());
                 } else {
                     // 涓烘瘡涓樁娈靛垱寤哄叧鑱�
                     for (Activity stage : stages) {
                         ActivityJudge activityJudge = new ActivityJudge(activityId, judgeInput.getJudgeId(), stage.getId());
-                        activityJudgeRepository.save(activityJudge);
+                        activityJudge = activityJudgeRepository.save(activityJudge);
+                        log.info("淇濆瓨璇勫鍏宠仈鎴愬姛: 姣旇禌ID={}, 璇勫ID={}, 闃舵ID={}", activityId, judgeInput.getJudgeId(), stage.getId());
                     }
                 }
             } else {
@@ -303,7 +338,8 @@
                     // 濡傛灉stageId绛変簬褰撳墠姣旇禌ID锛岃〃绀鸿瘎濮旇礋璐f暣涓瘮璧涳紝stage_id璁句负null
                     Long actualStageId = stageId.equals(activityId) ? null : stageId;
                     ActivityJudge activityJudge = new ActivityJudge(activityId, judgeInput.getJudgeId(), actualStageId);
-                    activityJudgeRepository.save(activityJudge);
+                    activityJudge = activityJudgeRepository.save(activityJudge);
+                    log.info("淇濆瓨璇勫鍏宠仈鎴愬姛: 姣旇禌ID={}, 璇勫ID={}, 闃舵ID={}", activityId, judgeInput.getJudgeId(), actualStageId);
                 }
             }
         }
@@ -333,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