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