gtht-miniapp-sdk
Version:
gtht-miniapp-sdk 是一套基于 Uniapp + Vue3 框架开发的兼容多端的 UI 组件库
100 lines (99 loc) • 3.53 kB
JavaScript
import sm3 from 'sm3-standard';
import { CommonApiResult } from './common';
import { Persist } from './persist';
import { Request } from './request';
import { defaultConfig } from '../components/config';
//获取当前服务器时间
export async function getServerTime() {
const persist = new Persist('TIME_DIFF');
let diff = persist.get('diff');
const local = new Date();
if (diff === undefined) {
const request = new Request();
try {
const resp = await request.post('https://i.gtja.com/fmarketing/common/commonIndex', {}, {
params: {
needTimeStamp: '1',
activityCode: '202406_BDHB',
},
});
if (resp && resp.data && resp.data.data && resp.data.data.timeStamp) {
diff = Number(resp.data.data.timeStamp) - local.valueOf();
persist.set('diff', diff);
}
else {
if (resp.statusCode === 200) {
throw resp.data.msg || '获取服务器时间请求失败';
}
throw '获取服务器时间请求失败,状态码:' + resp.statusCode;
}
}
catch (error) {
console.warn('获取服务器时间失败', error);
return CommonApiResult.fail(error);
}
}
return CommonApiResult.success(local.valueOf() + diff);
}
//活动/微信组用sm3加密
export const sm3Encrypt = async (prefix, suffix) => {
const serverTimeRes = await getServerTime();
if (serverTimeRes.isSuccess()) {
return CommonApiResult.success(sm3((prefix || '') +
+serverTimeRes.getData() +
'' +
'ykFn-fK$~OS/]z#hckz[LFB10-oR2)iQ6[>zV4%nJ7/xL1%kLWxApp' +
(suffix || '')));
}
else {
return CommonApiResult.fail(serverTimeRes.getMsg());
}
};
export const sm3EncryptByTime = (prefix, time, suffix) => {
if (!prefix) {
prefix = '';
}
if (!suffix) {
suffix = '';
}
return sm3(prefix +
'' +
time +
'' +
'ykFn-fK$~OS/]z#hckz[LFB10-oR2)iQ6[>zV4%nJ7/xL1%kLWxApp' +
suffix);
};
//微信app初始化
export const wxAppInit = async () => {
const persist = new Persist('WXAPP');
let init = persist.get('init');
const local = new Date();
if (init === undefined) {
init = {};
const request = new Request();
try {
const resp = await request.post(defaultConfig.wxApp.baseUrl + '/visitor/getInitInfo', {}, {});
if (resp &&
resp.data &&
resp.data.data &&
resp.data.data.serverTimeMillis) {
init.diff = Number(resp.data.data.serverTimeMillis) - local.valueOf();
init.sMsgId = resp.data.data.sMsgId;
init.serverTimeMillis = Number(resp.data.data.serverTimeMillis);
persist.set('init', init);
}
else {
if (resp.statusCode === 200) {
throw resp.data.msg || '获取服务器时间请求失败';
}
throw '获取服务器时间请求失败,状态码:' + resp.statusCode;
}
}
catch (error) {
console.warn('获取服务器时间失败', error);
return CommonApiResult.fail(error);
}
}
init.serverTimeMillis = local.valueOf() + init.diff;
return CommonApiResult.success(init);
};