package com.seer.teach.pay.admin.refund.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.seer.teach.common.PageListBean;
import com.seer.teach.pay.admin.refund.controller.req.AdminRefundQueryReq;
import com.seer.teach.pay.admin.refund.controller.req.AdminRefundReviewReq;
import com.seer.teach.pay.admin.refund.controller.resp.AdminRefundResponse;
import com.seer.teach.pay.admin.refund.controller.resp.WechatRefundResp;
import com.seer.teach.pay.entity.CoinRefundEntity;
import com.seer.teach.pay.entity.CoinRefundLogEntity;

import java.util.List;

/**
 * <p>
 *  管理员退款服务类
 * </p>
 *
 * @author Wang
 * @since 2025-07-01
 */
public interface IAdminCoinRefundService extends IService<CoinRefundEntity> {

    /**
     * 分页查询退款申请列表
     * 
     * @param request 退款申请查询条件请求对象
     * @return 退款申请分页结果列表
     */
    PageListBean<AdminRefundResponse> pageList(AdminRefundQueryReq request);

    /**
     * 审核退款申请
     * 
     * @param adminRefundReviewReq 退款审核请求对象，包含审核结果和相关信息
     * @return 审核操作是否成功
     */
    boolean reviewRefund(AdminRefundReviewReq adminRefundReviewReq);

    /**
     * 根据退款ID获取退款日志列表
     * 
     * @param refundId 退款记录的唯一标识ID
     * @return 该退款记录对应的操作日志列表
     */
    List<CoinRefundLogEntity> getRefundLogsByRefundId(Integer refundId);

    /**
     * 根据退款编号获取退款结果
     *
     * @param refundSn 退款编号
     * @return 退款结果对象，包含退款状态、退款金额等信息
     */
    WechatRefundResp getRefundResult(String refundSn);
}