package com.dgtly.wxportal.service;

import com.alibaba.fastjson.JSONObject;
import com.dgtly.system.domain.CustomersExt;
import com.dgtly.system.domain.ESignCorpAuthParam;
import com.dgtly.system.domain.Result;
import com.dgtly.system.domain.SysUser;
import com.dgtly.wxportal.domain.ESignUpPDFModal;
import com.dgtly.wxportal.domain.OrderFile;

import java.io.IOException;
import java.util.Map;

/**
 * @author ZhangDing
 * @version 1.0
 * @descption: TODO
 * @company 神州数码通用软件（洛阳）有限公司
 * @copyright (c) 2019 LuoYang DGT Co'Ltd Inc. All rights reserved.
 * @date 2020-10-10 11:26
 * @since JDK1.8
 */
public interface ESignService {

  /**
   * 根据订单和运单好生成PDF并上传至E签宝
   * @param customerName 经销商名和曾
   * @return
   */
  ESignUpPDFModal upload(String orderId,String tmsShipNumber,String customerCode, String customerName,String userName);
    /**
     * @description: 自提
     * @param: [orderFile]
     * @return: com.dgtly.wxportal.domain.ESignUpPDFModal
     * @author: njs
     * @date: 2023/3/22 17:42
     */
   ESignUpPDFModal uploadDriver(OrderFile orderFile);

    /**
     * @description: 委托签署pdf
     * @param: [orderFile]
     * @return: com.dgtly.wxportal.domain.ESignUpPDFModal
     * @author: njs
     * @date: 2023/3/22 17:42
     */
    ESignUpPDFModal uploadEmpowerByAuth(OrderFile orderFile);


     String verificationUser();

     /**
      * @descption: 个人注册，存储信息
      * @param:
      * @return:
      * @auther: ZhangDing
      * @date: 2020-10-12 15:46
      */
     SysUser createPersonalAccount (SysUser user);

     /**
      * @descption: 经销商注册，存储信息
      * @param:
      * @return:
      * @auther: ZhangDing
      * @date: 2020-10-12 15:46
      */
     CustomersExt createThirdParty (CustomersExt customersExt);

     /**
      * @descption: 修改e签宝个人信息
      * @param:
      * @return:
      * @auther: ZhangDing
      * @date: 2020-10-13 9:47
      */
     int updatePersonalAccount (SysUser user);

     /**
      * @descption: 修改e签宝公司信息
      * @param:
      * @return:
      * @auther: ZhangDing
      * @date: 2020-10-13 9:47
      */
     int updateThirdParty(CustomersExt customersExt);

     /**
      * @description: 根据loginName查询E签宝是否存在
      * @param: [loginName]
      * @return: java.lang.String
      * @author: qxm      
      * @date: 2020/11/27 14:31
      */ 
    String getAccountIdByThirdId(String loginName);
    /**
     * @description: 根据chainsCode查询E签宝是否存在
     * @param: [chainsCode]
     * @return: java.lang.String
     * @author: qxm
     * @date: 2020/11/27 14:31
     */
    String getOrgIdByThirdId(String chainsCode);

    /**
     * @descption: 企业认证删除
     *
     */
    JSONObject delOrganizations (String orgId);

  /**
   * @description: 发起企业授权书签署任务（线上）
   * @param param 请求参数
   * @return com.dgtis.commons.exception.model.Result
   * @author auto-generated
   * @date 2026-05-13
   */
  Result initiateCorpAuthSign(ESignCorpAuthParam param) throws IOException;

  /**
   * @description: 获取授权流程签署URL（/v1/signAuthApi/signUrl）
   * @param authId      授权流程ID（必填）
   * @param needLogin   是否需要登录打开链接，默认 true
   * @param clientType  客户端类型：H5 / PC / ALL（默认 ALL）
   * @param redirectUrl 签署完成后跳转页面
   * @param appScheme   AppScheme，用于唤起 App
   * @return Result，data 中包含 shortUrl 和 longUrl
   * @date 2026-05-19
   */
  Result getSignUrl(String authId, Boolean needLogin, String clientType, String redirectUrl, String appScheme) throws IOException;

  /**
   * @description: 查询授权结果（/v1/signAuthApi/queryAuthResult）
   * @param authId 授权流程ID（必填）
   * @return Result，data 中包含 authId / status / failReason / effectiveStartTime / effectiveEndTime / authDownloadUrl
   *   status: 1=进行中 2=授权成功 3=授权失败 4=取消授权
   * @date 2026-05-19
   */
  Result queryAuthResult(String authId,String customeCode) throws IOException;
}
