package com.dora.service;

import com.dora.dto.WithdrawDto;
import com.dora.dto.ApiResponse;

import java.util.List;

/**
 * 管理员提现审核服务接口
 */
public interface AdminWithdrawService {

    /**
     * 审核提现申请
     * @param adminId 管理员ID
     * @param request 审核请求
     * @return 审核结果
     */
    ApiResponse<String> reviewWithdraw(Long adminId, WithdrawDto.AdminReviewRequest request);

    /**
     * 获取提现申请列表（管理员）
     * @param request 查询请求
     * @return 提现申请列表
     */
    ApiResponse<WithdrawDto.AdminWithdrawListResponse> getWithdrawList(WithdrawDto.AdminWithdrawListRequest request);

    /**
     * 获取提现申请详情（管理员）
     * @param withdrawId 提现申请ID
     * @return 提现申请详情
     */
    ApiResponse<WithdrawDto.AdminWithdrawItem> getWithdrawDetail(Long withdrawId);

    /**
     * 获取提现审核统计信息
     * @return 统计信息
     */
    ApiResponse<WithdrawDto.WithdrawStatusStats> getWithdrawStats();

    /**
     * 批量审核提现申请
     * @param adminId 管理员ID
     * @param withdrawIds 提现申请ID列表
     * @param status 审核状态
     * @param reason 拒绝原因（状态为拒绝时）
     * @return 批量审核结果
     */
    ApiResponse<String> batchReviewWithdraw(Long adminId, List<Long> withdrawIds, Integer status, String reason);
} 