package com.trade.service.thirdparty.sop.service;

import com.trade.service.thirdparty.sop.dto.*;
import com.trade.service.thirdparty.sop.util.ResponseJson;

import java.util.List;

/**
 * SOP Service
 */
public interface SOPService {

    /**
     * 发起sop请求并保存报文
     *
     * @param url 接口地址
     * @param request 请求参数
     * @return ResponseJson
     */
    ResponseJson sendPost2SOP(String url, SOPBasicRequest request);

    /**
     * sop 企业详细信息查询
     *
     * @param sOPEnterpriseDtlSearch 企业查询条件
     * @return SOPEnterpriseDetail
     */
    SOPEnterpriseDetail getEnterpriseDetail(SOPEnterpriseDtlSearch sOPEnterpriseDtlSearch);

    /**
     * sop 企业风险调查
     *
     * @param socialCreditCode 企业统一社会信用代码
     * @return SOPRiskInvestigation
     */
    SOPRiskInvestigation getRiskInvestigation(Long userId, String socialCreditCode);

    /**
     * SOP 企业高管失信被执行信息查询
     * 
     * @param userId 用户id
     * @param socialCreditCode 企业统一社会信用代码
     * @param personName 高管姓名
     */
    List<CDongjiangaoSxCheck> getManagementCreditExecution(Long userId, String socialCreditCode, String personName);

    /**
     * SOP 企业高管限制高消费查询
     *
     * @param userId 用户id
     * @param socialCreditCode 企业统一社会信用代码
     * @param personName 高管姓名
     */
    List<CDongjiangaoSumptuaryCheck> getManagementConsumptionLimit(Long userId, String socialCreditCode,
            String personName);

    /**
     * SOP 是否存在金融纠纷或民间借贷纠纷
     *
     * @param userId 用户id
     * @param socialCreditCode 企业统一社会信用代码
     * @param comprehensiveRiskInvestigationId 综合风险调查id
     * @return Boolean
     */
    Boolean getExistFinancialOrPrivateLending(Long userId, String socialCreditCode, Long comprehensiveRiskInvestigationId);
}
