package org.dromara.payment.common.mapper;

import org.apache.ibatis.annotations.Param;
import org.dromara.payment.common.domain.TranLog;
import org.dromara.payment.common.domain.vo.TranLogVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;

import java.util.List;

/**
 * 交易记录Mapper接口
 *
 * @author LionLi
 * @date 2024-04-11
 */
public interface TranLogMapper extends BaseMapperPlus<TranLog, TranLogVo> {
    /**
     * 查询交易记录
     * @author 张涛
     * @date 2021年9月7日
     * @param batch 交易批次
     * @param result 交易结果（-1:待处理 1:支付中 2:成功 3:失败）
     * @param isCallback 回执状态（0:待回置 1:已回置）
     * @param size 数量
     * @return
     */
    public List<TranLogVo> selectTranLog(@Param("batch") String batch, @Param("result") int result, @Param("isCallback") Byte isCallback, @Param("size") Integer size);

    /**
     * 根据业务场景查询交易记录
     * @author 张涛
     * @date 2021年9月8日
     * @param busType 交易场景（1:任务 2:账单 3:代理商提现 4:运营商提现 5:服务商提现 6:商户提现）
     * @param buisId 交易场景id
     * @param busItem 交易项（1:商户转账到服务商B2B 2:服务商转账到运营商 3:服务商转账到平台 4:服务商转账到个人B2C 5:提现）
     * @param busBatch 交易批次
     * @param tranResult 交易结果（-1:待处理 1:支付中 2:成功 3:失败）
     * @return
     */
    public List<TranLogVo> selectByBus(@Param("busType") int busType,@Param("buisId") int buisId,@Param("busItem") String busItem,@Param("busBatch") String busBatch,@Param("tranResult") String tranResult);

    /**
     * 分配交易的处理批次
     * @author 张涛
     * @date 2021年9月6日
     * @param synBatch 批次号
     * @return
     */
    public Integer allotSyns(@Param("synBatch") String synBatch,@Param("result") int result,@Param("isCallback") Byte isCallback,@Param("minId") long minId,@Param("start") int start,@Param("size") int size);

    /**
     * 取消交易处理
     * @author 张涛
     * @date 2021年9月6日
     * @param id 账户id
     * @return
     */
    public Integer cancelSyn(@Param("id") long id);

    /**
     * 取消指定批次所有交易处理
     * @author 张涛
     * @date 2021年9月6日
     * @param synBatch 批次
     * @return
     */
    public Integer cancelSynByBatch(@Param("synBatch") String synBatch,@Param("result") int result);
}
