From c007150566688c9cda80c7aecd784c9300dfab36 Mon Sep 17 00:00:00 2001 From: yangyin <1850366751@qq.com> Date: 星期三, 20 十一月 2024 14:26:30 +0800 Subject: [PATCH] 提交代码 --- src/utils/storage.ts | 75 +++++++++++++++++++++++++++++++++---- 1 files changed, 67 insertions(+), 8 deletions(-) diff --git a/src/utils/storage.ts b/src/utils/storage.ts index 348f656..bf6222e 100644 --- a/src/utils/storage.ts +++ b/src/utils/storage.ts @@ -1,4 +1,4 @@ - +import { accessSessionKey, getSessionKey, getUserNameKey, userNameKey } from './request'; /** * window.localStorage 娴忚鍣ㄦ案涔呯紦瀛� @@ -14,23 +14,54 @@ return `${__NEXT_NAME__}:${key}`; }, // 璁剧疆姘镐箙缂撳瓨 - set<T>(key: string, val: T) { - window.localStorage.setItem(Local.setKey(key), JSON.stringify(val)); + set<T>(key: string, val: T, win = window) { + win.localStorage.setItem(Local.setKey(key), JSON.stringify(val)); }, // 鑾峰彇姘镐箙缂撳瓨 - get(key: string) { - let json = <string>window.localStorage.getItem(Local.setKey(key)); + get(key: string, win = window) { + let json = <string>win.localStorage.getItem(Local.setKey(key)); return JSON.parse(json); }, // 绉婚櫎姘镐箙缂撳瓨 - remove(key: string) { - window.localStorage.removeItem(Local.setKey(key)); + remove(key: string, win = window) { + win.localStorage.removeItem(Local.setKey(key)); }, // 绉婚櫎鍏ㄩ儴姘镐箙缂撳瓨 clear() { window.localStorage.clear(); }, }; + +//#region ====================== 缂撳瓨甯︽椂闂� ====================== +type CacheValue<T> = { + // 杩囨湡鏃堕棿锛屾椂闂存埑 + expiredTime: number; + value: T; +}; +export const LocalPlus = { + // 璁剧疆 + set<T>(key: string, val: T, expireDay: number) { + const expireMs = expireDay * 24 * 60 * 60 * 1000; + const cacheValue: CacheValue<T> = { + expiredTime: new Date().getTime() + expireMs, + value: val, + }; + Local.set(key, cacheValue); + }, + // 鑾峰彇锛岃繃鏈熷垯娓呴櫎 + get(key: string) { + const cacheValue: CacheValue<any> = Local.get(key); + if(!cacheValue?.expiredTime) return null; + if (new Date().getTime() > cacheValue.expiredTime) { + Local.remove(key); + return null; + } + return cacheValue.value; + }, +}; + + +//#endregion /** * window.sessionStorage 娴忚鍣ㄤ复鏃剁紦瀛� @@ -42,7 +73,6 @@ export const Session = { // 璁剧疆涓存椂缂撳瓨 set<T>(key: string, val: T) { - window.sessionStorage.setItem(Local.setKey(key), JSON.stringify(val)); }, // 鑾峰彇涓存椂缂撳瓨 @@ -59,3 +89,32 @@ window.sessionStorage.clear(); }, }; + +export const WinLoginInfo = { + set(session: string, name: string, win: any = window) { + const sessionKey = getSessionKey(win); + const userNameKey = getUserNameKey(win); + Local.set(sessionKey, session, win); + Local.set(userNameKey, name, win); + }, + remove(win: any = window) { + const sessionKey = getSessionKey(win); + const userNameKey = getUserNameKey(win); + Local.remove(sessionKey, win); + Local.remove(userNameKey, win); + }, +}; + +export const LoginInfo = { + set(session: string, name: string) { + WinLoginInfo.set(session, name, window); + for (let i = 0; i < window.frames.length; i++) { + const win = window.frames[i] as any; + WinLoginInfo.set(session, name, win); + } + }, + + remove() { + WinLoginInfo.remove(window); + }, +}; -- Gitblit v1.9.3