package org.tio.sitexxx.service.service.pay;

import org.tio.http.common.HttpRequest;
import org.tio.jfinal.kit.Ret;
import org.tio.sitexxx.im.server.vo.*;
import org.tio.sitexxx.service.model.main.User;

/**
 * <pre>
 *    @author : vagrancy
 *    e-mail : 18050829067@163.com
 *    time   : 2025-11-24 15:51
 *    desc   : 基础支付服务
 * </pre>
 */
public interface BasePayService {
    /**
     * 实名信息
     */
    Ret realInfo(Integer uid);

    /**
     * 银行卡列表
     */
    Ret bankcardList(Integer uid);

    /**
     * 绑卡
     */
    Ret bindCard(BindCardVo cardVo, HttpRequest request);

    /**
     * 解除绑定银行卡
     */
    Ret unBindCard(Integer uid, String bankCardId);

    /**
     * 绑卡确定
     */
    Ret bindCardConfirm(BindCardConfirmVo cardVo, HttpRequest request);

    /**
     * 钱包信息
     */
    Ret getWalletInfo(Integer uid);

    /**
     * 初始化红包
     */
    Ret initRedPacket(SendRedpacketVo redpacketVo);

    /**
     * 快速红包
     */
    Ret quickRedPacket(SendRedpacketVo redpacketVo, HttpRequest request);

    /**
     * 提现记录
     */
    Ret withholdList(Integer uid, Integer pageNumber);

    /**
     * 发送红包
     */
    Ret sendRedPacket(SendRedpacketVo redpacketVo, HttpRequest request);

    /**
     * 支付红包
     */
    Ret payRedPacket(SendRedpacketVo redpacketVo, HttpRequest request, User user);

    /**
     * 发送红包记录
     */
    Ret sendRedPacketList(Integer uid, Integer pageNumber, String period);

    /**
     * 发送红包状态
     */
    Ret sendRedPacketStat(Integer uid, String period);

    /**
     * 抢红包
     */
    Ret grabRedPacket(GrabRedpacketVo grabRedpacketVo, User user);

    /**
     * 抢红包记录
     */
    Ret grabRedPacketList(Integer uid, Integer pageNumber, String period);

    /**
     * 抢红包状态
     */
    Ret grabRedPacketStat(Integer uid, String period);

    /**
     * 红包状态
     */
    Ret redStatus(User user, Integer rid);

    /**
     * 红包信息
     */
    Ret redInfo(Integer rid);

    /**
     * 支付列表信息
     */
    Ret payListInfo(Integer uid);

    /**
     * 客户端token
     */
    Ret getClientToken(ClientTokenVo tokenVo, HttpRequest request);

    /**
     * 获取钱包各项
     */
    Ret getWalletItems(Integer uid, Integer pageNumber, Short mode);

    /**
     * 提现
     */
    Ret withhold(WithholdVo withholdVo, HttpRequest request);

    /**
     * 提现查询
     */
    Ret withholdQuery(WithholdQueryVo withholdQueryVo, HttpRequest request);

    /**
     * @return
     * @author xufei
     * 2021年4月9日 上午10:41:39
     */
    public Ret redpacketJob() throws Exception;
}
