zrug 6 月之前
父节点
当前提交
dce31cc158
共有 3 个文件被更改,包括 82 次插入37 次删除
  1. 17 7
      app.js
  2. 1 0
      pages/index/index.js
  3. 64 30
      utils/http.js

+ 17 - 7
app.js

@@ -30,11 +30,16 @@ App({
     if (wx.getStorageSync('accessToken')) {
       this.globalData.loginSuccess = true;
     } else {
+    }
+  },
+
+  getMUser() {
+    return new Promise((resolve, reject) => {
       wx.login({
         success: res => {
           // 发送 res.code 到后台换取 accessTokenDTO, userProfileDTO
           console.log("code", res);
-          if (res.code){
+          if (res.code) {
             wx.request({
               url: baseUrl + '/api/store/wxlogin',
               method: 'POST',
@@ -46,22 +51,27 @@ App({
                 'X-Referrer-Id': '', // 旧租户字段
                 'X-Store-Id': '', // 旧租户字段
               },
-              success:(res)=> {
+              success: (res) => {
                 console.log(res);
                 this.globalData.mUser = res.data.data;
                 wx.setStorageSync('accessToken', this.globalData.mUser.accessTokenDTO.accessToken);
+                resolve();
               },
-              fail: function(res){
+              fail: (res) => {
                 console.log(res);
+                reject(res);
               }
-            })
+            });
+          } else {
+            reject(new Error('No code received from wx.login'));
           }
         },
-        fail: function(e){
+        fail: (e) => {
           console.log(e);
+          reject(e);
         }
-      })
-    }
+      });
+    });
   },
 })
 

+ 1 - 0
pages/index/index.js

@@ -86,6 +86,7 @@ Component({
 
   methods: {
     onLoad: async function (options) {
+
       // 生命周期函数--监听页面加载
       console.log("onLoad");
       console.log('App.globalData', App.globalData);

+ 64 - 30
utils/http.js

@@ -28,39 +28,73 @@ function showErrToast(e) {
 
 function getPromise(url, data, method) {
   return new Promise((resolve, reject) => {
-    wx.request({
-      url: `${baseUrl}${url}`,
-      header: getHeader(),
-      method: method,
-      data: data,
-      success: function (res) {
-        if (res.data.code === 200) {
-          resolve(res.data.data);
-        } else {
-          if (res.statusCode === 401) {
-            reject(401);
+    const accessToken = wx.getStorageSync("accessToken");
+
+    if (!accessToken) {
+      // Cache the current API call
+      const cachedCall = () => {
+        wx.request({
+          url: `${baseUrl}${url}`,
+          header: getHeader(),
+          method: method,
+          data: data,
+          success: function (res) {
+            if (res.data.code === 200) {
+              resolve(res.data.data);
+            } else {
+              if (res.statusCode === 401) {
+                reject(401);
+              } else {
+                reject(res.data.message);
+              }
+            }
+          },
+          fail: function (err) {
+            reject(err);
+          },
+        });
+      };
+
+      // Call App.getMUser to fetch accessToken
+      App.getMUser()
+        .then(() => {
+          // Retry the cached API call after getting the token
+          cachedCall();
+        })
+        .catch((err) => {
+          console.error("Failed to fetch accessToken", err);
+          showErrToast("Failed to fetch accessToken");
+          reject(err);
+        });
+    } else {
+      // Proceed with the API call if accessToken exists
+      wx.request({
+        url: `${baseUrl}${url}`,
+        header: getHeader(),
+        method: method,
+        data: data,
+        success: function (res) {
+          if (res.data.code === 200) {
+            resolve(res.data.data);
           } else {
-            reject(res.data.message);
+            if (res.statusCode === 401) {
+              reject(401);
+            } else {
+              reject(res.data.message);
+            }
           }
-        }
-      },
-      fail: function (err) {
-        reject(err);
-      },
-    });
+        },
+        fail: function (err) {
+          reject(err);
+        },
+      });
+    }
   }).catch((e) => {
-    // if (401 === e) {
-      // redirect to login page
-    //   wx.navigateTo({
-    //     url: "/pages/login/login",
-    //   });
-    // } else {
-      console.error(`in promise error, url: ${baseUrl}${url}`);
-      console.error(e);
-      if (e) {
-        showErrToast(e);
-      }
-    // }
+    console.error(`in promise error, url: ${baseUrl}${url}`);
+    console.error(e);
+    if (e) {
+      showErrToast(e);
+    }
   });
 }