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