package com.zbkj.service.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zbkj.common.model.huifu.HuifuWalletTrade;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <b>  </b>
 * @author ZXF
 * @create 2023/07/31 0031 11:08
 * @version
 * @注意事项 </b>
 */
public interface HuifuWalletTradeDao extends BaseMapper<HuifuWalletTrade> {

    /**
     * 插入企业钱包账户交易记录
     *
     * @param huifuWalletTrade
     * @return
     * @author llc
     * @date 2019-06-28
     */
    int insertHuifuWalletTrade(HuifuWalletTrade huifuWalletTrade);

    /**
     * <b> 根据原订单号计算是否还可以解冻，返回0不可解冻1可解冻（规则：订单金额-已解冻金额-要解冻金额>=0） </b>
     * 当前业务 解冻功能用
     * @param businessPartnerSeq 业务编码为订单未拆单前的PT规则单号
     * @param amount 当前要解冻的金额
     * @author ZXF
     * @create 2023/04/04 0004 16:08
     * @version
     * @注意事项 </b>
     */
    int calculateTheThawingAmounByReq(@Param("businessPartnerSeq") String businessPartnerSeq,@Param("amount") String amount,@Param("unStr") String unStr);
    /**
     * <b> 根据流水号查是否存在已完成支付的记录 </b>
     * @author ZXF
     * @create 2023/04/04 0004 16:08
     * @version
     * @注意事项 </b>
     */
    int getHuifuWalletTradeByReq(@Param("businessPartnerSeq") String businessPartnerSeq,@Param("tradeType") String tradeType);
    int getHuifuWalletTradeByOldReq(@Param("businessPartnerSeq") String businessPartnerSeq,@Param("tradeType") String tradeType);
    int getPlatHuifuWalletTradeByOldReq(@Param("businessPartnerSeq") String businessPartnerSeq,@Param("sellFeePriority") int sellFeePriority,@Param("tradeType") String tradeType);


    /**
     * 更新企业钱包账户交易记录
     *
     * @param huifuWalletTrade
     * @return
     * @author llc
     * @date 2019-06-28
     */
    int updateHuifuWalletTrade(HuifuWalletTrade huifuWalletTrade);


    /**
     * 查询企业钱包交易信息
     *
     * @param huifuWalletTradeId
     * @return
     * @author llc
     * @date 2019-06-28
     */
    HuifuWalletTrade getHuifuWalletTradeById(@Param("id") Integer id);
    /**
     * <b> 根据全局流水号查询交易记录 </b>
     * @author ZXF
     * @create 2023/08/03 0003 17:52
     * @version
     * @注意事项 </b>
     */
    HuifuWalletTrade getHuifuWalletTradeByHfSeqId(@Param("hfSeqId") String hfSeqId);
    List<Map<String,String>> findHuifuWalletTradeByDay(@Param("payChannel") String payChannel);

    /**
     * <b> 根据业务编码或业务流水查询交易信息 </b>
     * @author ZXF
     * @create 2023/03/23 0023 10:17
     * @version
     * @注意事项 </b>
     */
    List<HuifuWalletTrade> getHuifuWalletTradeBySeqAndCode(HuifuWalletTrade huifuWalletTrade);

    /**
     * <b> 查询企业钱包交易信息 </b>
     * @param id
     * @param uid (必填)
     * @param comment
     * @param tradeStatus
     * @author ZXF
     * @create 2022/06/27 0027 14:19
     * @version
     * @注意事项 </b>
     */
    List<HuifuWalletTrade> findHuifuWalletTrade(HuifuWalletTrade huifuWalletTrade);
    List<HuifuWalletTrade> findHuifuWalletTradeByUniIdAndType(@Param("uniId") String uniId,@Param("type") String type,@Param("payChannel") String payChannel);

}
