package com.ruoyi.user.mapper; import java.util.Date; import java.util.List; import org.apache.ibatis.annotations.Param; import com.ruoyi.user.domain.vo.ProductSalesRatioVo; import com.ruoyi.user.domain.vo.SalesMonthSummaryVo; import com.ruoyi.user.domain.vo.SalesTrendItemVo; import com.ruoyi.user.domain.vo.SalesUserRankingVo; /** * 会员销售流水 数据层 * * 全部为聚合查询,命中 idx_sales_seller_time(seller_id, sale_time)联合索引; * 时间区间由 Service 传入月初 / 次月初 / 上月初,避免 SQL 内做日期方言运算。 * * @author hugray */ public interface AccountSalesRecordMapper { /** * 聚合本月销售额 / 利润额 / 单数与上月利润额(单条 SQL 取回,避免多次数据库往返) * * @param sellerId 销售会员ID * @param monthStart 本月起始(含) * @param nextMonthStart 次月起始(不含,用于划定本月上界) * @param prevMonthStart 上月起始(含,用于上月利润环比口径) * @return 月汇总(单位:分;无流水时各栏为 0) */ public SalesMonthSummaryVo selectMonthSummary(@Param("sellerId") Long sellerId, @Param("monthStart") Date monthStart, @Param("nextMonthStart") Date nextMonthStart, @Param("prevMonthStart") Date prevMonthStart); /** * 按日聚合本月销售额(趋势折线图原始数据,缺省日由 Service 补零) * * @param sellerId 销售会员ID * @param monthStart 本月起始(含) * @param nextMonthStart 次月起始(不含) * @return 按日升序的趋势行(仅含当月有销售的日期) */ public List selectDailyTrend(@Param("sellerId") Long sellerId, @Param("monthStart") Date monthStart, @Param("nextMonthStart") Date nextMonthStart); /** * 按商品聚合本月销售额(比例饼图数据,降序) * * @param sellerId 销售会员ID * @param monthStart 本月起始(含) * @param nextMonthStart 次月起始(不含) * @return 商品销售额列表(降序) */ public List selectProductSalesRatio(@Param("sellerId") Long sellerId, @Param("monthStart") Date monthStart, @Param("nextMonthStart") Date nextMonthStart); /** * 按购买人聚合本月购买额(销售排行,降序取前 10) * * 手机号在 Service 下发前脱敏;由 SQL 侧 LIMIT 控制取数规模。 * * @param sellerId 销售会员ID * @param monthStart 本月起始(含) * @param nextMonthStart 次月起始(不含) * @return 排行列表(降序,最多 10 条;rank 由 Service 填充) */ public List selectSalesUserRanking(@Param("sellerId") Long sellerId, @Param("monthStart") Date monthStart, @Param("nextMonthStart") Date nextMonthStart); }