package com.rongyichuang.activity.repository; import com.rongyichuang.activity.entity.ActivityPlayerRatingItem; 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.math.BigDecimal; import java.util.List; /** * 活动选手评分项数据访问层 */ @Repository public interface ActivityPlayerRatingItemRepository extends JpaRepository { /** * 根据活动选手评分ID查找所有评分项 */ List findByActivityPlayerRatingId(Long activityPlayerRatingId); /** * 根据评分项ID查找所有评分记录 */ List findByRatingItemId(Long ratingItemId); /** * 删除指定活动选手评分的所有评分项 */ void deleteByActivityPlayerRatingId(Long activityPlayerRatingId); /** * 计算指定活动选手评分的总分 */ @Query("SELECT SUM(i.weightedScore) FROM ActivityPlayerRatingItem i WHERE i.activityPlayerRatingId = :activityPlayerRatingId") BigDecimal calculateTotalScoreByActivityPlayerRatingId(@Param("activityPlayerRatingId") Long activityPlayerRatingId); /** * 根据活动选手评分ID和评分项ID查找评分项 */ @Query("SELECT i FROM ActivityPlayerRatingItem i WHERE i.activityPlayerRatingId = :activityPlayerRatingId AND i.ratingItemId = :ratingItemId") ActivityPlayerRatingItem findByActivityPlayerRatingIdAndRatingItemId(@Param("activityPlayerRatingId") Long activityPlayerRatingId, @Param("ratingItemId") Long ratingItemId); /** * 批量查询多个活动选手评分的评分项 */ @Query("SELECT i FROM ActivityPlayerRatingItem i WHERE i.activityPlayerRatingId IN :activityPlayerRatingIds ORDER BY i.activityPlayerRatingId, i.ratingItemId") List findByActivityPlayerRatingIdIn(@Param("activityPlayerRatingIds") List activityPlayerRatingIds); }