From 8337c34fcc761d07acaad796d10f3e12e9bbe2d1 Mon Sep 17 00:00:00 2001 From: lrj <owen.stl@gmail.com> Date: 星期日, 05 十月 2025 08:56:04 +0800 Subject: [PATCH] feat: 微信项目详情支持阶段评分时间轴 --- backend/src/main/java/com/rongyichuang/player/repository/ActivityPlayerRepository.java | 51 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 46 insertions(+), 5 deletions(-) diff --git a/backend/src/main/java/com/rongyichuang/player/repository/ActivityPlayerRepository.java b/backend/src/main/java/com/rongyichuang/player/repository/ActivityPlayerRepository.java index ed28626..82e151e 100644 --- a/backend/src/main/java/com/rongyichuang/player/repository/ActivityPlayerRepository.java +++ b/backend/src/main/java/com/rongyichuang/player/repository/ActivityPlayerRepository.java @@ -26,9 +26,9 @@ List<ActivityPlayer> findByPlayerId(Long playerId); /** - * 鏍规嵁娲诲姩ID鍜岄�夋墜ID鏌ユ壘鍙傝禌璁板綍 + * 鏍规嵁娲诲姩ID鍜岄�夋墜ID鏌ユ壘鍙傝禌璁板綍鍒楄〃锛屾寜鍒涘缓鏃堕棿闄嶅簭鎺掑簭 */ - Optional<ActivityPlayer> findByActivityIdAndPlayerId(Long activityId, Long playerId); + List<ActivityPlayer> findByActivityIdAndPlayerIdOrderByCreateTimeDesc(Long activityId, Long playerId); /** * 鏍规嵁闃舵ID鏌ユ壘鍙傝禌閫夋墜 @@ -51,9 +51,9 @@ List<ActivityPlayer> findByState(Integer state); /** - * 鏌ユ壘娲诲姩鐨勫弬璧涢�夋墜鏁伴噺 + * 鏍规嵁娲诲姩ID缁熻鍙傝禌閫夋墜鏁伴噺锛堝寘鎷湭瀹℃牳鍜屽鏍搁�氳繃鐨勶紝鎺掗櫎瀹℃牳椹冲洖鐨勶級 */ - @Query("SELECT COUNT(ap) FROM ActivityPlayer ap WHERE ap.activityId = :activityId AND ap.state = 1") + @Query("SELECT COUNT(ap) FROM ActivityPlayer ap WHERE ap.activityId = :activityId AND ap.state IN (0, 1)") Long countByActivityId(@Param("activityId") Long activityId); /** @@ -88,4 +88,45 @@ "WHERE ap.activityId = :activityId AND ap.state = 1 AND ap.rank IS NOT NULL " + "ORDER BY ap.rank ASC") List<ActivityPlayer> findTopRankedPlayers(@Param("activityId") Long activityId); -} \ No newline at end of file + + /** + * 缁熻鎸囧畾鐘舵�佺殑鍙傝禌閫夋墜鏁伴噺 + */ + long countByState(Integer state); + + /** + * 鏍规嵁闃舵ID鍜岀姸鎬佺粺璁″弬璧涢�夋墜鏁伴噺 + */ + Long countByStageIdAndState(Long stageId, Integer state); + + /** + * 鏍规嵁娲诲姩ID鍜岀姸鎬佺粺璁″弬璧涢�夋墜鏁伴噺 + */ + @Query("SELECT COUNT(ap) FROM ActivityPlayer ap WHERE ap.activityId = :activityId AND ap.state = :state") + Long countByActivityIdAndState(@Param("activityId") Long activityId, @Param("state") Integer state); + + /** + * 缁熻鍚屼竴娲诲姩+鍚屼竴閫夋墜鐨勬湁鏁堟姤鍚嶆暟閲忥紙state IN (0,1)锛� + */ + @Query("SELECT COUNT(ap) FROM ActivityPlayer ap WHERE ap.activityId = :activityId AND ap.playerId = :playerId AND ap.state IN (0, 1)") + Long countActiveOrPendingByActivityAndPlayer(@Param("activityId") Long activityId, @Param("playerId") Long playerId); + + /** + * 鏍规嵁闃舵ID鍜岀姸鎬佹煡鎵惧弬璧涢�夋墜锛堝寘鍚�夋墜淇℃伅锛� + */ + @Query("SELECT ap FROM ActivityPlayer ap " + + "LEFT JOIN FETCH ap.player p " + + "WHERE ap.stageId = :stageId AND ap.state = :state " + + "ORDER BY ap.createTime DESC") + List<ActivityPlayer> findByStageIdAndStateWithPlayerOrderByCreateTimeDesc(@Param("stageId") Long stageId, @Param("state") Integer state); + + /** + * 妫�鏌ラ�夋墜鏄惁宸插湪鎸囧畾闃舵鎶ュ悕 + */ + boolean existsByStageIdAndPlayerId(Long stageId, Long playerId); + + /** + * 鏍规嵁闃舵鍜岄�夋墜鏌ヨ鎶ュ悕璁板綍 + */ + Optional<ActivityPlayer> findByStageIdAndPlayerId(Long stageId, Long playerId); +} -- Gitblit v1.8.0