1
闫增涛
2024-03-27 b2a6887c94cc7887b03ba1cce578e3fc59a62259
assets/js/login.js
@@ -1,63 +1,103 @@
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) => {
  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) {
              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
              }
              debugger
              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 WeChatInfo = res.infoList.find((item) => item.type === "WeChat");
      let phoneNumber = res.secretList.find(i => i.type == 'MobilePhone')
      if (WeChatInfo) {
        defaultUser = {
          nickName: WeChatInfo.name,
          avatarUrl: WeChatInfo.icon,
          weChatId: WeChatInfo.id
        }
      }
      if (phoneNumber) {
        defaultUser.phoneNumber = phoneNumber.credential
      }
      wx.setStorageSync(app.config.userInfoKey, JSON.stringify(defaultUser));
    }
    callback(token);
  });
}