From 7ad6d89bfe76796e29733f41e8363f6acca5de69 Mon Sep 17 00:00:00 2001 From: xuechunyuan <17853500702@163.com> Date: Mon, 6 Feb 2023 13:20:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=AC=E5=85=B1=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/aisdapp.js | 170 +++++++++++++++++++++++++++++++++++++++++++ src/utils/axios.js | 42 +++++++++++ src/utils/date.js | 51 +++++++++++++ 3 files changed, 263 insertions(+) create mode 100644 src/utils/aisdapp.js create mode 100644 src/utils/axios.js create mode 100644 src/utils/date.js diff --git a/src/utils/aisdapp.js b/src/utils/aisdapp.js new file mode 100644 index 0000000..2583c39 --- /dev/null +++ b/src/utils/aisdapp.js @@ -0,0 +1,170 @@ +let urlCreatesign = urldomaincreatesign +let urlGateway = urldomaingateway +const appmark = "sdzwapp" +const appword = "aKd20dbGdFvmuwrt" +let userType = "1" //用户类型 1个人 2法人 + +/** + * 通过jssdk方法获取APP本地用户票据 + */ +export const getUserInfo = () => { + lightAppJssdk.user.getTicket({ + success: function (data) { + //成功回调 + console.log(JSON.stringify(data)) + if (data == "未登录") { + onLoginApp() //APP用户未登录,调用登录页面 + } else { + var jsonData = JSON.parse(data) + if (jsonData.retcode == "000000") { + var dataValueObj = JSON.parse(jsonData.data) + var ticket = dataValueObj.ticket //解析出用户票据信息 + userType = dataValueObj.usertype //解析保存用户类型(个人法人) + getUserToken(ticket) + } + } + }, + fail: function (data) { + //错误返回 + console.log(JSON.stringify(data)) + } + }) +} + +/** + * 使用jssdk调用登录页面 + */ +export const onLoginApp = () => { + lightAppJssdk.user.loginapp({ + success: function (data) { + if (data == "未登录") { + //取消登录或登录失败,关闭页面 + oncloseWindow() + } else { + var dataObj = JSON.parse(data) + if (dataObj.retcode == "000000") { + //登录成功,返回用户的票据和用户类型 + var dataValueObj = JSON.parse(dataObj.data) + getUserToken(dataValueObj.ticket) //解析出用户票据信息 + userType = jsonData.usertype //解析保存用户类型(个人法人) + } else { + //关闭页面 + oncloseWindow() + } + } + }, + fail: function (data) { + //关闭页面 + oncloseWindow() + } + }) +} + +/** + * 通过用户票据获取用户的令牌数据,票据使用一次后失效,token时效性较长 + */ +export const getUserToken = (ticket) => { + var params = '{"ticket":"' + ticket + '"}' + const interfaceContent = { + app_id: appmark, + servicename: "ticketValidate", + params: params + } + + vaildInterfacefn("jisnzjk", "ticketvalidate", JSON.stringify(interfaceContent), "2", "https://" + urlCreatesign, "https://" + urlGateway).then((value) => { + const data = JSON.parse(value) + if (data.retcode == "000000") { + const userToken = JSON.parse(data.data).token + if (userType == "1") { + //个人类型获取用户信息 + getUserInfoByToken(userToken) + } else { + //法人类型获取用户信息 + findCorUserByToken(userToken) + } + } else { + lightAppJssdk.notification.alert({ + title: "提示", //可传空 + message: data.msg, + buttonName: "确认", + success: function (data) { + oncloseWindow() + } + }) + } + }) +} + +/** + * 根据令牌获取个人完整信息 + */ +export const getUserInfoByToken = (userToken) => { + const params = '{"token":"' + userToken + '"}' + const interfaceContent = { + app_id: appmark, + servicename: "findOutsideUserByToken", + params: params + } + + try { + vaildInterfacefn("jisnzjk", "findoutsideuserbytoken", JSON.stringify(interfaceContent), "2", "https://" + urlCreatesign, "https://" + urlGateway).then((value) => { + const data = JSON.parse(value) + if (data.retcode == "000000") { + const userInfo = data.data + const userObj = JSON.parse(userInfo) + + document.getElementById("name").innerText = userObj.name + document.getElementById("cardid").innerText = userObj.papersnumber + document.getElementById("mobile").innerText = userObj.mobile + } else { + } + }) + } catch (error) { } +} + +/** + * 根据令牌获取完整法人信息 + */ +export const findCorUserByToken = (userToken) => { + try { + const params = '{"token":"' + userToken + '"}' + const interfaceContent = { + app_id: appmark, + servicename: "findCorUserByToken", + params: params + } + vaildInterfacefn("jisnzjk", "findcoruserytoken", JSON.stringify(interfaceContent), "2", "https://" + urlCreatesign, "https://" + urlGateway).then((value) => { + const data = JSON.parse(value) + + if (data.retcode == "000000") { + const userInfo = JSON.stringify(data.data) + document.getElementById("userinfo").innerText = userInfo + } else { + } + }) + } catch (err) { } +} + +/** + * 关闭容器 + */ +export const oncloseWindow = () => { + lightAppJssdk.navigation.close({ + success: function (data) { }, + fail: function (data) { } + }) +} + +/** + * AES解密 + */ +export const 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) +} \ No newline at end of file diff --git a/src/utils/axios.js b/src/utils/axios.js new file mode 100644 index 0000000..de5141d --- /dev/null +++ b/src/utils/axios.js @@ -0,0 +1,42 @@ +import axios from "axios"; + +//跨域请求,允许保存cookie +axios.defaults.withCredentials = true; + +//返回其他状态码 +axios.defaults.validateStatus = function (status) { + return status >= 200 && status <= 500; +}; + +//HTTP Request拦截 +axios.interceptors.request.use( + (config) => { + config.headers["Content-Type"] = "application/json"; + return config; + }, + (error) => { + console.error("Request interceptors:", error); + return Promise.reject(error); + } +); + +//HTTP Response拦截 +axios.interceptors.response.use( + (res) => { + const ok = res.data.Success || false, + status = res.status || 200, + message = res.data.AllMessages || "Internal Server Error!"; + + if (!ok && !status) { + return Promise.reject(new Error(message)); + } + + return res.data; + }, + (error) => { + console.error("Response interceptors:", error); + return Promise.reject(error); + } +); + +export default axios; diff --git a/src/utils/date.js b/src/utils/date.js new file mode 100644 index 0000000..4c1f250 --- /dev/null +++ b/src/utils/date.js @@ -0,0 +1,51 @@ +export const calcDate = (date1, date2) => { + let date3 = date2 - date1; + + let days = Math.floor(date3 / (24 * 3600 * 1000)) + + let leave1 = date3 % (24 * 3600 * 1000) //计算天数后剩余的毫秒数 + let hours = Math.floor(leave1 / (3600 * 1000)) + + let leave2 = leave1 % (3600 * 1000) //计算小时数后剩余的毫秒数 + let minutes = Math.floor(leave2 / (60 * 1000)) + + let leave3 = leave2 % (60 * 1000) //计算分钟数后剩余的毫秒数 + let seconds = Math.round(date3 / 1000) + return { + leave1, + leave2, + leave3, + days: days, + hours: hours, + minutes: minutes, + seconds: seconds, + } +} + +/** + * 日期格式化 + */ +export function dateFormat(date, format) { + format = format || 'yyyy-MM-dd hh:mm:ss'; + if (date !== 'Invalid Date') { + let o = { + "M+": date.getMonth() + 1, //month + "d+": date.getDate(), //day + "h+": date.getHours(), //hour + "m+": date.getMinutes(), //minute + "s+": date.getSeconds(), //second + "q+": Math.floor((date.getMonth() + 3) / 3), //quarter + "S": date.getMilliseconds() //millisecond + } + if (/(y+)/.test(format)) format = format.replace(RegExp.$1, + (date.getFullYear() + "").substr(4 - RegExp.$1.length)); + for (let k in o) + if (new RegExp("(" + k + ")").test(format)) + format = format.replace(RegExp.$1, + RegExp.$1.length === 1 ? o[k] : + ("00" + o[k]).substr(("" + o[k]).length)); + return format; + } + return ''; + +}