package com.xhpc.tradebill.service;


import com.alipay.api.response.AlipayDataBillAccountlogQueryResponse;
import com.github.binarywang.wxpay.bean.result.WxPayFundFlowResult;
import com.github.binarywang.wxpay.exception.WxPayException;
import com.xhpc.tradebill.domain.XhpcTradebillPaymentCheckRecordDomain;

import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.util.List;
import java.util.Map;

public interface PaymentBillService {

    XhpcTradebillPaymentCheckRecordDomain getInfoByPk(int pk);


    boolean updateInfoByDomain(XhpcTradebillPaymentCheckRecordDomain domain);


    Integer insertPaymentCheckList(int uploadId, List<XhpcTradebillPaymentCheckRecordDomain> paymentCheckList);


    Map<String, Object> getStatusTotal(Map<String, Object> params);
    /**
     * 获取对账列表
     * @param params 参数Map
     * @return 对账数据
     */
    List<XhpcTradebillPaymentCheckRecordDomain> getPaymentCheckList(Map<String, Object> params);


    /**
     * 支付宝订单对账
     *
     * @param fileUrl 数据文件存放地址
     * @return 对账完成的数据列表
     */
    List<XhpcTradebillPaymentCheckRecordDomain> getAliPayDataList(String fileUrl) throws Exception ;


    /**
     * 支付宝订单对账
     *
     * @param dataFile 数据文件
     * @return 对账完成的数据列表
     */
    List<XhpcTradebillPaymentCheckRecordDomain> getAliPayDataList(File dataFile) throws Exception ;


    /**
     * 微信订单对账
     *
     * @param fileUrl 数据文件存放地址
     * @return 对账完成的数据列表
     */
    List<XhpcTradebillPaymentCheckRecordDomain> getWechatDataList(String fileUrl) throws Exception ;


    /**
     * 微信订单对账
     *
     * @param dataFile 数据文件
     * @return 对账完成的数据列表
     */
    List<XhpcTradebillPaymentCheckRecordDomain> getWechatDataList(File dataFile) throws Exception ;


    /**
     * 计算财务支付数据和订单是否对照正常
     *
     * @param domain 需对账的数据
     * @return 对账完成的数据
     */
    XhpcTradebillPaymentCheckRecordDomain computeTradebillData(XhpcTradebillPaymentCheckRecordDomain domain) ;


    /**
     * 使用微信支付SDK获取账单信息
     *
     * @param billDate 账单日期，格式：2021-12-20
     * @return 账单数据
     * @throws WxPayException 异常
     */
     WxPayFundFlowResult getWechatPayBill(String billDate) throws WxPayException;

    /**
     * 使用支付宝SDK获取账单信息
     *
     * @param startTime 账单开始时间
     * @param endTime   账单结束时间
     * @return 账单数据
     * @throws Exception 异常
     */
     AlipayDataBillAccountlogQueryResponse getAliPayBill(String startTime, String endTime) throws Exception;


    /**
     * 导出对账单
     * @param response 返回体
     * @param params 查询参数
     * @throws Exception 异常
     */
     void export(HttpServletResponse response, Map<String, Object> params) throws Exception;
}
