From 81c23f9c2f5bdfbe962d0b19a5a80ea7c12f043d Mon Sep 17 00:00:00 2001
From: litian <C21AF165>
Date: 星期三, 10 七月 2024 17:39:02 +0800
Subject: [PATCH] 二维码

---
 assets/js/login.js |  184 +++++++++++++++++++++++++++++++---------------
 1 files changed, 124 insertions(+), 60 deletions(-)

diff --git a/assets/js/login.js b/assets/js/login.js
index bf70086..e685eab 100644
--- a/assets/js/login.js
+++ b/assets/js/login.js
@@ -1,63 +1,127 @@
-import { setSessionGuid } from "./userAction"
+import {
+  setSessionGuid
+} from "./userAction"
 
 
-export const checkLoginInfo = (app, callback) => {
-	const token = wx.getStorageSync(app.config.tokenKey)
-	if (!token) {
-		wx.login({
-			success: (res) => {
-				wx.getUserInfo({
-					success: (infoRes) => {
-						app.MG.identity.checkWeChatAppAccount({
-							code: res.code,
-							appCode: app.config.appRefCode,
-							encryptedData: infoRes.encryptedData,
-							iv: infoRes.iv
-						}).then(loginRes => {
-							if (!loginRes) {
-								wx.navigateTo({
-									url: "/pages/bindInfo/index?code=" + res.code,
-								});
-							} else {
-								wx.login({
-									success: (res) => {
-										app.MG.identity.loginByWeChatAppCode({
-											code: res.code,
-											appRefCode: app.config.appRefCode,
-											platform: "weChatAppCustom",
-											encryptedData: infoRes.encryptedData,
-											iv: infoRes.iv
-										}).then(res => {
-											if (res && res.status == "Ok") {
-												wx.setStorageSync(app.config.tokenKey, res.token);
-												setSessionGuid()
-												callback(res.token)
-											} else {
-												console.log(res);
-												callback(false)
-											}
-										})
-									},
-									fail: (err) => {
-										console.log(err);
-										callback(false)
-									}
-								})
-							}
-						})
-					},
-					fail: (err) => {
-						console.log(err);
-						callback(false)
-					}
-				})
-			},
-			fail: (err) => {
-				console.log(err);
-				callback(false)
-			}
-		})
-	} else {
-		callback(token)
-	}
+export const loginInfo = (app, callback) => {
+  if (app.config.appId == 27) {
+    wx.navigateTo({
+      url: "/pages/testLogin/index",
+    });
+  } else {
+    wx.login({
+      success: (res) => {
+        wx.getUserInfo({
+          success: (infoRes) => {
+            // debugger
+            app.MG.identity.checkWeChatAppAccount({
+              code: res.code,
+              appCode: app.config.appRefCode,
+              encryptedData: infoRes.encryptedData,
+              iv: infoRes.iv
+            }).then(loginRes => {
+              if (!loginRes) {
+                const pages = getCurrentPages();
+                const currentPage = pages[pages.length - 1];
+                let url = `/${currentPage.route}`;
+                if (Object.keys(currentPage.options).length) {
+                  let option = "";
+                  for (const key in currentPage.options) {
+                    if (currentPage.options[key]) {
+                      if (option) {
+                        option += "&"
+                      }
+                      option += key + "=" + currentPage.options[key]
+                    }
+                  }
+                  url += "?" + option
+                }
+                console.log(url);
+                wx.navigateTo({
+                  url: "/pages/bindInfo/index?page=" + encodeURIComponent(url),
+                });
+              } else {
+                wx.login({
+                  success: (res) => {
+                    app.MG.identity.loginByWeChatAppCode({
+                      code: res.code,
+                      appRefCode: app.config.appRefCode,
+                      platform: "WeChatAppCustom",
+                      encryptedData: infoRes.encryptedData,
+                      iv: infoRes.iv
+                    }).then(res => {
+                      if (res && res.status == "Ok") {
+                        // 鍌ㄥ瓨token
+                        wx.setStorageSync(app.config.tokenKey, res.token);
+                        // 鑾峰彇鐢ㄦ埛淇℃伅
+                        getUserInfo(app, callback, res.token)
+                        // 璁板綍鐧诲綍缁熻
+                        setSessionGuid()
+                      } else {
+                        console.log(res);
+                        callback(false)
+                      }
+                    })
+                  },
+                  fail: (err) => {
+                    console.log(err);
+                    callback(false)
+                  }
+                })
+              }
+            })
+
+          },
+          fail: (err) => {
+            console.log(err);
+            callback(false)
+          }
+        })
+      },
+      fail: (err) => {
+        console.log(err);
+        callback(false)
+      }
+    })
+  }
+}
+
+// 鑾峰彇鐧诲綍鐢ㄦ埛韬唤
+const getUserInfo = (app, callback, token) => {
+  app.MG.identity.getCurrentAppUser().then(res => {
+    // 鐢ㄦ埛淇℃伅浼樺厛绾э細鏁欏笀璁よ瘉 > 寰俊 > 瀛︾敓锛堟敞鍐屾椂榛樿锛�
+    if (res) {
+      let defaultUser = {};
+      let nickNameData = res.infoList.find((item) => item.type == 'nickName')
+      let WeChatInfo = res.infoList.find((item) => item.type === "WeChat");
+      let teacherRole = res.roleLinks.find((item) => item.role.refCode == 'teacher')
+      let teacherInfos = res.infoList.find((item) => item.type == 'teacherInfo')
+      let phoneNumber = res.secretList.find(i => i.type == 'MobilePhone')
+      let emailInfo = res.secretList.find((item) => item.type == 'EMail')
+      if (teacherRole && teacherInfos) {
+        defaultUser = {
+          ...teacherInfos,
+          nickName: nickNameData && JSON.parse(nickNameData.data).nickName ? JSON.parse(nickNameData.data).nickName : WeChatInfo.name,
+          icon: nickNameData && JSON.parse(nickNameData.data).icon ? JSON.parse(nickNameData.data).icon : WeChatInfo.icon,
+          userId: res.userId,
+          role: 'Teacher',
+          roleId: teacherRole.role.id,
+          Email: emailInfo ? emailInfo.credential : JSON.parse(teacherInfos.data).email,
+        }
+      } else if (WeChatInfo) {
+        defaultUser = {
+          nickName: nickNameData && JSON.parse(nickNameData.data).nickName ? JSON.parse(nickNameData.data).nickName : WeChatInfo.name,
+          icon: nickNameData && JSON.parse(nickNameData.data).icon ? JSON.parse(nickNameData.data).icon : WeChatInfo.icon,
+          weChatId: WeChatInfo.id,
+          userId: res.userId,
+        }
+      }
+      if (phoneNumber) {
+        defaultUser.phoneNumber = phoneNumber.credential
+      }
+
+      wx.setStorageSync(app.config.userInfoKey, JSON.stringify(defaultUser));
+    }
+    callback(token);
+  });
 }
\ No newline at end of file

--
Gitblit v1.9.1