/** * 用户信息管理工具 * 统一处理用户信息的存储和读取,确保数据一致性 */ /** * 保存用户信息 * @param {Object} userInfo - 用户信息对象 */ function saveUserInfo(userInfo) { if (!userInfo) { console.error('保存用户信息失败:userInfo为空') return false } try { // 标准化用户信息格式 const standardizedUserInfo = { // 统一使用 nickname 和 avatar 作为主字段 nickname: userInfo.nickname || userInfo.nickName || '同学', avatar: userInfo.avatar || userInfo.avatarUrl || '/images/avatar-default.png', // 保留原始字段以兼容旧代码 nickName: userInfo.nickname || userInfo.nickName || '同学', avatarUrl: userInfo.avatar || userInfo.avatarUrl || '/images/avatar-default.png', // 其他字段 gender: userInfo.gender || 0, country: userInfo.country || '', province: userInfo.province || '', city: userInfo.city || '', isLogin: userInfo.isLogin || false, loginTime: userInfo.loginTime || new Date().getTime(), // 保留其他可能的自定义字段 ...userInfo } // 保存到本地存储 wx.setStorageSync('userInfo', standardizedUserInfo) console.log('用户信息保存成功:', standardizedUserInfo) return true } catch (error) { console.error('保存用户信息失败:', error) return false } } /** * 获取用户信息 * @returns {Object|null} 用户信息对象,如果不存在则返回null */ function getUserInfo() { try { let userInfo = wx.getStorageSync('userInfo') if (userInfo) { // 标准化数据结构 const standardizedUserInfo = { nickname: userInfo.nickname || userInfo.nickName || '同学', avatar: userInfo.avatar || userInfo.avatarUrl || '/images/avatar-default.png', nickName: userInfo.nickname || userInfo.nickName || '同学', avatarUrl: userInfo.avatar || userInfo.avatarUrl || '/images/avatar-default.png', gender: userInfo.gender || 0, country: userInfo.country || '', province: userInfo.province || '', city: userInfo.city || '', isLogin: userInfo.isLogin || false, loginTime: userInfo.loginTime || 0, ...userInfo } // 如果发现数据结构不一致,自动更新 if (!userInfo.nickname || !userInfo.avatar) { saveUserInfo(standardizedUserInfo) } return standardizedUserInfo } return null } catch (error) { console.error('获取用户信息失败:', error) return null } } /** * 更新用户信息(部分更新) * @param {Object} updates - 要更新的字段 */ function updateUserInfo(updates) { if (!updates) { console.error('更新用户信息失败:updates为空') return false } try { const currentUserInfo = getUserInfo() || {} const updatedUserInfo = { ...currentUserInfo, ...updates } // 确保统一字段 if (updates.nickname) { updatedUserInfo.nickName = updates.nickname } if (updates.avatar) { updatedUserInfo.avatarUrl = updates.avatar } if (updates.nickName) { updatedUserInfo.nickname = updates.nickName } if (updates.avatarUrl) { updatedUserInfo.avatar = updates.avatarUrl } return saveUserInfo(updatedUserInfo) } catch (error) { console.error('更新用户信息失败:', error) return false } } /** * 更新用户昵称 * @param {String} nickname - 新昵称 */ function updateNickname(nickname) { if (!nickname || !nickname.trim()) { console.error('昵称不能为空') return false } return updateUserInfo({ nickname: nickname.trim(), nickName: nickname.trim() }) } /** * 更新用户头像 * @param {String} avatar - 新头像路径 */ function updateAvatar(avatar) { if (!avatar) { console.error('头像路径不能为空') return false } return updateUserInfo({ avatar: avatar, avatarUrl: avatar }) } /** * 清除用户信息(退出登录) */ function clearUserInfo() { try { // 保留昵称和头像,仅标记为未登录 const currentUserInfo = getUserInfo() if (currentUserInfo) { const logoutUserInfo = { nickname: currentUserInfo.nickname, avatar: currentUserInfo.avatar, isLogin: false } saveUserInfo(logoutUserInfo) } else { wx.removeStorageSync('userInfo') } console.log('用户信息已清除') return true } catch (error) { console.error('清除用户信息失败:', error) return false } } /** * 检查用户是否已登录 * @returns {Boolean} 是否已登录 */ function isUserLogin() { const userInfo = getUserInfo() return userInfo && userInfo.isLogin === true } /** * 获取用户昵称 * @returns {String} 用户昵称 */ function getNickname() { const userInfo = getUserInfo() return userInfo ? userInfo.nickname : '同学' } /** * 获取用户头像 * @returns {String} 用户头像路径 */ function getAvatar() { const userInfo = getUserInfo() return userInfo ? userInfo.avatar : '/images/avatar-default.png' } /** * 初始化默认用户信息 */ function initDefaultUserInfo() { const userInfo = getUserInfo() if (!userInfo) { const defaultUser = { nickname: '同学', avatar: '/images/avatar-default.png', isLogin: false } saveUserInfo(defaultUser) console.log('初始化默认用户信息') } } module.exports = { saveUserInfo, getUserInfo, updateUserInfo, updateNickname, updateAvatar, clearUserInfo, isUserLogin, getNickname, getAvatar, initDefaultUserInfo }