package com.ycwl.basic.clickhouse.service; import com.ycwl.basic.model.mobile.statistic.req.CommonQueryReq; import java.util.Date; import java.util.HashMap; import java.util.List; /** * 统计数据查询服务接口 * 用于抽象 t_stats 和 t_stats_record 表的查询 * 支持 MySQL 和 ClickHouse 两种实现 */ public interface StatsQueryService { /** * 统计预览视频人数 */ Integer countPreviewVideoOfMember(CommonQueryReq query); /** * 统计扫码访问人数 */ Integer countScanCodeOfMember(CommonQueryReq query); /** * 统计推送订阅人数 */ Integer countPushOfMember(CommonQueryReq query); /** * 统计上传头像人数 */ Integer countUploadFaceOfMember(CommonQueryReq query); /** * 统计生成视频人数 */ Integer countCompleteVideoOfMember(CommonQueryReq query); /** * 统计生成视频条数 */ Integer countCompleteOfVideo(CommonQueryReq query); /** * 统计总访问人数 */ Integer countTotalVisitorOfMember(CommonQueryReq query); /** * 统计预览视频条数 */ Integer countPreviewOfVideo(CommonQueryReq query); /** * 获取用户分销员 ID 列表 */ List getBrokerIdListForUser(Long memberId, Date startTime, Date endTime); /** * 获取用户最近进入类型 */ Long getUserRecentEnterType(Long memberId, Date endTime); /** * 获取用户项目 ID 列表 */ List getProjectIdListForUser(Long memberId, Date startTime, Date endTime); /** * 统计分销员扫码次数 */ Integer countBrokerScanCount(Long brokerId); /** * 按日期统计分销员扫码数据 */ List> getDailyScanStats(Long brokerId, Date startTime, Date endTime); /** * 按小时统计扫码人数(仅返回统计数据,不含订单) * 返回格式: [{t: "MM-dd HH", count: "xxx"}, ...] */ List> scanCodeMemberChartByHour(CommonQueryReq query); /** * 按日期统计扫码人数(仅返回统计数据,不含订单) * 返回格式: [{t: "MM-dd", count: "xxx"}, ...] */ List> scanCodeMemberChartByDate(CommonQueryReq query); /** * 按小时统计访问打印样片页面人数 * 返回格式: [{t: "MM-dd HH", count: "xxx"}, ...] */ List> printerFromSampleChartByHour(CommonQueryReq query); /** * 按日期统计访问打印样片页面人数 * 返回格式: [{t: "MM-dd", count: "xxx"}, ...] */ List> printerFromSampleChartByDate(CommonQueryReq query); }