From 93eb6b470773bc49ea6e1a9d4cbd914eb95d525b Mon Sep 17 00:00:00 2001 From: lrj <owen.stl@gmail.com> Date: 星期二, 30 九月 2025 17:38:04 +0800 Subject: [PATCH] feat: 完善比赛晋级功能并清理测试文件 --- backend/src/main/java/com/rongyichuang/activity/repository/ActivityRepository.java | 112 ++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 85 insertions(+), 27 deletions(-) diff --git a/backend/src/main/java/com/rongyichuang/activity/repository/ActivityRepository.java b/backend/src/main/java/com/rongyichuang/activity/repository/ActivityRepository.java index 787a541..c2d9d43 100644 --- a/backend/src/main/java/com/rongyichuang/activity/repository/ActivityRepository.java +++ b/backend/src/main/java/com/rongyichuang/activity/repository/ActivityRepository.java @@ -6,36 +6,94 @@ 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<Activity, Long> { - - // 鏌ヨ姣旇禌鍒楄〃锛坧id=0琛ㄧず姣旇禌锛岄潪0琛ㄧず闃舵锛� - Page<Activity> findByPidAndStateOrderByCreateTimeDesc(Long pid, Integer state, Pageable pageable); - - // 鎸夊悕绉版ā绯婃煡璇㈡瘮璧涘垪琛� - Page<Activity> findByPidAndStateAndNameContainingOrderByCreateTimeDesc(Long pid, Integer state, String name, Pageable pageable); - - // 鏌ヨ姣旇禌鐨勬墍鏈夐樁娈� - List<Activity> findByPidAndStateOrderByCreateTimeAsc(Long pid, Integer state); - - // 鏌ヨ鎵�鏈夋湁鏁堟瘮璧涳紙鐢ㄤ簬涓嬫媺閫夋嫨锛� - List<Activity> findByPidAndStateOrderByNameAsc(Long pid, Integer state); - - // 涓存椂娴嬭瘯锛氭煡璇㈡墍鏈夋瘮璧涳紙涓嶄娇鐢╯tate瀛楁锛� - List<Activity> findByPidOrderByNameAsc(Long pid); - - // 鏌ヨ鎵�鏈夋湁鏁堟椿鍔紙鍖呮嫭姣旇禌鍜岄樁娈碉級锛屾寜pid鍜屽悕绉版帓搴� - List<Activity> findByStateOrderByPidAscNameAsc(Integer state); - - // 缁熻姣旇禌鏁伴噺 - @Query("SELECT COUNT(a) FROM Activity a WHERE a.pid = 0 AND a.state = 1") - long countActiveActivities(); - - // 鏌ヨ杩涜涓殑姣旇禌 - @Query("SELECT a FROM Activity a WHERE a.pid = 0 AND a.state = 1 AND a.matchTime <= CURRENT_TIMESTAMP AND a.signupDeadline >= CURRENT_TIMESTAMP") + + Page<Activity> findByPidAndStateAndNameContainingOrderByCreateTimeDesc(Long pid, int state, String name, Pageable pageable); + + Page<Activity> findByPidAndNameContainingOrderByCreateTimeDesc(Long pid, String name, Pageable pageable); + + Page<Activity> findByPidOrderByCreateTimeDesc(Long pid, Pageable pageable); + + Page<Activity> findByPidAndStateOrderByCreateTimeDesc(Long pid, int state, Pageable pageable); + + List<Activity> findByPidAndStateOrderByCreateTimeAsc(Long pid, int state); + + List<Activity> findByStateOrderByPidAscNameAsc(int state); + + @Query("SELECT a FROM Activity a WHERE a.pid = 0 ORDER BY a.createTime DESC") + Page<Activity> findRecentActivities(Pageable pageable); + + /** + * 鏍规嵁娲诲姩ID鏌ヨ娲诲姩 + */ + @Query("SELECT a FROM Activity a WHERE a.id = :id") + Activity findActivityById(@Param("id") Long id); + + /** + * 鏍规嵁鐘舵�佹煡璇㈡椿鍔ㄦ暟閲� + */ + @Query("SELECT COUNT(a) FROM Activity a WHERE a.state = :state") + Long countByState(@Param("state") int state); + + /** + * 缁熻褰撳墠杩涜涓殑娲诲姩鏁伴噺锛堢姸鎬佷负1涓攑id=0鐨勪富娲诲姩锛� + */ + @Query("SELECT COUNT(a) FROM Activity a WHERE a.state = 1 AND a.pid = 0") + Long countActiveActivities(); + + /** + * 鏌ヨ鎵�鏈夌埗绾ф椿鍔紙pid = 0锛� + */ + @Query("SELECT a FROM Activity a WHERE a.pid = 0 ORDER BY a.createTime DESC") + List<Activity> findAllParentActivities(); + + /** + * 鏍规嵁鐖剁骇ID鏌ヨ瀛愭椿鍔� + */ + @Query("SELECT a FROM Activity a WHERE a.pid = :pid ORDER BY a.createTime DESC") + List<Activity> findChildActivitiesByPid(@Param("pid") Long pid); + + /** + * 鏍规嵁鍚嶇О妯$硦鏌ヨ娲诲姩 + */ + @Query("SELECT a FROM Activity a WHERE a.name LIKE %:name% ORDER BY a.createTime DESC") + List<Activity> findByNameContaining(@Param("name") String name); + + /** + * 鏌ヨ鎸囧畾鐘舵�佺殑娲诲姩锛屾寜鍒涘缓鏃堕棿鎺掑簭 + */ + @Query("SELECT a FROM Activity a WHERE a.state = :state ORDER BY a.createTime DESC") + List<Activity> findByStateOrderByCreateTimeDesc(@Param("state") int state); + + /** + * 鍒嗛〉鏌ヨ鎸囧畾鐘舵�佺殑娲诲姩 + */ + @Query("SELECT a FROM Activity a WHERE a.state = :state ORDER BY a.createTime DESC") + Page<Activity> findByStateOrderByCreateTimeDesc(@Param("state") int state, Pageable pageable); + + /** + * 鏌ヨ娲诲姩鍙婂叾璇勫垎鏂规 + */ + @Query("SELECT a FROM Activity a LEFT JOIN FETCH a.ratingScheme WHERE a.id = :id") + Activity findActivityWithRatingScheme(@Param("id") Long id); + + /** + * 鏌ヨ杩涜涓殑娲诲姩锛堢姸鎬佷负1鐨勬椿鍔級 + */ + @Query("SELECT a FROM Activity a WHERE a.state = 1 ORDER BY a.createTime DESC") List<Activity> findOngoingActivities(); + + /** + * 鏌ユ壘鎸囧畾娲诲姩鐨勭涓�闃舵锛坰ortOrder=1锛� + */ + @Query("SELECT a FROM Activity a WHERE a.pid = :activityId AND a.sortOrder = 1 AND a.state = 1") + Activity findFirstStageByActivityId(@Param("activityId") Long activityId); + + /** + * 鏍规嵁鐖剁骇ID鍜岀姸鎬佹煡璇㈡椿鍔紝鎸塻ortOrder鎺掑簭 + */ + List<Activity> findByPidAndStateOrderBySortOrderAsc(Long pid, Integer state); } \ No newline at end of file -- Gitblit v1.8.0