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/player/api/PlayerGraphqlApi.java |   58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 56 insertions(+), 2 deletions(-)

diff --git a/backend/src/main/java/com/rongyichuang/player/api/PlayerGraphqlApi.java b/backend/src/main/java/com/rongyichuang/player/api/PlayerGraphqlApi.java
index 2859b75..31ae5aa 100644
--- a/backend/src/main/java/com/rongyichuang/player/api/PlayerGraphqlApi.java
+++ b/backend/src/main/java/com/rongyichuang/player/api/PlayerGraphqlApi.java
@@ -3,18 +3,26 @@
 import com.rongyichuang.player.dto.input.ActivityPlayerRatingInput;
 import com.rongyichuang.player.dto.response.ActivityPlayerApplicationResponse;
 import com.rongyichuang.player.dto.response.ActivityPlayerDetailResponse;
+import com.rongyichuang.player.dto.response.JudgeRatingStatusResponse;
+import com.rongyichuang.player.dto.response.CurrentJudgeRatingResponse;
+import com.rongyichuang.player.dto.response.CurrentJudgeInfoResponse;
 import com.rongyichuang.player.service.PlayerApplicationService;
 import com.rongyichuang.player.service.ActivityPlayerDetailService;
 import com.rongyichuang.player.service.ActivityPlayerRatingService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.graphql.data.method.annotation.Argument;
 import org.springframework.graphql.data.method.annotation.MutationMapping;
 import org.springframework.graphql.data.method.annotation.QueryMapping;
 import org.springframework.stereotype.Controller;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 @Controller
 public class PlayerGraphqlApi {
+
+    private static final Logger log = LoggerFactory.getLogger(PlayerGraphqlApi.class);
 
     private final PlayerApplicationService service;
     private final ActivityPlayerDetailService detailService;
@@ -31,10 +39,11 @@
     @QueryMapping
     public List<ActivityPlayerApplicationResponse> activityPlayerApplications(
             @Argument String name,
+            @Argument Long activityId,
             @Argument Integer page,
             @Argument Integer size
     ) {
-        return service.listApplications(name, page, size);
+        return service.listApplications(name, activityId, page, size);
     }
 
     /**
@@ -50,6 +59,51 @@
      */
     @MutationMapping
     public Boolean saveActivityPlayerRating(@Argument ActivityPlayerRatingInput input) {
-        return ratingService.saveRating(input);
+        log.info("鏀跺埌璇勫垎淇濆瓨璇锋眰锛宎ctivityPlayerId: {}, ratings count: {}", 
+                input.getActivityPlayerId(), input.getRatings() != null ? input.getRatings().size() : 0);
+        try {
+            Boolean result = ratingService.saveRating(input);
+            log.info("璇勫垎淇濆瓨缁撴灉: {}", result);
+            return result;
+        } catch (Exception e) {
+            log.error("GraphQL API 灞傛崟鑾峰紓甯�: {}", e.getMessage(), e);
+            throw e;
+        }
+    }
+
+    /**
+     * 鑾峰彇鎸囧畾閫夋墜鐨勬墍鏈夎瘎濮旇瘎鍒嗙姸鎬�
+     */
+    @QueryMapping
+    public List<JudgeRatingStatusResponse> judgeRatingsForPlayer(@Argument Long activityPlayerId) {
+        log.info("鑾峰彇閫夋墜璇勫璇勫垎鐘舵�侊紝activityPlayerId: {}", activityPlayerId);
+        return ratingService.getAllJudgeRatingsForPlayer(activityPlayerId);
+    }
+
+    /**
+     * 鑾峰彇褰撳墠璇勫瀵规寚瀹氶�夋墜鐨勮瘎鍒�
+     */
+    @QueryMapping
+    public CurrentJudgeRatingResponse currentJudgeRating(@Argument Long activityPlayerId) {
+        log.info("鑾峰彇褰撳墠璇勫璇勫垎锛宎ctivityPlayerId: {}", activityPlayerId);
+        return ratingService.getCurrentJudgeRating(activityPlayerId);
+    }
+
+    /**
+     * 鑾峰彇鎸囧畾閫夋墜鐨勫钩鍧囧垎
+     */
+    @QueryMapping
+    public BigDecimal averageScoreForPlayer(@Argument Long activityPlayerId) {
+        log.info("鑾峰彇閫夋墜骞冲潎鍒嗭紝activityPlayerId: {}", activityPlayerId);
+        return ratingService.getAverageScoreForPlayer(activityPlayerId);
+    }
+
+    /**
+     * 鑾峰彇褰撳墠璇勫淇℃伅
+     */
+    @QueryMapping
+    public CurrentJudgeInfoResponse currentJudgeInfo() {
+        log.info("鑾峰彇褰撳墠璇勫淇℃伅");
+        return ratingService.getCurrentJudgeInfo();
     }
 }
\ No newline at end of file

--
Gitblit v1.8.0