package org.dromara.payment.merchant.mapper;

import org.apache.ibatis.annotations.Param;
import org.dromara.payment.merchant.domain.BusMerchantAccountSyn;
import org.dromara.payment.merchant.domain.vo.BusMerchantAccountSynVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;

import java.util.List;

/**
 * 商户账户同步Mapper接口
 *
 * @author LionLi
 * @date 2024-04-03
 */
public interface BusMerchantAccountSynMapper extends BaseMapperPlus<BusMerchantAccountSyn, BusMerchantAccountSynVo> {
    /**
     * 补全不存在同步记录的账户
     * @author 张涛
     * @date 2021年9月6日
     * @return
     */
    public Integer autoNotExist();

    /**
     * 分配账户的同步批次
     * @author 张涛
     * @date 2021年9月6日
     * @param synBatch 批次号
     * @return
     */
    public Integer allotSyns(@Param("synBatch") String synBatch,@Param("minId") int minId,@Param("start") int start,@Param("size") int size);

    /**
     * 取消账户同步
     * @author 张涛
     * @date 2021年9月6日
     * @param id 账户id
     * @return
     */
    public Integer cancelSyn(@Param("id") int id);

    /**
     * 取消指定批次所有账户同步
     * @author 张涛
     * @date 2021年9月6日
     * @param synBatch 批次
     * @return
     */
    public Integer cancelSynByBatch(@Param("synBatch") String synBatch);

    /**
     * 查询待同步的账户id
     * @author 张涛
     * @date 2021年9月6日
     * @param synBatch 批次号
     * @param size 数量
     * @return
     */
    public List<BusMerchantAccountSynVo> selectSyn(@Param("synBatch") String synBatch, @Param("size") Integer size);

    /**
     * 账户加同步锁
     * @author 张涛
     * @date 2021年9月6日
     * @param synBatch 批次号
     * @param id 账户id
     * @return
     */
    public Integer lock(@Param("synBatch") String synBatch, @Param("id") int id);
}
