package com.rongyichuang.activity.repository; import com.rongyichuang.activity.entity.Activity; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import java.util.List; @Repository public interface ActivityRepository extends JpaRepository { // 查询比赛列表(pid=0表示比赛,非0表示阶段) Page findByPidAndStateOrderByCreateTimeDesc(Long pid, Integer state, Pageable pageable); // 按名称模糊查询比赛列表 Page findByPidAndStateAndNameContainingOrderByCreateTimeDesc(Long pid, Integer state, String name, Pageable pageable); // 查询比赛的所有阶段 List findByPidAndStateOrderByCreateTimeAsc(Long pid, Integer state); // 查询所有有效比赛(用于下拉选择) List findByPidAndStateOrderByNameAsc(Long pid, Integer state); // 临时测试:查询所有比赛(不使用state字段) List findByPidOrderByNameAsc(Long pid); // 查询所有有效活动(包括比赛和阶段),按pid和名称排序 List findByStateOrderByPidAscNameAsc(Integer state); // 统计比赛数量 @Query("SELECT COUNT(a) FROM Activity a WHERE a.pid = 0 AND a.state = 1") long countActiveCompetitions(); // 查询进行中的比赛 @Query("SELECT a FROM Activity a WHERE a.pid = 0 AND a.state = 1 AND a.matchTime <= CURRENT_TIMESTAMP AND a.signupDeadline >= CURRENT_TIMESTAMP") List findOngoingCompetitions(); }