|
@@ -0,0 +1,117 @@
|
|
|
+
|
|
|
+
|
|
|
+import wxApp from "./wecaht.min.app.js";
|
|
|
+ import request from "./request.js"
|
|
|
+let token = null;
|
|
|
+let requestLoginTime = 0;
|
|
|
+
|
|
|
+// 获取token
|
|
|
+export const getToken = async () => {
|
|
|
+
|
|
|
+ if (getToken.promise) return getToken.promise;
|
|
|
+ if(!token) token = uni.getStorageSync('token');
|
|
|
+
|
|
|
+ // token格式化
|
|
|
+ if (token && typeof token === "string") token = JSON.parse(token);
|
|
|
+
|
|
|
+ console.log("checkToken", checkToken(token));
|
|
|
+
|
|
|
+ if (!token) getToken.promise = login();
|
|
|
+ else if (checkToken(token)) return Promise.resolve(token.token);
|
|
|
+ else {
|
|
|
+ getToken.promise = login();
|
|
|
+ }
|
|
|
+
|
|
|
+ getToken.promise = getToken.promise
|
|
|
+ .finally(() => {
|
|
|
+ getToken.promise = null;
|
|
|
+ })
|
|
|
+ .then(r => {
|
|
|
+ console.log("refresh");
|
|
|
+ return setToken(r);
|
|
|
+ });
|
|
|
+
|
|
|
+ return getToken.promise;
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+// 登录
|
|
|
+export const login = async () => {
|
|
|
+ requestLoginTime++;
|
|
|
+ if (requestLoginTime != 1) {
|
|
|
+ let loginResponed = await loginPromise();
|
|
|
+ }
|
|
|
+ let code = await (wxApp.getWxMinAppUuerCode());
|
|
|
+ let res = request.post("/api/auth/login",{code:code,appid:wxApp.getWXAppId()});
|
|
|
+ requestLoginTime = 0;
|
|
|
+ return res;
|
|
|
+ // return
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+const loginPromise = () => {
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ setTimeout(() => {
|
|
|
+ resolve(true)
|
|
|
+ }, 800)
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+// 检测数据结果
|
|
|
+export const checkResult = r => {
|
|
|
+ if (!r.data.code) {
|
|
|
+ return r.data.data;
|
|
|
+ } else {
|
|
|
+ return Promise.reject(r);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+// 刷新token
|
|
|
+const refreshToken = () => {
|
|
|
+
|
|
|
+ // let res = request.post("/api/auth/refreshToken",{refreshToken:code,appid:wxApp.getWXAppId()});
|
|
|
+ console.log('11111111111sssssssssssssssss',token);
|
|
|
+ // return fly
|
|
|
+ // .get("/refreshToken", {
|
|
|
+ // token: token.token
|
|
|
+ // }, {
|
|
|
+ // headers: {
|
|
|
+ // Authorization: token.token
|
|
|
+ // }
|
|
|
+ // })
|
|
|
+ // .then(r => {
|
|
|
+ // return r;
|
|
|
+ // })
|
|
|
+ // .catch(e => {
|
|
|
+ // console.log(e);
|
|
|
+ // console.error("刷新token失败");
|
|
|
+ // return Promise.reject(e);
|
|
|
+ // });
|
|
|
+};
|
|
|
+
|
|
|
+// 检查token的有效期
|
|
|
+const checkToken = t => {
|
|
|
+ return new Date().getTime() < t.time;
|
|
|
+};
|
|
|
+
|
|
|
+// 设置token
|
|
|
+const setToken = async t => {
|
|
|
+ token = formatToken(t);
|
|
|
+ uni.setStorageSync("token",token);
|
|
|
+ return t.token;
|
|
|
+};
|
|
|
+
|
|
|
+// 清除token
|
|
|
+export const clearToken = async () => {
|
|
|
+ token = null;
|
|
|
+ uni.removeStorageSync('token');
|
|
|
+ console.log("clear token done");
|
|
|
+};
|
|
|
+
|
|
|
+// 处理token的格式
|
|
|
+const formatToken = t => {
|
|
|
+ t.token = "Bearer " + t.accessToken;
|
|
|
+ t.time = ((t.expiration -600)* 1000);
|
|
|
+ return t;
|
|
|
+};
|