package com.xy.xyaicpzs.service;

import com.xy.xyaicpzs.domain.entity.PredictRecord;
import com.xy.xyaicpzs.common.response.PageResponse;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.Date;
import java.util.List;

/**
* @author XY003
* @description 针对表【predict_record(彩票开奖信息表)】的数据库操作Service
* @createDate 2025-06-16 13:17:53
*/
public interface PredictRecordService extends IService<PredictRecord> {

    /**
     * 创建预测记录
     * @param userId 用户ID
     * @param drawId 开奖期号
     * @param drawDate 开奖日期
     * @param redBalls 6个红球号码
     * @param blueBall 蓝球号码
     * @return 创建的预测记录
     */
    PredictRecord createPredictRecord(Long userId, Long drawId, Date drawDate, List<Integer> redBalls, Integer blueBall);

    /**
     * 根据用户ID获取所有预测记录
     * @param userId 用户ID
     * @return 用户的所有预测记录列表，按预测时间倒序排列
     */
    List<PredictRecord> getPredictRecordsByUserId(Long userId);

    /**
     * 根据用户ID分页获取预测记录
     * @param userId 用户ID
     * @param page 页码，从1开始
     * @param size 每页大小
     * @return 用户的预测记录列表，按预测时间倒序排列
     */
    List<PredictRecord> getPredictRecordsByUserIdWithPaging(Long userId, Integer page, Integer size);

    /**
     * 根据用户ID获取预测记录总数
     * @param userId 用户ID
     * @return 用户的预测记录总数
     */
    Long getPredictRecordsCountByUserId(Long userId);

    /**
     * 管理员获取所有推测记录（支持分页和用户ID筛选）
     * @param userId 用户ID（可选）
     * @param predictResult 中奖等级（可选）
     * @param current 当前页码
     * @param pageSize 每页大小
     * @return 分页的预测记录
     */
    PageResponse<PredictRecord> getAllRecordsForAdmin(Long userId, String predictResult, Integer current, Integer pageSize);

    /**
     * 管理员获取所有中奖记录（支持分页和筛选）
     * @param userId 用户ID（可选）
     * @param prizeGrade 奖项等级（可选）
     * @param current 当前页码
     * @param pageSize 每页大小
     * @return 分页的中奖记录
     */
    PageResponse<PredictRecord> getWinningRecordsForAdmin(Long userId, String prizeGrade, Integer current, Integer pageSize);

}
