/** * 应用入口 */ const envConfig = require('./env.config.js'); const storage = require('./utils/storage.js'); App({ globalData: { // 用户信息 userInfo: null, userId: null, token: null, // 环境配置 envConfig: envConfig, // 当前连接的设备 currentDevice: null, // MQTT 客户端 mqttClient: null, }, onLaunch() { console.log('[App] onLaunch'); // 检查登录态 this.checkLoginStatus(); }, /** * 检查登录状态 * 登录态只依赖 userId(登录一次即可,业务流程不使用 token) */ checkLoginStatus() { const userInfo = storage.getUserInfo(); if (userInfo && userInfo.userId) { this.globalData.userInfo = userInfo; this.globalData.userId = userInfo.userId; // token 可选保存(仅登录流程使用,业务不依赖) this.globalData.token = storage.getToken() || null; console.log('[App] 已登录, userId:', userInfo.userId); } else { console.log('[App] 未登录'); } }, /** * 设置登录信息 * @param {Object} data - 登录返回数据 { token, user } */ setLoginInfo(data) { const userInfo = { userId: data.userId, userName: data.userName, phonenumber: data.phonenumber, avatar: data.avatar, }; this.globalData.token = data.token; this.globalData.userInfo = userInfo; this.globalData.userId = data.userId; // 持久化存储 storage.setToken(data.token); storage.setUserInfo(userInfo); console.log('[App] 登录成功, userId:', data.userId); }, /** * 清除登录信息 */ clearLoginInfo() { this.globalData.token = null; this.globalData.userInfo = null; this.globalData.userId = null; storage.removeToken(); storage.removeUserInfo(); console.log('[App] 已退出登录'); }, /** * 检查是否已登录 * 只检查 userId,token 过期不影响登录态(登录一次即可) * @returns {boolean} */ isLoggedIn() { return !!this.globalData.userId; }, });