yiming
2024-06-21 f5932f85898de7284c9f16d314b4a1c572b31c73
assets/js/login.js
@@ -1,103 +1,127 @@
import { setSessionGuid } from "./userAction"
import {
  setSessionGuid
} from "./userAction"
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);
                                 // 记录登录统计
                                 setSessionGuid()
                                 // 获取用户信息
                                 getUserInfo(app, 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)
      }
   })
  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 WeChatInfo = res.infoList.find((item) => item.type === "WeChat");
         let phoneNumber = res.secretList.find(i => i.type == 'MobilePhone')
  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
      }
         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);
   });
      wx.setStorageSync(app.config.userInfoKey, JSON.stringify(defaultUser));
    }
    callback(token);
  });
}