package com.xy.xyaicpzs.service;

import com.xy.xyaicpzs.domain.vo.PrizeEstimateVO;
import com.xy.xyaicpzs.domain.vo.RedBallHitRateVO;
import com.xy.xyaicpzs.domain.vo.UserPredictStatVO;

/**
 * 大乐透数据分析服务接口
 */
public interface DltDataAnalysisService {
    
    /**
     * 处理大乐透待开奖记录，匹配开奖结果
     * @return 处理的记录数量
     */
    int processPendingDltPredictions();
    
    /**
     * 获取用户大乐透预测统计数据
     * @param userId 用户ID
     * @return 用户大乐透预测统计数据
     */
    UserPredictStatVO getUserDltPredictStat(Long userId);
    
    /**
     * 大乐透奖金统计
     * @param userId 用户ID
     * @param predictId 预测记录ID，如果为null则统计所有记录
     * @return 奖金统计信息
     */
    PrizeEstimateVO getDltPrizeStatistics(Long userId, Long predictId);
    
    /**
     * 大乐透前区首球命中率分析
     * @param userId 用户ID
     * @return 前区首球命中率统计信息
     */
    RedBallHitRateVO getFrontFirstBallHitRate(Long userId);
    
    /**
     * 大乐透前区球号命中率分析
     * @param userId 用户ID
     * @return 前区球号命中率统计信息
     */
    RedBallHitRateVO getFrontBallHitRate(Long userId);
    
    /**
     * 大乐透后区首球命中率分析
     * @param userId 用户ID
     * @return 后区首球命中率统计信息
     */
    RedBallHitRateVO getBackFirstBallHitRate(Long userId);
    
    /**
     * 大乐透后区球号命中率分析
     * @param userId 用户ID
     * @return 后区球号命中率统计信息
     */
    RedBallHitRateVO getBackBallHitRate(Long userId);
    /**
     * 管理员获取大乐透奖金统计（支持用户ID和奖项筛选）
     * @param userId 用户ID（可选）
     * @param prizeGrade 奖项等级（可选）
     * @return 奖金统计信息
     */
    PrizeEstimateVO getAllUsersDltPrizeStatistics(Long userId, String prizeGrade);

}
