From c8dffd157cd8b62023b26e62a0b92c152d959423 Mon Sep 17 00:00:00 2001
From: Codex Assistant <codex@example.com>
Date: 星期三, 08 十月 2025 21:19:28 +0800
Subject: [PATCH] build(backend): switch to thin-jar layout (split libs into target/lib); chore: remove test-* files; misc updates

---
 backend/src/main/java/com/rongyichuang/player/service/ActivityPlayerService.java |  118 +++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 91 insertions(+), 27 deletions(-)

diff --git a/backend/src/main/java/com/rongyichuang/player/service/ActivityPlayerService.java b/backend/src/main/java/com/rongyichuang/player/service/ActivityPlayerService.java
index c623481..c59c7b8 100644
--- a/backend/src/main/java/com/rongyichuang/player/service/ActivityPlayerService.java
+++ b/backend/src/main/java/com/rongyichuang/player/service/ActivityPlayerService.java
@@ -19,6 +19,7 @@
 import com.rongyichuang.media.service.MediaV2Service;
 import com.rongyichuang.media.dto.MediaSaveInput;
 import com.rongyichuang.message.service.MessageService;
+import com.rongyichuang.auth.util.JwtUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -61,6 +62,9 @@
 
     @Autowired
     private MessageService messageService;
+
+    @Autowired
+    private JwtUtil jwtUtil;
 
 
     public ActivityPlayer getMyActivityPlayer(Long activityId) {
@@ -173,16 +177,21 @@
 
     /**
      * 鏌ユ壘鎴栧垱寤洪�夋墜璁板綍
+     * 閫昏緫锛�
+     * 1. 鍏堜繚瀛楿ser锛堟牴鎹畃hone鏌ヨ锛屽瓨鍦ㄥ垯鏇存柊锛屽惁鍒欐柊澧烇級
+     * 2. 鍐嶄繚瀛楶layer锛堟牴鎹畊serId鏌ヨ锛屽瓨鍦ㄥ垯鏇存柊锛屽惁鍒欐柊澧烇級
      */
     private Player findOrCreatePlayer(ActivityRegistrationInput input) {
         try {
-            // 鍏堟牴鎹墜鏈哄彿鏌ユ壘鐜版湁閫夋墜
-            String phone = input.getPlayerInfo().getPhone();
-            Optional<Player> existingPlayerOpt = playerRepository.findByPhone(phone);
+            // 1. 鍏堝垱寤烘垨鏇存柊鐢ㄦ埛璁板綍
+            User user = createOrUpdateUser(input);
+            
+            // 2. 鏍规嵁userId鏌ユ壘鐜版湁閫夋墜
+            Optional<Player> existingPlayerOpt = playerRepository.findByUserId(user.getId());
             
             if (existingPlayerOpt.isPresent()) {
+                // 閫夋墜瀛樺湪锛屾洿鏂伴�夋墜淇℃伅
                 Player existingPlayer = existingPlayerOpt.get();
-                // 鏇存柊閫夋墜淇℃伅
                 existingPlayer.setName(input.getPlayerInfo().getName());
                 if (input.getPlayerInfo().getGender() != null) {
                     existingPlayer.setGender(input.getPlayerInfo().getGender());
@@ -197,31 +206,28 @@
                     existingPlayer.setDescription(input.getPlayerInfo().getDescription());
                 }
                 
-                // 鏇存柊鍏宠仈鐨勭敤鎴蜂俊鎭紙濡傛灉瀛樺湪锛�
-                updateUserInfo(existingPlayer, input);
-                
                 // BaseEntity浼氳嚜鍔ㄨ缃畊pdateTime
-                return playerRepository.save(existingPlayer);
+                Player savedPlayer = playerRepository.save(existingPlayer);
+                log.info("鏇存柊鐜版湁閫夋墜鎴愬姛锛孖D: {}, 濮撳悕: {}, 鐢ㄦ埛ID: {}", savedPlayer.getId(), savedPlayer.getName(), user.getId());
+                return savedPlayer;
             }
 
-            // 鍒涘缓鏂伴�夋墜
+            // 閫夋墜涓嶅瓨鍦紝鍒涘缓鏂伴�夋墜
             Player newPlayer = new Player();
             newPlayer.setName(input.getPlayerInfo().getName());
-            newPlayer.setPhone(input.getPlayerInfo().getPhone());
+            // 涓嶅啀璁剧疆phone瀛楁锛宲hone淇℃伅缁熶竴瀛樺偍鍦║ser瀹炰綋涓�
+            // newPlayer.setPhone(input.getPlayerInfo().getPhone()); // 宸插簾寮�
             newPlayer.setGender(input.getPlayerInfo().getGender());
             newPlayer.setEducation(input.getPlayerInfo().getEducation());
             newPlayer.setIntroduction(input.getPlayerInfo().getIntroduction());
             newPlayer.setDescription(input.getPlayerInfo().getDescription());
             newPlayer.setRoleId(1L); // 榛樿瑙掕壊ID涓�1锛堝鍛樿鑹诧級
             newPlayer.setState(1); // 1琛ㄧず鏈夋晥鐘舵��
-            
-            // 鍒涘缓鎴栧叧鑱旂敤鎴疯褰�
-            User user = createOrUpdateUser(input);
             newPlayer.setUserId(user.getId());
             
             // BaseEntity浼氳嚜鍔ㄨ缃甤reateTime鍜寀pdateTime
             Player savedPlayer = playerRepository.save(newPlayer);
-            log.info("鏂伴�夋墜鍒涘缓鎴愬姛锛孖D: {}, 濮撳悕: {}", savedPlayer.getId(), savedPlayer.getName());
+            log.info("鏂伴�夋墜鍒涘缓鎴愬姛锛孖D: {}, 濮撳悕: {}, 鐢ㄦ埛ID: {}", savedPlayer.getId(), savedPlayer.getName(), user.getId());
             return savedPlayer;
 
         } catch (Exception e) {
@@ -231,25 +237,83 @@
     }
 
     /**
-     * 鍒涘缓鎴栨洿鏂扮敤鎴疯褰�
+     * 鍒涘缓鎴栨洿鏂扮敤鎴疯褰曪紙浠呭湪灏忕▼搴忔姤鍚嶆垚鍔熸椂鍒涘缓鏂扮敤鎴凤級
      */
     private User createOrUpdateUser(ActivityRegistrationInput input) {
         try {
-            // 浣跨敤UserService鐨刦indOrCreateUserByPhone鏂规硶
-            User user = userService.findOrCreateUserByPhone(
-                input.getPlayerInfo().getPhone(),
-                input.getPlayerInfo().getName(),
-                null // 涓嶈缃瘑鐮侊紝浣跨敤榛樿瀵嗙爜
-            );
+            String phone = input.getPlayerInfo().getPhone();
+            String name = input.getPlayerInfo().getName();
             
-            // 鏇存柊鐢ㄦ埛鐨勭敓鏃ヤ俊鎭�
-            if (input.getPlayerInfo().getBirthDate() != null) {
-                user.setBirthday(input.getPlayerInfo().getBirthDate());
-                user = userService.save(user);
-                log.info("鏇存柊鐢ㄦ埛鐢熸棩淇℃伅鎴愬姛锛岀敤鎴稩D: {}", user.getId());
+            // 鑾峰彇褰撳墠鐢ㄦ埛鐨剋xopenid锛堜粠JWT token涓級
+            String currentWxOpenid = null;
+            try {
+                String token = userContextUtil.getTokenFromRequest();
+                if (token != null && jwtUtil.validateToken(token)) {
+                    currentWxOpenid = jwtUtil.getWxOpenidFromToken(token);
+                    log.debug("浠嶫WT token涓幏鍙栧埌wxopenid: {}", currentWxOpenid);
+                }
+            } catch (Exception e) {
+                log.warn("鑾峰彇褰撳墠鐢ㄦ埛wxopenid鏃跺彂鐢熷紓甯�: {}", e.getMessage());
             }
             
-            return user;
+            // 鍏堟煡鎵剧幇鏈夌敤鎴�
+            Optional<User> existingUserOpt = userService.findByPhone(phone);
+            
+            if (existingUserOpt.isPresent()) {
+                // 鐢ㄦ埛瀛樺湪锛屾洿鏂颁俊鎭�
+                User user = existingUserOpt.get();
+                user.setName(name);
+                
+                // 鏇存柊鐢ㄦ埛鐨勭敓鏃ヤ俊鎭�
+                if (input.getPlayerInfo().getBirthDate() != null) {
+                    user.setBirthday(input.getPlayerInfo().getBirthDate());
+                }
+                
+                // 鏇存柊wxopenid锛堝鏋滃綋鍓峵oken涓寘鍚笖涓嶄负绌猴級
+                if (currentWxOpenid != null && !currentWxOpenid.trim().isEmpty()) {
+                    // 妫�鏌ヨ繖涓猳penid鏄惁宸茬粡琚叾浠栫敤鎴蜂娇鐢�
+                    Optional<User> existingUserWithOpenid = userService.findByWxOpenid(currentWxOpenid);
+                    if (existingUserWithOpenid.isEmpty() || existingUserWithOpenid.get().getId().equals(user.getId())) {
+                        user.setWxOpenid(currentWxOpenid);
+                        log.info("鏇存柊鐢ㄦ埛wxopenid: {}", currentWxOpenid);
+                    } else {
+                        log.warn("wxopenid {} 宸茶鍏朵粬鐢ㄦ埛浣跨敤锛岀敤鎴稩D: {}", currentWxOpenid, existingUserWithOpenid.get().getId());
+                    }
+                }
+                
+                user = userService.save(user);
+                log.info("鏇存柊鐜版湁鐢ㄦ埛淇℃伅鎴愬姛锛岀敤鎴稩D: {}", user.getId());
+                return user;
+            } else {
+                // 鐢ㄦ埛涓嶅瓨鍦紝鍒涘缓鏂扮敤鎴凤紙浠呭湪灏忕▼搴忔姤鍚嶆垚鍔熸椂锛�
+                log.info("鐢ㄦ埛涓嶅瓨鍦紝涓哄皬绋嬪簭鎶ュ悕鎴愬姛鍒涘缓鏂扮敤鎴凤紝鎵嬫満鍙�: {}", phone);
+                
+                User newUser = new User();
+                newUser.setName(name);
+                newUser.setPhone(phone);
+                newUser.setPassword(userService.getPasswordEncoder().encode("123456")); // 榛樿瀵嗙爜
+                
+                // 璁剧疆鐢熸棩淇℃伅
+                if (input.getPlayerInfo().getBirthDate() != null) {
+                    newUser.setBirthday(input.getPlayerInfo().getBirthDate());
+                }
+                
+                // 璁剧疆wxopenid锛堝鏋滃綋鍓峵oken涓寘鍚笖涓嶄负绌猴級
+                if (currentWxOpenid != null && !currentWxOpenid.trim().isEmpty()) {
+                    // 妫�鏌ヨ繖涓猳penid鏄惁宸茬粡琚叾浠栫敤鎴蜂娇鐢�
+                    Optional<User> existingUserWithOpenid = userService.findByWxOpenid(currentWxOpenid);
+                    if (existingUserWithOpenid.isEmpty()) {
+                        newUser.setWxOpenid(currentWxOpenid);
+                        log.info("涓烘柊鐢ㄦ埛璁剧疆wxopenid: {}", currentWxOpenid);
+                    } else {
+                        log.warn("wxopenid {} 宸茶鍏朵粬鐢ㄦ埛浣跨敤锛岀敤鎴稩D: {}", currentWxOpenid, existingUserWithOpenid.get().getId());
+                    }
+                }
+                
+                newUser = userService.save(newUser);
+                log.info("涓哄皬绋嬪簭鎶ュ悕鎴愬姛鍒涘缓鏂扮敤鎴凤紝鐢ㄦ埛ID: {}", newUser.getId());
+                return newUser;
+            }
         } catch (Exception e) {
             log.error("鍒涘缓鎴栨洿鏂扮敤鎴疯褰曟椂鍙戠敓閿欒", e);
             throw new RuntimeException("鍒涘缓鎴栨洿鏂扮敤鎴疯褰曞け璐�", e);

--
Gitblit v1.8.0