package com.ycwl.basic.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ycwl.basic.model.pc.videoreview.dto.VideoReviewListReqDTO; import com.ycwl.basic.model.pc.videoreview.dto.VideoReviewRespDTO; import com.ycwl.basic.model.pc.videoreview.dto.VideoReviewStatisticsRespDTO; import com.ycwl.basic.model.pc.videoreview.entity.VideoReviewEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; /** * 视频评价Mapper接口 */ @Mapper public interface VideoReviewMapper extends BaseMapper { /** * 分页查询评价列表(带关联查询) * * @param reqDTO 查询条件 * @return 评价列表 */ List selectReviewList(VideoReviewListReqDTO reqDTO); /** * 统计总评价数 * * @return 总数 */ Long countTotal(); /** * 计算平均评分 * * @return 平均评分 */ Double calculateAverageRating(); /** * 统计评分分布 * * @return key: 评分, value: 数量 */ List> countRatingDistribution(); /** * 统计最近N天的评价趋势 * * @param days 天数 * @return key: 日期, value: 数量 */ List> countRecentTrend(@Param("days") int days); /** * 统计景区评价排行(前N名) * * @param limit 限制数量 * @return 景区排行列表 */ List countScenicRank(@Param("limit") int limit); /** * 查询所有机位评价数据(用于后端计算平均值) * * @return 机位评价列表(Map结构: 机位ID -> 评分) */ List> selectAllCameraPositionRatings(); }