YM
2024-03-27 e4f61bb43673d0934b549fc865f228188aa03528
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
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)
        }
    })
}
 
// 获取登录用户身份
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);
    });
}