Codex Assistant
昨天 58d9f460b2f8c34430285115e2557d18333c5cab
backend/src/main/java/com/rongyichuang/player/service/ActivityPlayerService.java
@@ -173,16 +173,21 @@
    /**
     * 查找或创建选手记录
     * 逻辑:
     * 1. 先保存User(根据phone查询,存在则更新,否则新增)
     * 2. 再保存Player(根据userId查询,存在则更新,否则新增)
     */
    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 +202,28 @@
                    existingPlayer.setDescription(input.getPlayerInfo().getDescription());
                }
                
                // 更新关联的用户信息(如果存在)
                updateUserInfo(existingPlayer, input);
                // BaseEntity会自动设置updateTime
                return playerRepository.save(existingPlayer);
                Player savedPlayer = playerRepository.save(existingPlayer);
                log.info("更新现有选手成功,ID: {}, 姓名: {}, 用户ID: {}", savedPlayer.getId(), savedPlayer.getName(), user.getId());
                return savedPlayer;
            }
            // 创建新选手
            // 选手不存在,创建新选手
            Player newPlayer = new Player();
            newPlayer.setName(input.getPlayerInfo().getName());
            newPlayer.setPhone(input.getPlayerInfo().getPhone());
            // 不再设置phone字段,phone信息统一存储在User实体中
            // 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会自动设置createTime和updateTime
            Player savedPlayer = playerRepository.save(newPlayer);
            log.info("新选手创建成功,ID: {}, 姓名: {}", savedPlayer.getId(), savedPlayer.getName());
            log.info("新选手创建成功,ID: {}, 姓名: {}, 用户ID: {}", savedPlayer.getId(), savedPlayer.getName(), user.getId());
            return savedPlayer;
        } catch (Exception e) {