Quellcode durchsuchen

feat(game): 添加根据项目ID获取参赛人数功能

- 在GameAthleteController中新增getAthleteCountByProjectId接口
- 在IGameAthleteService接口中定义selectAthleteCountByProjectId方法
- 在GameAthleteServiceImpl中实现selectAthleteCountByProjectId方法
- 使用LambdaQueryWrapper和JSON_CONTAINS函数查询项目关联的运动员数量
- 支持按赛事ID和项目ID进行条件筛选
zhou vor 1 Woche
Ursprung
Commit
089f86180b

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

@@ -171,4 +171,13 @@ public class GameAthleteController extends BaseController {
         Map<String, Object> result = gameAthleteService.validateProjectSelection(bo);
         return R.ok(result);
     }
+
+    /**
+     * 根据项目ID获取参赛人数
+     * @param projectId 项目ID
+     */
+    @GetMapping("/count/{projectId}")
+    public R<Long> getAthleteCountByProjectId(@PathVariable Long projectId, @RequestParam(required = false) Long eventId) {
+        return R.ok(gameAthleteService.selectAthleteCountByProjectId(eventId, projectId));
+    }
 }

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

@@ -122,4 +122,12 @@ public interface IGameAthleteService {
      * @return 验证结果
      */
     Map<String, Object> validateProjectSelection(ProjectSelectionValidationBo bo);
+
+    /**
+     * 根据项目ID查询运动员人数
+     * @param eventId 赛事ID
+     * @param projectId 项目ID
+     * @return 运动员人数
+     */
+    Long selectAthleteCountByProjectId(Long eventId, Long projectId);
 }

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

@@ -840,4 +840,11 @@ public class GameAthleteServiceImpl implements IGameAthleteService {
 
         return count;
     }
+
+    @Override
+    public Long selectAthleteCountByProjectId(Long eventId, Long projectId) {
+        return baseMapper.selectCount(new LambdaQueryWrapper<GameAthlete>()
+            .eq(eventId != null, GameAthlete::getEventId, eventId)
+            .apply("JSON_CONTAINS(project_value, JSON_ARRAY({0}))", projectId));
+    }
 }