var appword = 'aKd20dbGdFvmuwrt' // 固定值

window.onload = function () {
  // vant.Toast.loading({
  // 	message: '加载中...',
  // 	forbidClick: true,
  // 	loadingType: 'spinner',
  // });
  // if(!localStorage.getItem('token')){

  if (!gemhoUtil.getCookie('token')) {
    getUserInfo()
  } else {
    let accessType = gemhoUtil.getParameter('accessType')
    if (accessType == 'saoma') {
		let param = {
		  accessType: accessType,
		  merId: gemhoUtil.getParameter('merId')
		}
		
		// 2025年5月30日08:45:33 添加消费者访问逻辑
		console.log('userType', gemhoUtil.getCookie('userType') == 'consumers')
		var url = ''
		if(gemhoUtil.getCookie('userType') == 'consumers'){
			url = gemhoUtil.setParameter(`./src/_consumer_home.html`, param)
		}else{ // 非消费者
			url = gemhoUtil.setParameter(`./src/_shanghu_home.html`, param)
		}
		console.log('userType-url', url)
		gemhoUtil.navigatePage(url, '跳转中...')
    } else {
		if(gemhoUtil.getCookie('userType') == 'consumers'){
			vant.Dialog.alert({
			  title: '信息提示',
			  message: '请扫描商户码访问~',
			}).then(() => { // 关闭当前访问页面回到爱山东
			  lightAppJssdk.navigation.close({
			    success: function (data) { },
			    fail: function (data) { },
			  })
			});
		}else{
			gemhoUtil.navigatePage('home.html', '跳转中...')
		}
    }
  }
}

function getUserInfo() {
  vant.Toast.loading({
    message: '授权中...',
    forbidClick: true,
    loadingType: 'spinner',
  })
  lightAppJssdk.user.getUserInfoWithEncryptedParamByAppId({
    appId: 'whsdsjzxsfrzdjqwsczptsr', //"gqyjglptxiefn", // 接入方在成功创建应用后自动生成
    success: async (data) => {
      if (data == '未登录') onLoginApp()
      else {
        // 2025-1-14 新增逻辑：获取用户票据，用于后续接口传参使用
        const ticketInfo = await getTicket()

        if (ticketInfo.ticket) {
          gemhoUtil.setCookie('ticket', ticketInfo.ticket)
        } else {
          vant.Dialog.alert({
            title: '信息提示',
            message: '未获取到用户票据信息',
          })
          return
        }
        // console.log(data, '用户授权请求成功的数据');

        if (typeof data == 'string') data = JSON.parse(data)

        // console.log('用户授权请求成功的数据', data)
        // 对于该方法的返回结果,需要进行两步解密才能得到明文用户信息,
        // 先对返回结果进行sm2解密,需要用到 接入方在创建应用时,选择应用的加密方式为sm2,并成功创建应用后,拿到的应用私钥来进行解密
        const sm2_privateKey =
          '145e8920d0ec9b60eaaa73a208e711a68e8aa614b786e45d3eb7eca850ba7843'
        let sm2_encrypt_result = data.data
        let sm2_decrypt_result = sm2_Decrypt(sm2_encrypt_result, sm2_privateKey)

        if (typeof sm2_decrypt_result == 'string')
          sm2_decrypt_result = JSON.parse(sm2_decrypt_result)

        // 其次,对sm2解密后的结果进行 aes解密
        // aes解密需要用到 appword , 为固定值,使用示例代码中的即可
        let aes_encrypt_result = sm2_decrypt_result.data
        let aes_decrypt_result = aes_Decrypt(aes_encrypt_result, appword)
        if (!aes_decrypt_result) {
          // console.log('授权用户信息为空')
          return
        }
        let tempResult = JSON.parse(aes_decrypt_result)
        // console.log('授权用户信息', tempResult)
        let reqParammm = {
          sex: tempResult.sex,
          mobile: tempResult.mobile,
          name: tempResult.name,
          loginname: tempResult.loginname,
          // sex: 1,//aes_decrypt_result.sex,
          // mobile: '18368232323',//aes_decrypt_result.mobile,
          // name: '123',// aes_decrypt_result.name,
          // loginname: 'zjb'// aes_decrypt_result.loginname
        }
        // 请求获取高区应急后台真是token，传参，授权获取的用户信息
        http2.post(
          {
            serviceId: API_KEY_MAP['login']['id'],
            interfacePublicKey: API_KEY_MAP['login']['publicKey'],
            interfacePrivateKey: API_KEY_MAP['login']['privateKey'],
            reqParams: reqParammm,
          },
          function (res) {
            console.log('sdk2用户信息绑定接口回调数据1', JSON.parse(res))
            if (res) {
              console.log('sdk2用户信息绑定接口回调数据2', JSON.parse(res))
              var result = JSON.parse(res)
              // 存储后台返回token存储本地localstorage
              // localStorage.setItem('token', result.token)
              if (result.code == 200) {
                gemhoUtil.setCookie('token', result.token, 1) // 存储1天后过期
				
				// 2025-5-30 08:54:47 新增消费者判断逻辑
				// gemhoUtil.setCookie('userType', 'consumers') // 存储1天后过期
				gemhoUtil.setCookie('userType', result.userType) // 存储1天后过期
				
				if(gemhoUtil.getCookie('userType') == 'consumers'){
					let merId = gemhoUtil.getParameter('merId')
					if(!merId){
						vant.Dialog.alert({
						  title: '信息提示',
						  message: '请扫描商户码访问~',
						}).then(() => { // 关闭当前访问页面回到爱山东
						  lightAppJssdk.navigation.close({
						    success: function (data) { },
						    fail: function (data) { },
						  })
						});
						return
					}
					// 消费者扫码访问 添加逻辑 merId传参
					let param = {
					  merId
					}
					let url = gemhoUtil.setParameter(`src/_consumer_home.html`, param)
					gemhoUtil.navigatePage(url, '跳转中...')
					return
				}
                gemhoUtil.navigatePage('home.html', '跳转中...')
              } else {
                vant.Dialog.alert({
                  title: '信息提示',
                  message: result.msg,
                })
              }
            }
            vant.Toast.clear()
          }
        )
      }
    },
    fail: function (data) { },
  })
}

/**
 * 获取用户票据
 */
function getTicket() {
  return new Promise((resolve, reject) => {
    lightAppJssdk.user.getTicketWithoutDialog({
      success: function (res) {
        //成功回调
        // console.log(JSON.stringify(res) + 1)
        var jsonData = JSON.parse(res)
        if (jsonData.retcode == '000000') {
          var dataValueObj = JSON.parse(jsonData.data)
          // var ticket = dataValueObj.ticket //解析出用户票据信息
          // userType = dataValueObj.usertype //解析保存用户类型（个人法人）
          // gemhoUtil.setCookie('ticket', ticket)
          resolve(dataValueObj) // 成功时调用 外层直接通过.ticket拿到票据值
        } else {
          resolve(jsonData) // 未获取到票据时，则直接返回响应对象，外层做逻辑处理
        }
      },
      fail: function (res) {
        //错误返回
        // console.log(JSON.stringify(res))
        resolve(res) // 成功时调用
      },
    })
  })
}

/**
 * 使用jssdk调用登录页面
 */
function onLoginApp() {
  lightAppJssdk.user.loginapp({
    success: function (data) {
      if (data == '未登录') {
        //取消登录或登录失败，关闭页面
        oncloseWindow()
      } else {
        getUserInfo()
      }
    },
    fail: function (data) {
      //关闭页面
      oncloseWindow()
    },
  })
}

/**
 * 关闭容器
 */
function oncloseWindow() {
  lightAppJssdk.navigation.close({
    success: function (data) { },
    fail: function (data) { },
  })
}

// aes解密
function aes_Decrypt(word, key) {
  var key = CryptoJS.enc.Utf8.parse(key) //转为128bit
  var srcs = CryptoJS.enc.Hex.parse(word) //转为16进制
  var str = CryptoJS.enc.Base64.stringify(srcs) //变为Base64编码的字符串
  var decrypt = CryptoJS.AES.decrypt(str, key, {
    mode: CryptoJS.mode.ECB,
    spadding: CryptoJS.pad.Pkcs7,
  })
  return decrypt.toString(CryptoJS.enc.Utf8)
}

// sm2解密,需要创建加密应用时的私钥
function sm2_Decrypt(word, key) {
  return SM.decrypt(word, key)
}
