| | |
| | | |
| | | /** |
| | | * 查找或创建选手记录 |
| | | * 逻辑: |
| | | * 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()); |
| | |
| | | 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) { |