package com.xy.xyaicpzs.service;

import com.xy.xyaicpzs.domain.entity.DltPredictRecord;
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 针对表【dlt_predict_record(大乐透推测记录表)】的数据库操作Service
* @createDate 2025-09-08 14:01:12
*/
public interface DltPredictRecordService extends IService<DltPredictRecord> {

    /**
     * 创建大乐透预测记录
     * @param userId 用户ID
     * @param drawId 开奖期号
     * @param drawDate 开奖日期
     * @param frontBalls 5个前区球号码
     * @param backBalls 2个后区球号码
     * @return 创建的预测记录
     */
    DltPredictRecord createDltPredictRecord(Long userId, Long drawId, Date drawDate, List<Integer> frontBalls, List<Integer> backBalls);

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

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

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

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

}
