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