From afeeed281e60466b576fbe74d339634cc5d07b82 Mon Sep 17 00:00:00 2001
From: Codex Assistant <codex@example.com>
Date: 星期三, 08 十月 2025 08:56:42 +0800
Subject: [PATCH] 修复评审功能和用户认证问题

---
 backend/src/main/java/com/rongyichuang/judge/service/JudgeService.java |   32 +++++++++++++++++++++++++++-----
 1 files changed, 27 insertions(+), 5 deletions(-)

diff --git a/backend/src/main/java/com/rongyichuang/judge/service/JudgeService.java b/backend/src/main/java/com/rongyichuang/judge/service/JudgeService.java
index c4d82ec..dfc89f0 100644
--- a/backend/src/main/java/com/rongyichuang/judge/service/JudgeService.java
+++ b/backend/src/main/java/com/rongyichuang/judge/service/JudgeService.java
@@ -159,18 +159,28 @@
         }
 
         if (input.getId() != null) {
+            // 鏇存柊鐜版湁璇勫
             judge = judgeRepository.findById(input.getId())
                     .orElseThrow(() -> new BusinessException("璇勫涓嶅瓨鍦�"));
+            
+            // 妫�鏌ョ敤鎴稩D鏄惁琚叾浠栬瘎濮斾娇鐢�
+            Optional<Judge> existingJudgeByUserId = judgeRepository.findByUserId(user.getId());
+            if (existingJudgeByUserId.isPresent() && !existingJudgeByUserId.get().getId().equals(input.getId())) {
+                throw new BusinessException("璇ユ墜鏈哄彿宸茶鍏朵粬璇勫浣跨敤");
+            }
         } else {
+            // 鏂板璇勫
             judge = new Judge();
-            // 鏂板璇勫鏃舵鏌ユ墜鏈哄彿鏄惁宸插瓨鍦�
-            if (judgeRepository.existsByPhone(input.getPhone())) {
-                throw new BusinessException("PHONE_EXISTS", "鎵嬫満鍙风爜宸插瓨鍦紝璇蜂娇鐢ㄥ叾浠栨墜鏈哄彿鐮�");
+            
+            // 妫�鏌ヨ鐢ㄦ埛鏄惁宸叉槸璇勫
+            Optional<Judge> existingJudge = judgeRepository.findByUserId(user.getId());
+            if (existingJudge.isPresent()) {
+                throw new BusinessException("璇ユ墜鏈哄彿宸茶鍏朵粬璇勫浣跨敤");
             }
         }
 
         judge.setName(input.getName());
-        judge.setPhone(input.getPhone());
+        judge.setPhone(null); // 搴熷純judge.phone瀛楁锛岃缃负null
         judge.setGender(input.getGender());
         judge.setDescription(input.getDescription());
         judge.setTitle(input.getTitle());
@@ -204,7 +214,19 @@
         JudgeResponse response = new JudgeResponse();
         response.setId(judge.getId());
         response.setName(judge.getName());
-        response.setPhone(judge.getPhone());
+        
+        // 閫氳繃鍏宠仈鐨剈ser鑾峰彇phone
+        if (judge.getUserId() != null) {
+            Optional<User> userOpt = userService.findById(judge.getUserId());
+            if (userOpt.isPresent()) {
+                response.setPhone(userOpt.get().getPhone());
+            } else {
+                response.setPhone(null);
+            }
+        } else {
+            response.setPhone(null);
+        }
+        
         response.setGender(judge.getGender());
         response.setDescription(judge.getDescription());
         response.setTitle(judge.getTitle());

--
Gitblit v1.8.0