package com.xhpc.activity.service;


import com.xhpc.activity.domain.XhpcTradebillPaymentCheckRecordDomain;
import com.xhpc.activity.domain.XhpcTradebillUploadRecordDomain;

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(XhpcTradebillUploadRecordDomain recordDomain, 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, String startTime, String endTime, String tenantId) throws Exception ;


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


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


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


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

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