Selaa lähdekoodia

登陆优先取缓存机制

xiaohaizhao 4 kuukautta sitten
vanhempi
commit
ee72087e24
2 muutettua tiedostoa jossa 106 lisäystä ja 16 poistoa
  1. 1 4
      pages/index/userCenter/index.js
  2. 105 12
      pages/login/modules/login.js

+ 1 - 4
pages/index/userCenter/index.js

@@ -63,10 +63,7 @@ Component({
 						title: '退出成功',
 						mask: true
 					});
-					let loginMsg = wx.getStorageSync("loginMsg");
-					wx.clearStorageSync();
-					wx.setStorageSync('loginMsg', loginMsg)
-					wx.setStorageSync('isAgree', true)
+					wx.removeStorageSync('userMsg')
 					setTimeout(() => {
 						wx.reLaunch({
 							url: '/pages/login/phone',

+ 105 - 12
pages/login/modules/login.js

@@ -1,5 +1,6 @@
 const _Http = getApp().globalData.http;
 let count = 0; //接口完成数量
+let hasRedirected = false; // 防止重复跳转
 
 function loginMsg(res) {
     wx.setStorageSync('account_list', res.account_list);
@@ -11,23 +12,67 @@ function loginMsg(res) {
         });
         wx.setStorageSync('userrole', item.usertype == 1 ? '业务员' : '经销商');
         wx.setStorageSync('userMsg', item)
-        query_userauth();
+        
+        // 立即尝试从缓存加载权限数据
+        const cachedAuth = wx.getStorageSync('userauth');
+        const cachedSiteP = wx.getStorageSync('siteP');
+        const cachedBanner = wx.getStorageSync('banner_list');
+        
+        // 如果缓存中有全部数据,立即跳转
+        if (cachedAuth && cachedSiteP && cachedBanner) {
+            count = 3; // 设置完成数量
+            toHome();
+            
+            // 异步更新所有数据(不影响主流程)
+            Promise.all([
+                query_userauth(true),
+                querySite_Parameter(true),
+                query_adspacelist(true)
+            ]).catch(err => {
+                console.error('异步更新数据失败:', err);
+            });
+        } else {
+            // 缓存不全,执行原来的同步逻辑
+            console.log('缓存不全,执行同步加载');
+            query_userauth();  // 这个会触发后续的 query_adspacelist 和 querySite_Parameter
+        }
     } else {
         wx.redirectTo({
             url: './selectSite',
         })
     }
-
-
 }
+
 /* 获取用户权限 */
-function query_userauth() {
+function query_userauth(isAsync = false) {
+    // 异步更新逻辑 - 只更新不处理跳转
+    if (isAsync) {
+        return _Http.basic({
+            "classname": "sysmanage.develop.userauth.userauth",
+            "method": "query_userauth",
+            content: {
+                nocache: true
+            }
+        }).then(res => {
+            if (res.msg != '成功') {
+                console.error('权限查询失败:', res.msg);
+                return;
+            }
+            wx.setStorageSync('userauth', res.data);
+            console.log('用户权限已异步更新');
+            return res.data;
+        }).catch(err => {
+            console.error('权限查询异常:', err);
+        });
+    }
+    
+    // 原来的同步逻辑(没有缓存时执行)
     query_adspacelist();
     querySite_Parameter();
     wx.setStorageSync('userauth', []);
-    _Http.basic({
+    
+    return _Http.basic({
         "classname": "sysmanage.develop.userauth.userauth",
-        // "classname": "sysmanage.develop.userauthforweb.userauth",
         "method": "query_userauth",
         content: {
             nocache: true
@@ -43,9 +88,30 @@ function query_userauth() {
         toHome();
     });
 }
+
 /* 查询站点数据 */
-function querySite_Parameter() {
-    _Http.basic({
+function querySite_Parameter(isAsync = false) {
+    // 异步更新逻辑
+    if (isAsync) {
+        return _Http.basic({
+            "classname": "webmanage.site.site",
+            "method": "querySite_Parameter",
+            "content": {}
+        }).then(res => {
+            if (res.msg != '成功') {
+                console.error('站点参数查询失败:', res.msg);
+                return;
+            }
+            wx.setStorageSync('siteP', res.data);
+            console.log('站点参数已异步更新');
+            return res.data;
+        }).catch(err => {
+            console.error('站点参数查询异常:', err);
+        });
+    }
+    
+    // 原来的同步逻辑
+    return _Http.basic({
         "classname": "webmanage.site.site",
         "method": "querySite_Parameter",
         "content": {}
@@ -57,11 +123,32 @@ function querySite_Parameter() {
         wx.setStorageSync('siteP', res.data);
         count += 1;
         toHome();
-    })
+    });
 }
+
 /* 查询轮播图 */
-function query_adspacelist() {
-    _Http.basic({
+function query_adspacelist(isAsync = false) {
+    // 异步更新逻辑
+    if (isAsync) {
+        return _Http.basic({
+            "classname": "common.adspace.adspace",
+            "method": "query_adspacelist",
+            "content": {}
+        }).then(res => {
+            if (res.msg != '成功') {
+                console.error('轮播图查询失败:', res.msg);
+                return;
+            }
+            wx.setStorageSync('banner_list', res.data);
+            console.log('轮播图已异步更新');
+            return res.data;
+        }).catch(err => {
+            console.error('轮播图查询异常:', err);
+        });
+    }
+    
+    // 原来的同步逻辑
+    return _Http.basic({
         "classname": "common.adspace.adspace",
         "method": "query_adspacelist",
         "content": {}
@@ -73,11 +160,15 @@ function query_adspacelist() {
         wx.setStorageSync('banner_list', res.data)
         count += 1;
         toHome();
-    })
+    });
 }
 
 function toHome() {
+    if (hasRedirected) return; // 防止重复跳转
     if (count < 3) return;
+    
+    hasRedirected = true;
+    console.log('跳转到首页');
     wx.reLaunch({
         url: '/pages/index/index'
     })
@@ -85,7 +176,9 @@ function toHome() {
     wx.setStorageSync('isLeader', wx.getStorageSync('userMsg').usertype == 21)
     wx.removeStorageSync('domainrelatedaccounts')
     count = 0;
+    hasRedirected = false; // 重置标志,为了下次登录
 }
+
 /* 站点数据查询 */
 module.exports = {
     loginMsg,