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

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;
import org.tio.sitexxx.service.model.main.WxWalletSendRedPacket;

import java.util.Map;

/**
 * <pre>
 *    @author : vagrancy
 *    e-mail : 18050829067@163.com
 *    time   : 2025-11-26 11:46
 *    desc   : 支付回调业务接口
 * </pre>
 */
public interface BaseBizPay {
    /**
     * 修改开户信息
     */
    Ret updateUser(Map<String, Object> resp, Boolean isAtom);

    /**
     * 实名认证
     */
    Ret authRealname(Map<String, Object> resp, Boolean isAtom);

    /**
     * 充值
     */
    Ret recharge(BasePayResp resp, RechargeVo rechargeVo, Boolean isAtom);

    /**
     * 红包初始化
     */
    Ret initRedpacket(SendRedpacketVo redpacketVo, Boolean isAtom);

    /**
     * 发红包
     */
    Ret sendRedpacket(Map<String, Object> resp);

    /**
     * 抢红包
     */
    Ret grabRedpacket(GrabRedpacketVo grabVo, User user, Boolean isAtom);

    /**
     * 提现回调
     */
    Ret withhold(BasePayResp resp, WithholdVo withholdVo, Boolean isAtom);

    /**
     * 提现查询
     */
    Ret withholdQuery(HttpRequest request, BasePayResp resp, WithholdQueryVo withholdVo, Boolean isAtom);

    /**
     */
    Ret redpacketJobQuery(BasePayResp resp, RedpacketQueryVo queryVo, Boolean isAtom);

    /**
     */
    public Ret redpacketTimeOut(WxWalletSendRedPacket redPacket, Boolean isAtom);

    /**
     * 新增coin
     */
    Ret coinAdd(Long cny, Integer uid, Short mode, Short coinflag, String remark, Integer bizid, Short status, Map<String, Object> resultMap, String starttime, String endtime,
                Boolean isAtom);

    /**
     * 同步钱包
     */
    Ret synWallet(Map<String, Object> resultMap, WalletVo walletVo, Boolean isAtom);

    /**
     */
    Ret updateRedPacketLock(WxWalletSendRedPacket redPacket, Short status, boolean lock);
}
