package com.hfkj.service.agent;

import com.hfkj.entity.BsAgentMerAccount;
import com.hfkj.entity.BsAgentMerAccountRecord;
import com.hfkj.entity.BsMerchantAccount;
import com.hfkj.entity.BsOrderRefund;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @className: BsAgentMerAccountService
 * @author: HuRui
 * @date: 2024/8/1
 **/
public interface BsAgentMerAccountService {

    /**
     * 编辑数据
     * @param account
     */
    void editData(BsAgentMerAccount account);

    /**
     * 查询账户
     * @param agentId 代理商id
     * @param merNo 商户号
     */
    BsAgentMerAccount getAccount(Long agentId, String merNo);

    /**
     * 充值
     *
     * @param agentId 代理商id
     * @param merNo     商户号
     * @param amount    金额
     */
    void recharge(Long agentId,String merNo, BigDecimal amount) throws Exception;

    /**
     * 扣除
     *
     * @param agentId 代理商id
     * @param merNo            商户号
     * @param amount            金额
     * @param otherParam     其他参数
     */
    void consume(Long agentId, String merNo, BigDecimal amount, Map<String, Object> otherParam) throws Exception;

    /**
     * 订单取消
     *
     * @param agentId 代理商id
     * @param merNo            商户号
     * @param amount            金额
     * @param otherParam     其他参数
     */
    void orderCancel(Long agentId, String merNo, BigDecimal amount, Map<String, Object> otherParam) throws Exception;

    /**
     * 退款
     *
     * @param agentId 代理商id
     * @param merNo
     * @param amount
     * @param orderRefund
     */
    void refund(Long agentId, String merNo, BigDecimal amount, BsOrderRefund orderRefund) throws Exception;

    /**
     * 是否交易
     * @param agentId
     * @param merNo
     * @param orderNo
     * @return
     */
    boolean isTrade(Long agentId, String merNo, String orderNo);

    /**
     * 查询商户列表
     * @param param
     * @return
     */
    List<Map<String,Object>> getMerList(Map<String,Object> param);

}
