This commit is contained in:
2026-01-22 18:31:30 +08:00
commit d703ac3574
46 changed files with 7751 additions and 0 deletions

88
src/js/core/user-cache.js Normal file
View File

@@ -0,0 +1,88 @@
/**
* 用户缓存管理
* 负责用户登录状态的本地存储和管理
*/
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);
}
}