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 } 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') 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, } } 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); }); }