package org.dromara.payment.operator.mapper;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.dromara.payment.channel.domain.BusChannelAccount;
import org.dromara.payment.channel.domain.vo.BusChannelAccountVo;
import org.dromara.payment.operator.domain.BusOperatorAccount;
import org.dromara.payment.operator.domain.bo.BusOperatorAccountBo;
import org.dromara.payment.operator.domain.vo.BusOperatorAccountVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.payment.sys.domain.SysSydAccount;

import java.util.List;

/**
 * 运营商资金账户Mapper接口
 *
 * @author LionLi
 * @date 2024-03-28
 */
public interface BusOperatorAccountMapper extends BaseMapperPlus<BusOperatorAccount, BusOperatorAccountVo> {
    Page<BusOperatorAccountVo> queryPageList(@Param("page") Page<BusOperatorAccount> page, @Param(Constants.WRAPPER) Wrapper<BusOperatorAccount> queryWrapper);

    List<BusOperatorAccountVo> queryList(@Param(Constants.WRAPPER) Wrapper<BusOperatorAccount> queryWrapper);
    /**
     * 新增虚拟银行账号
     * @return 结果
     */
    public int insertAccount(BusOperatorAccount account);

    /**
     * 递增或递减账户余额
     * @author 张涛
     * @date 2021年9月7日
     * @param amount 变动金额（减为复数）
     * @return
     */
    public Integer updateBalanceByAccId(@Param("accId") int accId, @Param("amount") long amount);

    /**
     * 递增或递减冻结金额
     * @author 张涛
     * @date 2021年9月7日
     * @param amount 变动金额（减为复数）
     * @return
     */
    public Integer updateFrozenByAccId(@Param("accId") int accId,@Param("amount") long amount);

    /**
     * 递增或递减已提现金额
     * @author 张涛
     * @date 2021年9月7日
     * @param amount 变动金额（减为复数）
     * @return
     */
    public Integer updateCashoutByAccId(@Param("accId") int accId,@Param("amount") long amount);

    /**
     * 递增或递减提现申请金额
     * @author 张涛
     * @date 2021年9月7日
     * @param amount 变动金额（减为复数）
     * @return
     */
    public Integer updateCashoutingByAccId(@Param("accId") int accId,@Param("amount") long amount);


    /***
     * 查询运营商不同银行的虚拟户
     * @param bo
     * @param page
     * @return
     */
    public List<BusOperatorAccountVo>  selectOperatorAccountLists(@Param("bo") BusOperatorAccountBo bo,@Param("page") Page<BusOperatorAccount> page);


    /**
     * 银行账户加锁
     * @author 张涛
     * @date 2021年9月6日
     * @param accId 银行账户id
     * @return
     */
    public Integer lock(@Param("accId") int accId);

}
