Эх сурвалжийг харах

Merge branch 'dev_zlt' into dev

zhou 1 долоо хоног өмнө
parent
commit
831fe809ff
15 өөрчлөгдсөн 197 нэмэгдсэн , 37 устгасан
  1. 13 0
      ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/controller/GameTeamController.java
  2. 3 0
      ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/domain/bo/GameAthleteBo.java
  3. 3 0
      ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/domain/bo/GameRefereeBo.java
  4. 3 0
      ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/domain/bo/GameTeamBo.java
  5. 24 0
      ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/domain/request/UpdateTeamAthletesRequest.java
  6. 2 0
      ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/domain/vo/GameAthleteVo.java
  7. 2 2
      ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/domain/vo/GameRefereeVo.java
  8. 4 3
      ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/domain/vo/GameTeamVo.java
  9. 1 1
      ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/service/IGameEventProjectService.java
  10. 9 0
      ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/service/IGameTeamService.java
  11. 46 14
      ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/service/impl/GameAthleteServiceImpl.java
  12. 2 1
      ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/service/impl/GameEventGroupServiceImpl.java
  13. 4 1
      ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/service/impl/GameEventProjectServiceImpl.java
  14. 24 2
      ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/service/impl/GameRefereeServiceImpl.java
  15. 57 13
      ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/service/impl/GameTeamServiceImpl.java

+ 13 - 0
ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/controller/GameTeamController.java

@@ -28,6 +28,7 @@ import org.dromara.system.domain.bo.GameTeamBo;
 import org.dromara.system.service.IGameTeamService;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.springframework.web.multipart.MultipartFile;
+import org.dromara.system.domain.request.UpdateTeamAthletesRequest;
 
 /**
  * 参赛队伍
@@ -147,4 +148,16 @@ public class GameTeamController extends BaseController {
     public R<Long> count() {
         return R.ok(gameTeamService.countTeam());
     }
+
+    /**
+     * 更新队伍中的运动员列表
+     *
+     * @param request 包含队伍ID和运动员ID列表的请求
+     */
+    @SaCheckPermission("system:gameTeam:edit")
+    @Log(title = "参赛队伍", businessType = BusinessType.UPDATE)
+    @PutMapping("/updateAthletes")
+    public R<Void> updateTeamAthletes(@RequestBody UpdateTeamAthletesRequest request) {
+        return toAjax(gameTeamService.updateTeamAthletes(request.getTeamId(), request.getAthleteIds()));
+    }
 }

+ 3 - 0
ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/domain/bo/GameAthleteBo.java

@@ -9,6 +9,8 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import jakarta.validation.constraints.*;
 
+import java.util.List;
+
 /**
  * 参赛队员业务对象 game_athlete
  *
@@ -122,6 +124,7 @@ public class GameAthleteBo extends BaseEntity {
      */
 //    @NotBlank(message = "参与项目列表不能为空", groups = { AddGroup.class, EditGroup.class })
     private String projectValue;
+    private List<String> projectList;
 
     /**
      * 状态(0正常 1停用)

+ 3 - 0
ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/domain/bo/GameRefereeBo.java

@@ -9,6 +9,8 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import jakarta.validation.constraints.*;
 
+import java.util.List;
+
 /**
  * 裁判业务对象 game_referee
  *
@@ -57,6 +59,7 @@ public class GameRefereeBo extends BaseEntity {
      * 负责的赛事项目
      */
     private String projectList;
+    private List<String> projectList2;
 
     /**
      * 裁判码

+ 3 - 0
ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/domain/bo/GameTeamBo.java

@@ -9,6 +9,8 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import jakarta.validation.constraints.*;
 
+import java.util.List;
+
 /**
  * 参赛队伍业务对象 game_team
  *
@@ -59,6 +61,7 @@ public class GameTeamBo extends BaseEntity {
      */
 //    @NotBlank(message = "队员列表不能为空", groups = { AddGroup.class, EditGroup.class })
     private String athleteValue;
+    private List<String> athleteList;
 
     /**
      * 参与项目列表

+ 24 - 0
ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/domain/request/UpdateTeamAthletesRequest.java

@@ -0,0 +1,24 @@
+package org.dromara.system.domain.request;
+
+import lombok.Data;
+import java.util.List;
+
+/**
+ * 更新队伍运动员列表请求
+ *
+ * @author zlt
+ * @date 2025-01-27
+ */
+@Data
+public class UpdateTeamAthletesRequest {
+
+    /**
+     * 队伍ID
+     */
+    private Long teamId;
+
+    /**
+     * 运动员ID列表
+     */
+    private List<Long> athleteIds;
+}

+ 2 - 0
ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/domain/vo/GameAthleteVo.java

@@ -130,6 +130,8 @@ public class GameAthleteVo implements Serializable {
     @ExcelProperty(value = "参与项目列表")
     private String projectValue;
 
+    private List<String> projectList;
+
     /**
      * 状态(0正常 1停用)
      */

+ 2 - 2
ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/domain/vo/GameRefereeVo.java

@@ -11,7 +11,7 @@ import lombok.Data;
 import java.io.Serial;
 import java.io.Serializable;
 import java.util.Date;
-
+import java.util.List;
 
 
 /**
@@ -49,7 +49,6 @@ public class GameRefereeVo implements Serializable {
     /**
      * 所属裁判组
      */
-    @ExcelProperty(value = "所属裁判组")
     private String groupName;
 
     /**
@@ -68,6 +67,7 @@ public class GameRefereeVo implements Serializable {
      * 负责的赛事项目
      */
     private String projectList;
+    private List<String> projectList2;
 
     /**
      * 裁判码

+ 4 - 3
ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/domain/vo/GameTeamVo.java

@@ -11,7 +11,7 @@ import lombok.Data;
 import java.io.Serial;
 import java.io.Serializable;
 import java.util.Date;
-
+import java.util.List;
 
 
 /**
@@ -64,13 +64,14 @@ public class GameTeamVo implements Serializable {
     /**
      * 队员列表
      */
-    @ExcelProperty(value = "队员列表")
+//    @ExcelProperty(value = "队员列表")
     private String athleteValue;
+    private List<String> athleteList;
 
     /**
      * 参与项目列表
      */
-    @ExcelProperty(value = "参与项目列表")
+//    @ExcelProperty(value = "参与项目列表")
     private String projectValue;
 
     /**

+ 1 - 1
ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/service/IGameEventProjectService.java

@@ -70,7 +70,7 @@ public interface IGameEventProjectService {
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 
-    List<GameEventProjectVo> listProjectsByEventIdAndProjectIndex(Long eventId, String[] projectIds);
+    List<GameEventProjectVo> listProjectsByEventIdAndProjectIndex(Long eventId, List<String> projectIds);
 
     Long countEventProject();
 

+ 9 - 0
ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/service/IGameTeamService.java

@@ -97,4 +97,13 @@ public interface IGameTeamService {
      * @return
      */
     Map<Long, String> getTeamIdAndNameMap(String eventId);
+
+    /**
+     * 更新队伍中的运动员列表
+     *
+     * @param teamId 队伍ID
+     * @param athleteIds 运动员ID列表
+     * @return 是否更新成功
+     */
+    Boolean updateTeamAthletes(Long teamId, List<Long> athleteIds);
 }

+ 46 - 14
ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/service/impl/GameAthleteServiceImpl.java

@@ -2,6 +2,7 @@ package org.dromara.system.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
@@ -139,7 +140,14 @@ public class GameAthleteServiceImpl implements IGameAthleteService {
      */
     @Override
     public GameAthleteVo queryById(Long athleteId) {
-        return baseMapper.selectVoById(athleteId);
+        GameAthleteVo vo = baseMapper.selectVoById(athleteId);
+        Optional.ofNullable(vo.getProjectValue())
+            .filter(StringUtils::isNotBlank)
+            .ifPresent(projectValue -> {
+                List<String> projects = JSONUtil.toList(projectValue, String.class);
+                vo.setProjectList(projects);
+            });
+        return vo;
     }
 
     /**
@@ -166,15 +174,18 @@ public class GameAthleteServiceImpl implements IGameAthleteService {
                 Optional.ofNullable(vo.getProjectValue())
                     .filter(StringUtils::isNotBlank)
                     .ifPresent(projectValue -> {
-                        String[] projectIds = projectValue.split(",");
-                        List<GameEventProjectVo> projects =
-                            gameEventProjectService.listProjectsByEventIdAndProjectIndex(
-                                vo.getEventId(),
-                                projectIds);
-                        vo.setProjectValue(projects.stream()
-                            .map(GameEventProjectVo::getProjectName)
-                            .filter(StringUtils::isNotBlank)  // 过滤项目名为空的情况
-                            .collect(Collectors.joining(",")));
+//                        String[] projectIds = projectValue.split(",");
+                        List<String> projectIds = JSONUtil.toList(projectValue, String.class);
+                        if(CollUtil.isNotEmpty(projectIds)){
+                            List<GameEventProjectVo> projects =
+                                gameEventProjectService.listProjectsByEventIdAndProjectIndex(
+                                    vo.getEventId(), projectIds);
+                            vo.setProjectList(projectIds);
+                        }
+//                        vo.setProjectValue(projects.stream()
+//                            .map(GameEventProjectVo::getProjectName)
+//                            .filter(StringUtils::isNotBlank)  // 过滤项目名为空的情况
+//                            .collect(Collectors.joining(",")));
                     });
                 Optional.ofNullable(vo.getEventId())
                     .filter(ObjectUtil::isNotEmpty)
@@ -205,7 +216,16 @@ public class GameAthleteServiceImpl implements IGameAthleteService {
             }
         }
         LambdaQueryWrapper<GameAthlete> lqw = buildQueryWrapper(bo);
-        return baseMapper.selectVoList(lqw);
+        List<GameAthleteVo> athleteList =baseMapper.selectVoList(lqw);
+        athleteList.forEach(vo -> {
+            Optional.ofNullable(vo.getProjectValue())
+                .filter(StringUtils::isNotBlank)
+                .ifPresent(projectValue -> {
+                    List<String> projects = JSONUtil.toList(projectValue, String.class);
+                    vo.setProjectList(projects);
+                });
+        });
+        return athleteList;
     }
 
     private LambdaQueryWrapper<GameAthlete> buildQueryWrapper(GameAthleteBo bo) {
@@ -214,7 +234,7 @@ public class GameAthleteServiceImpl implements IGameAthleteService {
         lqw.orderByAsc(GameAthlete::getAthleteId);
         lqw.eq(bo.getEventId() != null, GameAthlete::getEventId, bo.getEventId());
 
-        // 通过名称模糊查询
+        // 通过赛事名称模糊查询
         if (StringUtils.isNotBlank(bo.getEventName())) {
             GameEventBo gameEventBo = new GameEventBo();
             gameEventBo.setEventName(bo.getEventName());
@@ -231,7 +251,7 @@ public class GameAthleteServiceImpl implements IGameAthleteService {
 
         lqw.eq(bo.getTeamId() != null, GameAthlete::getTeamId, bo.getTeamId());
 
-        // 通过名称模糊查询
+        // 通过队伍名称模糊查询
         if (StringUtils.isNotBlank(bo.getTeamName())) {
             GameTeamBo gameTeamBo = new GameTeamBo();
             gameTeamBo.setTeamName(bo.getTeamName());
@@ -273,6 +293,9 @@ public class GameAthleteServiceImpl implements IGameAthleteService {
         }
         GameAthlete add = MapstructUtils.convert(bo, GameAthlete.class);
         validEntityBeforeSave(add);
+        if(CollectionUtils.isNotEmpty(bo.getProjectList())){
+            add.setProjectValue(JSONUtil.toJsonStr(bo.getProjectList()));
+        }
         boolean flag = baseMapper.insert(add) > 0;
         if (flag) {
             bo.setAthleteId(add.getAthleteId());
@@ -297,6 +320,9 @@ public class GameAthleteServiceImpl implements IGameAthleteService {
             }
         }
         GameAthlete update = MapstructUtils.convert(bo, GameAthlete.class);
+        if(CollectionUtils.isNotEmpty(bo.getProjectList())){
+            update.setProjectValue(JSONUtil.toJsonStr(bo.getProjectList()));
+        }
         validEntityBeforeSave(update);
         return baseMapper.updateById(update) > 0;
     }
@@ -379,9 +405,15 @@ public class GameAthleteServiceImpl implements IGameAthleteService {
      */
     @Override
     public List<GameAthleteVo> listByIds(Collection<Long> athleteIds) {
-        return baseMapper.selectVoList(
+        List<GameAthleteVo> list = baseMapper.selectVoList(
             Wrappers.lambdaQuery(GameAthlete.class)
                 .in(GameAthlete::getAthleteId, athleteIds)
         );
+        list.forEach(vo -> {
+            if (vo.getProjectValue() != null) {
+                vo.setProjectList(JSONUtil.toList(vo.getProjectValue(), String.class));
+            }
+        });
+        return list;
     }
 }

+ 2 - 1
ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/service/impl/GameEventGroupServiceImpl.java

@@ -1,5 +1,6 @@
 package org.dromara.system.service.impl;
 
+import cn.hutool.json.JSONUtil;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -76,7 +77,7 @@ public class GameEventGroupServiceImpl implements IGameEventGroupService {
                 Optional.ofNullable(vo.getProjectList())
                     .filter(StringUtils::isNotBlank)
                     .ifPresent(projectValue -> {
-                        String[] projectIds = projectValue.split(",");
+                        List<String> projectIds = JSONUtil.toList(projectValue, String.class);
                         List<GameEventProjectVo> projects =
                             gameEventProjectService.listProjectsByEventIdAndProjectIndex(
                                 vo.getEventId(),

+ 4 - 1
ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/service/impl/GameEventProjectServiceImpl.java

@@ -248,7 +248,10 @@ public class GameEventProjectServiceImpl implements IGameEventProjectService {
     }
 
     @Override
-    public List<GameEventProjectVo> listProjectsByEventIdAndProjectIndex(Long eventId, String[] projectIds) {
+    public List<GameEventProjectVo> listProjectsByEventIdAndProjectIndex(Long eventId, List<String> projectIds) {
+        if (CollectionUtils.isEmpty(projectIds)) {
+            return Collections.emptyList();
+        }
         return this.baseMapper.selectVoList(
             new LambdaQueryWrapper<GameEventProject>()
                 .eq(GameEventProject::getEventId, eventId)

+ 24 - 2
ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/service/impl/GameRefereeServiceImpl.java

@@ -1,5 +1,6 @@
 package org.dromara.system.service.impl;
 
+import cn.hutool.json.JSONUtil;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -44,7 +45,11 @@ public class GameRefereeServiceImpl implements IGameRefereeService {
      */
     @Override
     public GameRefereeVo queryById(Long refereeId){
-        return baseMapper.selectVoById(refereeId);
+        GameRefereeVo vo = baseMapper.selectVoById(refereeId);
+        if (vo.getProjectList() != null) {
+            vo.setProjectList2(JSONUtil.toList(vo.getProjectList(), String.class));
+        }
+        return vo;
     }
 
     /**
@@ -66,6 +71,11 @@ public class GameRefereeServiceImpl implements IGameRefereeService {
         }
         LambdaQueryWrapper<GameReferee> lqw = buildQueryWrapper(bo);
         Page<GameRefereeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        result.getRecords().forEach(vo -> {
+            if (vo.getProjectList() != null) {
+                vo.setProjectList2(JSONUtil.toList(vo.getProjectList(), String.class));
+            }
+        });
         return TableDataInfo.build(result);
     }
 
@@ -86,7 +96,13 @@ public class GameRefereeServiceImpl implements IGameRefereeService {
             }
         }
         LambdaQueryWrapper<GameReferee> lqw = buildQueryWrapper(bo);
-        return baseMapper.selectVoList(lqw);
+        List<GameRefereeVo> list = baseMapper.selectVoList(lqw);
+        list.forEach(vo -> {
+            if (vo.getProjectList() != null) {
+                vo.setProjectList2(JSONUtil.toList(vo.getProjectList(), String.class));
+            }
+        });
+        return list;
     }
 
     private LambdaQueryWrapper<GameReferee> buildQueryWrapper(GameRefereeBo bo) {
@@ -115,6 +131,9 @@ public class GameRefereeServiceImpl implements IGameRefereeService {
                 bo.setEventId((Long) cacheObject);
             }
         }
+        if (bo.getProjectList2() != null) {
+            bo.setProjectList(JSONUtil.toJsonStr(bo.getProjectList2()));
+        }
         GameReferee add = MapstructUtils.convert(bo, GameReferee.class);
         validEntityBeforeSave(add);
         boolean flag = baseMapper.insert(add) > 0;
@@ -140,6 +159,9 @@ public class GameRefereeServiceImpl implements IGameRefereeService {
                 bo.setEventId((Long) cacheObject);
             }
         }
+        if (bo.getProjectList2() != null) {
+            bo.setProjectList(JSONUtil.toJsonStr(bo.getProjectList2()));
+        }
         GameReferee update = MapstructUtils.convert(bo, GameReferee.class);
         validEntityBeforeSave(update);
         return baseMapper.updateById(update) > 0;

+ 57 - 13
ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/service/impl/GameTeamServiceImpl.java

@@ -1,6 +1,7 @@
 package org.dromara.system.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
@@ -54,7 +55,11 @@ public class GameTeamServiceImpl implements IGameTeamService {
      */
     @Override
     public GameTeamVo queryById(Long teamId) {
-        return baseMapper.selectVoById(teamId);
+        GameTeamVo vo = baseMapper.selectVoById(teamId);
+        if(vo.getAthleteValue()!=null){
+            vo.setAthleteList(JSONUtil.toList(vo.getAthleteValue(), String.class));
+        }
+        return vo;
     }
 
     /**
@@ -83,16 +88,17 @@ public class GameTeamServiceImpl implements IGameTeamService {
                 Optional.ofNullable(vo.getAthleteValue())
                     .filter(StringUtils::isNotBlank)
                     .ifPresent(athleteValue -> {
-                        String[] projectIds = athleteValue.split(",");
-                        List<GameAthlete> athletes = gameAthleteMapper.selectList(
-                            Wrappers.<GameAthlete>lambdaQuery()
-                                .in(GameAthlete::getAthleteId, projectIds)
-                                .select(GameAthlete::getName));
-
-                        vo.setAthleteValue(athletes.stream()
-                            .map(GameAthlete::getName)
-                            .filter(StringUtils::isNotBlank)
-                            .collect(Collectors.joining(",")));
+//                        String[] projectIds = athleteValue.split(",");
+                        List<String> projectIds = JSONUtil.toList(athleteValue, String.class);
+//                        List<GameAthlete> athletes = gameAthleteMapper.selectList(
+//                            Wrappers.<GameAthlete>lambdaQuery()
+//                                .in(GameAthlete::getAthleteId, projectIds)
+//                                .select(GameAthlete::getName));
+                        vo.setAthleteList(projectIds);
+//                        vo.setAthleteValue(athletes.stream()
+//                            .map(GameAthlete::getName)
+//                            .filter(StringUtils::isNotBlank)
+//                            .collect(Collectors.joining(",")));
                     });
                 // 处理领队
                 Optional.ofNullable(vo.getLeader())
@@ -142,7 +148,13 @@ public class GameTeamServiceImpl implements IGameTeamService {
         }
         LambdaQueryWrapper<GameTeam> lqw = buildQueryWrapper(bo);
         lqw.like(GameTeam::getTeamName, bo.getTeamName());
-        return baseMapper.selectVoList(lqw);
+        List<GameTeamVo> list = baseMapper.selectVoList(lqw);
+        list.forEach(vo -> {
+            if (vo.getAthleteValue() != null) {
+                vo.setAthleteList(JSONUtil.toList(vo.getAthleteValue(), String.class));
+            }
+        });
+        return list;
     }
 
     private LambdaQueryWrapper<GameTeam> buildQueryWrapper(GameTeamBo bo) {
@@ -197,6 +209,9 @@ public class GameTeamServiceImpl implements IGameTeamService {
                 bo.setEventId((Long) cacheObject);
             }
         }
+        if(bo.getAthleteList()!=null){
+            bo.setAthleteValue(JSONUtil.toJsonStr(bo.getAthleteList()));
+        }
         GameTeam add = MapstructUtils.convert(bo, GameTeam.class);
         validEntityBeforeSave(add);
         boolean flag = baseMapper.insert(add) > 0;
@@ -222,6 +237,9 @@ public class GameTeamServiceImpl implements IGameTeamService {
                 bo.setEventId((Long) cacheObject);
             }
         }
+        if(bo.getAthleteList()!=null){
+            bo.setAthleteValue(JSONUtil.toJsonStr(bo.getAthleteList()));
+        }
         GameTeam update = MapstructUtils.convert(bo, GameTeam.class);
         validEntityBeforeSave(update);
         return baseMapper.updateById(update) > 0;
@@ -277,10 +295,36 @@ public class GameTeamServiceImpl implements IGameTeamService {
      */
     @Override
     public List<GameTeamVo> listByIds(Collection<Long> teamIds) {
-        return baseMapper.selectVoList(
+        List<GameTeamVo> list = baseMapper.selectVoList(
             Wrappers.lambdaQuery(GameTeam.class)
                 .in(GameTeam::getTeamId, teamIds)
         );
+        list.forEach(vo -> {
+            vo.setAthleteList(JSONUtil.toList(vo.getAthleteValue(), String.class));
+        });
+        return list;
+    }
+
+    /**
+     * 更新队伍中的运动员列表
+     *
+     * @param teamId 队伍ID
+     * @param athleteIds 运动员ID列表
+     * @return 是否更新成功
+     */
+    @Override
+    public Boolean updateTeamAthletes(Long teamId, List<Long> athleteIds) {
+        GameTeam team = baseMapper.selectById(teamId);
+        if (team == null) {
+            throw new RuntimeException("队伍不存在");
+        }
+        
+        // 将运动员ID列表转换为JSON字符串
+        String athleteValue = JSONUtil.toJsonStr(athleteIds);
+        team.setAthleteValue(athleteValue);
+        
+        // 更新队伍信息
+        return baseMapper.updateById(team) > 0;
     }
 
     /**