const appword = "aKd20dbGdFvmuwrt" // 固定值

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

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
		 }
        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: 'gqyjglptbind',
			interfacePublicKey: "0450567ffc64139658baa28c5c9bc0415200b476baa3bcc3f9dc9dbbf8dbcff2fb5e93319127685469c84784d235220c0347e695fbf66c5ffede33e645bea8b3f0",
			interfacePrivateKey: "00b92f5f2a7c40cb07d225f2e90df9b8b23569658e4f9e04dd0a4bf4a5b374063b",
			reqParams: reqParammm
		}, function(res){
			if(res){
				// console.log('sdk2用户信息绑定接口回调数据', JSON.parse(res))
				var result = JSON.parse(res)
				// 存储后台返回token存储本地localstorage
				// localStorage.setItem('token', result.token)
				gemhoUtil.setCookie('token', result.token, 1)// 存储1天后过期
			}
			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)
}