/** 爱山东网管请求封装
 * 请求拦截、相应拦截、错误统一处理
 */
const BASE_URL = 'https://gqyjpt.weihai.cn/prod-api'
// var errors = []
// if(localStorage.getItem('wenti')){
// 	errors = JSON.parse(localStorage.getItem('wenti'))
// }
// localStorage.setItem('wenti', JSON.stringify(errors))
var http2 = {
  // 2025年6月19日15 新增重试配置参数
  post: function (params, fn, retryOptions = { maxRetry: 3, delay: 1000 }) {
    // 保存原始参数（用于重试时恢复）
    const originalParams = { ...params };
    let currentRetry = 0; // 当前重试次数
    // 定义实际执行请求的函数（支持重试）
    const executeRequest = () => {
      // 每次重试前恢复原始参数（防止参数被修改）
      params = { ...originalParams };
      /**
   * 网关验签接口
   * @param {1}  = appid应用唯一标识
   * @param {2}  = interfaceid接口唯一标识
   * @param {3}  = data接口参数,请使用json格式, 例如:{"siteid":"2","cateid":"1"}
   * @param {4}  = fromport端口来源"0"：PC；"1"：APP；"2"：支付宝；"3"：微信
   * @param {5}  = extraData 额外参数,附件,请求头一类的参数
   *
   */
      const data = SM.encrypt(
        JSON.stringify(params.reqParams),
        params.interfacePublicKey
      )
      // console.log('http请求普通参数前', params.reqParams)
      // console.log('http请求参数加密后', data)
      const extraData = {
        // 公共请求头设置
        // header: {
        // 	// Authorization: "Bearer eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiI0ODA3ODFkZmQxYmE0MmM0OGQyZDQ5NTllYzcyYTUwNCIsInVzZXIiOiJqYyIsInN1YiI6ImpjIn0.WfLq11T7iWPiMuzqDY2N54aIqdv-ciYCe6pINqQAeBdqlMiJmkufsqlD2YMmUzsHA-o4WerkiSYnPzexEMiAJA"
        // 	// Authorization: localStorage.getItem('token')
        // 	Authorization: gemhoUtil.getCookie('token')
        // },
        verificationHeaders: {
          // 二次核验请求头
          interfaceTicket: gemhoUtil.getCookie('ticket'),
        },
      }
      // if (gemhoUtil.getCookie('token')) {
      extraData.header = {
        Authorization: gemhoUtil.getCookie('token')
        // Authorization:
        //   'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImxvZ2luX3VzZXJfa2V5IjoiMTU4YjM0M2MtNTFmMS00ZDYzLTk0ZWUtNzcxZWRkYTAxMjFmIn0.ehBDVx2ldKNypKcQ4Vnzzii7Dy9El8gRBRQ1Fs_Lq0tkp-zCxSHoEesF5YsWD5weKSaYdAYj_3gXQk-P832QrA',
        // }
      }

      if (params.fileList) {
        // 用于接口传递的额外参数 如文件流等){
        extraData.fileList = params.fileList
      }
      // console.log('http请求额外参数', JSON.stringify(extraData))
      // console.log('http2方法进来了~extraData', extraData)

      // vaildInterfacefn("gqyjglptxiefn", params.serviceId, data, "1", "https://" + urldomaincreatesign, "https://" + urldomaingateway).then((value) => {
      vaildInterfacefn(
        'gqyjglptxiefn',
        params.serviceId,
        data,
        '1',
        extraData
      ).then((value) => {
        /**
         * code: 200
           data: "048b04671ad85e52e" // value 值就是接口返回的data值
           msg: "请求成功"
           success: true
          */
        if (!value) {
          // var errors = JSON.parse(localStorage.getItem('wenti'))
          // errors.push('中台发生了错误-中台value为undefined')
          // localStorage.setItem('wenti', JSON.stringify(errors))
          // vant.Dialog.alert({
          // 	title: '信息提示',
          // 	message: '网络异常, 请重试',
          // 	// message: '请求异常'
          // })
          // fn && fn(null) // 2025年6月19日 针对中台偶尔null问题，进行重试请求处理
          // 可重试的错误类型
          if (currentRetry < retryOptions.maxRetry) {
            currentRetry++;
            console.log(`请求失败，第${currentRetry}次重试...`);
            setTimeout(executeRequest, retryOptions.delay);
          } else {
            console.log('超过最大重试次数，请求终止');
            fn && fn(null, error.message);
          }
          return
        }

        let sm2_encrypt_result = value // 后台返回待解密内容
        let sm2_decrypt_result = sm2_Decrypt(
          sm2_encrypt_result,
          params.interfacePrivateKey
        )

        // console.log('vaildInterfacefn响应解密', sm2_decrypt_result)
        if (!sm2_decrypt_result) {
          // 解密为空字符串
          // var errors = JSON.parse(localStorage.getItem('wenti'))
          // errors.push('中台发生了错误-解密为空')
          // localStorage.setItem('wenti', JSON.stringify(errors))
          fn && fn(null, 'decrypt')

          return
        }

        const decryptRes = JSON.parse(sm2_decrypt_result)
        console.log('当前请求参数', params.reqParams, '当前请求返回值', decryptRes)

        if (
          decryptRes.code === 400 ||
          decryptRes.code === 401 ||
          decryptRes.status === 401
        ) {
          gemhoUtil.setCookie('token', '') // 清空token
          vant.Dialog.alert({
            title: '信息提示',
            message: decryptRes.msg || decryptRes.message,
          }).then(() => {
            // confirm按钮回调
            if (gemhoUtil.getPageName() === 'index') {
              lightAppJssdk.navigation.close({
                success: function (data) {
                  //成功回调
                  console.log('关闭页面')
                },
                fail: function (data) {
                  console.log('关闭失败')
                },
              })
            } else {
              gemhoUtil.navigatePage('../index.html')
            }
          })
          return
        }

        fn && fn(sm2_decrypt_result)

      })
    }
    // 首次执行请求
    executeRequest();
  },
}
