package top.continew.admin.business.service;

import top.continew.admin.business.model.entity.ConsumptionHistoryDO;
import top.continew.admin.business.model.query.ConsumptionHistoryQuery;
import top.continew.admin.business.model.req.ConsumptionHistoryAddReq;
import top.continew.admin.business.model.req.ConsumptionHistoryEditReq;
import top.continew.admin.business.model.req.ConsumptionReq;
import top.continew.admin.business.model.resp.ConsumptionHistoryResp;
import top.continew.starter.data.mp.service.IService;
import top.continew.starter.extension.crud.model.query.PageQuery;
import top.continew.starter.extension.crud.model.resp.PageResp;
import top.continew.starter.web.model.R;

import java.util.List;

/**
 * 用户充值消费历史记录业务接口
 *
 * @author jiay
 * @since 2025/05/23 07:51
 */

public interface ConsumptionHistoryService extends IService<ConsumptionHistoryDO> {

    /**
     * 获取用户充值消费历史记录列表
     *
     * @param query 用户充值消费历史记录查询条件
     * @return 用户充值消费历史记录列表
     */
    List<ConsumptionHistoryResp> getConsumptionHistoryList(ConsumptionHistoryQuery query);

    /**
     * 添加用户充值消费历史记录
     *
     * @param req 用户充值消费历史记录
     * @return 添加是否成功
     */
    boolean addConsumptionHistory(ConsumptionHistoryAddReq req);

    /**
     * 添加用户充值消费历史记录
     *
     * @param req 用户充值消费历史记录
     * @return 添加是否成功
     */
    boolean editConsumptionHistory(ConsumptionHistoryEditReq req);

    /**
     * 添加用户充值消费历史记录
     *
     * @param id 用户充值消费历史记录id
     * @return 添加是否成功
     */
    boolean deleteConsumptionHistory(Long id);

    /**
     * 添加用户充值消费历史记录
     *
     * @param id 用户充值消费历史记录id
     * @return 用户充值消费历史记录
     */
    ConsumptionHistoryResp getConsumptionHistory(Long id);

    /**
     * 添加用户充值消费历史记录
     *
     * @param query     用户充值消费历史记录查询条件
     * @param pageQuery 分页参数
     * @return 用户充值消费历史记录分页列表
     */
    PageResp<ConsumptionHistoryResp> getConsumptionHistoryPage(ConsumptionHistoryQuery query, PageQuery pageQuery);

    /**
     * 判断余额是否充足
     *
     * @param req 用户充值消费历史记录查询条件
     * @return 余额是否充足
     */
    R checkBalance(ConsumptionReq req);
}