chenzhen2 пре 1 година
родитељ
комит
f01aa8e65d
6 измењених фајлова са 40 додато и 108 уклоњено
  1. 7 0
      src/common/request.js
  2. 1 1
      src/pages/auth/index.wpy
  3. 0 1
      src/pages/bindTenant/index.wpy
  4. 3 14
      src/pages/index.wpy
  5. 18 86
      src/service/user.js
  6. 11 6
      src/store/user.js

+ 7 - 0
src/common/request.js

@@ -97,6 +97,13 @@ export default function (info) {
           if (checkTokenIsValid() == 2) { // 登录过期后重新从首页刷新进入
             store.commit('clearToken', '');
             wx.redirectTo({ url: '/pages/index' });
+          } else {
+            if (!store.state.user.refreshUse) {
+              store.commit('setRefreshUse', true);
+              checkLoginNew(1).then(res => {
+                store.commit('setRefreshUse', false);
+              });
+            }
           }
         } else if (res.statusCode >= 400) {
           reject(res.errMsg);

+ 1 - 1
src/pages/auth/index.wpy

@@ -89,7 +89,7 @@ import wepy from '@wepy/core';
 import { mapState } from '@wepy/x';
 import store from '@/store';
 import config from '@/config';
-import { setAvatar, checkLoginNew, setUserInfoByAuth } from '@/service/user';
+import { setAvatar, checkLoginNew } from '@/service/user';
 import { getHttpPhoneNumber } from '@/api/user';
 let defaultAvatarUrl =
   config.h5StaticPath + '/page-bind-tenant/default_avatar.svg';

+ 0 - 1
src/pages/bindTenant/index.wpy

@@ -122,7 +122,6 @@ import { mapState } from '@wepy/x';
 import store from '@/store';
 import config from '@/config';
 import {
-  setUserInfoByAuth,
   getCompanyDataByPhone,
   getAvatar,
   wxLogin,

+ 3 - 14
src/pages/index.wpy

@@ -57,7 +57,7 @@ import wepy from '@wepy/core';
 import { mapState } from '@wepy/x';
 import store from '@/store';
 import config from '@/config';
-import { wxLogin,checkLoginNew } from '@/service/user';
+import { wxLogin, checkLoginNew } from '@/service/user';
 wepy.page({
   store,
   data: {
@@ -71,18 +71,7 @@ wepy.page({
   onLoad() {},
   onShow() {
     if (this.isActivated && this.isActivated == 1) {
-      // this.goHome();
-      checkLoginNew().then(res => {
-        console.log("登录过期了==",res);
-        if (res && res.isActivated == 1) {
-          console.log("登录过期了gg==",res);
-          this.goHome();
-        } else {
-          // wx.navigateTo({
-          //   url: '/pages/index'
-          // });
-        }
-      });
+      this.goHome();
     } else {
       this.checkTenantRegist();
     }
@@ -107,7 +96,7 @@ wepy.page({
           store.commit('setTokenInfo', tokenInfo);
           if (this.isActivated && this.isActivated == 1) {
             // 已经激活
-            store.commit('setTokenInfo', res.tokenUser);
+            store.commit('setUserInfo', res.tokenUser);
             this.goHome();
           } else if (this.isActivated == 0) {
             // 未激活

+ 18 - 86
src/service/user.js

@@ -3,18 +3,7 @@ import store from '@/store';
 import config from '@/config';
 import { login, getCompanyByPhone, refreshToken, getUserControlSpace } from '@/api/user.js';
 import utils from '@/common/utils.js';
-
-// 检查登录
-function checkLogin(needGetetUserInfo = true) {
-  let token = store.state.user.token;
-  if (!token) {
-    return wxLogin(needGetetUserInfo);
-  } else {
-    return Promise.resolve();
-  }
-}
-
-//  检查用户信息
+//  检查用户信息-(废弃)
 function checkHasUserInfo() {
   let userInfo = store.state.user.userInfo;
   if (userInfo && JSON.stringify(userInfo) !== '{}') {
@@ -23,72 +12,10 @@ function checkHasUserInfo() {
     // return checkLogin(false).then(() => {
     //   return getUserData();
     // })
-    wxLogin();
+    // wxLogin();
   }
 }
 
-function setUserInfoByAuth() {
-  return new Promise((resolve, reject) => {
-    // if (ing) {
-    //   return;
-    // }
-    // ing = true;
-    // let { userInfo = {} } = store.state.user;
-    // // 如果已经保存过了
-    // let nickName = userInfo.nickName;
-    // if (nickName) {
-    //   ing = false;
-    //   resolve();
-    //   return;
-    // }
-    wx.getUserProfile({
-      desc: '用于完善用户信息',
-      success: res => {
-        let detail = res;
-        wx.login({
-          success: loginRes => {
-            // ing = false;
-            // if (loginRes.code) {
-            //   let params = {
-            //     encryptedData: detail.encryptedData,
-            //     iv: detail.iv,
-            //     jsCode: loginRes.code
-            //   };
-            //   setWxAuthUserInfo(params).then(res => {
-            //     let userInfo = JSON.parse(detail.rawData);
-            //     let cachedInfo = wx.getStorageSync('UserInfo');
-            //     userInfo = {
-            //       ...cachedInfo,
-            //       ...userInfo,
-            //       headImgUrl: userInfo.avatarUrl
-            //     };
-            //     delete userInfo.avatarUrl;
-            //     store.commit('setUserInfo', {
-            //       ...userInfo
-            //     });
-            //     wx.setStorageSync('UserInfo', { ...userInfo });
-            //     resolve(res.data);
-            //   });
-            // }
-          },
-          fail: res => {
-            // ing = false;
-            // reject(res);
-          }
-        });
-      },
-      fail: res => {
-        // ing = false;
-        // wx.showToast({
-        //   icon: 'none',
-        //   title: '授权用户公开信息后方可进入下一步操作'
-        // });
-        // reject();
-      }
-    });
-  });
-}
-
 // 登录
 function wxLogin(type) {
   // type=1 如果type未激活和作废不需要跳转到登录页面
@@ -117,7 +44,7 @@ function wxLogin(type) {
               store.commit('setTokenInfo', tokenInfo);
               if (data.isActivated && data.isActivated == 1) {
                 store.commit('setUserInfo', data.tokenUser);
-                store.commit('setProjectId', data.tokenUser.projectId);
+                // store.commit('setProjectId', data.tokenUser.projectId);
               } else {
                 if (!type) {
                   wx.redirectTo({ url: '/pages/index' });
@@ -155,8 +82,6 @@ function getCompanyDataByPhone() {
   return new Promise((resolve, reject) => {
     let userPhone = wx.getStorageSync('userPhone');
     let userInfo = store.state.user.userInfo;
-
-    console.log("userInfo==",userInfo)
     if (!userPhone) {
       userPhone = userInfo.phone
     }
@@ -210,11 +135,8 @@ function refreshTokenPage() {
       resolve("续约失败")
       store.commit('setToken', '')
       wx.redirectTo({ url: '/pages/index' });
-      // store.commit('setUserInfo', {});
-      // wxLogin()
     })
   })
-
 }
 
 // 刷新首页
@@ -265,24 +187,34 @@ function checkUserControl() {
 }
 
 // 登录续约逻辑-待处理
-function checkLoginNew() {
+function checkLoginNew(type) {
   return new Promise((resolve, reject) => {
     let token = store.state.user.token;
     if (!token) {
       wxLogin().then((res) => {
         resolve(res)
+      }).catch((error) => {
+        reject("登录失败!");
       });
     } else {
-      let flag = checkTokenIsValid()
+      let flag = checkTokenIsValid();
       if (flag == 1) {
         refreshTokenPage().then(res => {
           resolve(res)
+        }).catch(() => {
+          reject("续约失败!");
         }); // 续约
       } else if (flag == 2) { // 重新登录
         wxLogin().then((res) => {
           resolve(res)
         });
-      } else if (flag == 3) {  // 后续补定时器定时续约逻辑
+      } else if (flag == 3) {  // 差2分钟过期
+        if (type !== 1) {
+          let timeout = setTimeout(() => {
+            clearTimeout(timeout)
+            checkLoginNew();
+          }, 300000)  // 5分钟后检查一下是否过期
+        }
         resolve({
           isActivated: 1
         })
@@ -300,7 +232,7 @@ function checkTokenIsValid() {
   let nowtime = utils.getTimeStamp();
   if (expireTime && expireTime < nowtime && refreshToken >= nowtime) {  // 过期可续约
     flag = 1
-  } else if (expireTime && expireTime >= nowtime) { // 没过期
+  } else if (expireTime && expireTime >= (nowtime - 120000)) { // 还差2分钟过期
     flag = 3
   }
   else { // 需要重新登录
@@ -334,5 +266,5 @@ export {
   checkTokenIsValid,
   getCompanyDataByPhone,
   checkUserControl,
-  setUserInfoByAuth
+  checkLoginStatus
 }

+ 11 - 6
src/store/user.js

@@ -1,27 +1,35 @@
 export default {
   state: {
     status: null,
+    timer: null,
     token: wx.getStorageSync('token'),
-    projectId: '',
-    refreshToken: '',
+    refreshUse: wx.getStorageSync('refreshUse'), // 当接口401的时候是否调用了需要接口
     userInfo: wx.getStorageSync('userInfo'),
     userPhone: wx.getStorageSync('userPhone'),
     // 申请id
+    projectId: "",
     applyId: '',
     tokenInfo: wx.getStorageSync('tokenInfo'),
     hasClearToken: false,
-    tokenIsValid: true,
     isActivated: wx.getStorageSync('isActivated')
   },
   mutations: {
+    // 续约接口是否被调用过
+    setRefreshUse(state, refreshUse) {
+      wx.setStorageSync('refreshUse', refreshUse);
+      state.refreshUse = refreshUse;
+    },
+    // 设置token
     setToken(state, token) {
       wx.setStorageSync('token', token);
       state.token = token;
     },
+    //设置租户状态
     setActivated(state, isActivated) {
       wx.setStorageSync('isActivated', isActivated);
       state.isActivated = isActivated
     },
+    // 设置token用户信息
     setTokenInfo(state, tokenInfo) {
       wx.setStorageSync('tokenInfo', tokenInfo);
       state.tokenInfo = tokenInfo;
@@ -49,9 +57,6 @@ export default {
     setApplyId(state, applyId) {
       state.applyId = applyId
     },
-    setTokenIsValid(state, data) {
-      state.tokenIsValid = data
-    },
     setProjectId(state, data) {
       state.projectId = data
     },