/** * 用户缓存管理 * 负责用户登录状态的本地存储和管理 */ import { CACHE_CONFIG } from '../config/index.js'; export class UserCache { /** * 保存用户登录状态 * @param {Object} userData - 用户数据 * @param {string} userData.customerid - 客户ID * @param {string} userData.mobile - 手机号 * @param {string} userData.sessionid - 会话ID * @param {string} userData.loginPhone - 登录时使用的手机号 * @param {Object} userData.formData - 表单数据 */ static saveUserSession(userData) { const sessionData = { // 兼容 customerid 和 customerId 两种字段名 customerid: userData.customerid || userData.customerId, mobile: userData.mobile, // 兼容 sessionid 和 sessionId 两种字段名 sessionid: userData.sessionid || userData.sessionId, loginTime: Date.now(), loginPhone: userData.loginPhone || '', // 保存登录时使用的手机号 formData: userData.formData || null // 保存表单数据 }; console.log('[UserCache] 保存登录状态:', sessionData); localStorage.setItem(CACHE_CONFIG.KEYS.USER_SESSION, JSON.stringify(sessionData)); } /** * 获取用户登录状态 * @returns {Object|null} - 用户会话数据,如果不存在或已过期则返回 null */ static getUserSession() { try { const sessionStr = localStorage.getItem(CACHE_CONFIG.KEYS.USER_SESSION); if (!sessionStr) return null; const sessionData = JSON.parse(sessionStr); const now = Date.now(); // 检查缓存是否过期 if (now - sessionData.loginTime > CACHE_CONFIG.USER_SESSION_DURATION) { this.clearUserSession(); return null; } return sessionData; } catch (error) { console.error('[UserCache] 获取用户缓存失败:', error); this.clearUserSession(); return null; } } /** * 清除用户登录状态 */ static clearUserSession() { localStorage.removeItem(CACHE_CONFIG.KEYS.USER_SESSION); console.log('[UserCache] 已清除用户登录状态'); } /** * 检查用户是否已登录 * @returns {boolean} - 是否已登录 */ static isLoggedIn() { const session = this.getUserSession(); return session !== null && (session.sessionid || session.loginPhone); } /** * 获取脱敏的手机号 * @returns {string|null} - 脱敏后的手机号 */ static getMaskedPhone() { const session = this.getUserSession(); if (!session || !session.loginPhone) return null; const phone = session.loginPhone; return phone.substring(0, 3) + '****' + phone.substring(7); } }