wujingjing
2025-01-07 0bf4811926ed75d851361bed687336eb5167d856
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
import { accessSessionKey, getSessionKey, getUserNameKey, userNameKey,domainPrefix } from './request';
 
/**
 * window.localStorage 浏览器永久缓存
 * @method set 设置永久缓存
 * @method get 获取永久缓存
 * @method remove 移除永久缓存
 * @method clear 移除全部永久缓存
 */
export const Local = {
    // 查看 v2.4.3版本更新日志
    setKey(key: string) {
        // @ts-ignore
        return `${__NEXT_NAME__}:${domainPrefix}${key}`;
    },
    // 设置永久缓存
    set<T>(key: string, val: T, win = window) {
        win.localStorage.setItem(Local.setKey(key), JSON.stringify(val));
    },
    // 获取永久缓存
    get(key: string, win = window) {
        let json = <string>win.localStorage.getItem(Local.setKey(key));
        return JSON.parse(json);
    },
    // 移除永久缓存
    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 浏览器临时缓存
 * @method set 设置临时缓存
 * @method get 获取临时缓存
 * @method remove 移除临时缓存
 * @method clear 移除全部临时缓存
 */
export const Session = {
    // 设置临时缓存
    set<T>(key: string, val: T) {
        window.sessionStorage.setItem(Local.setKey(key), JSON.stringify(val));
    },
    // 获取临时缓存
    get(key: string) {
        let json = <string>window.sessionStorage.getItem(Local.setKey(key));
        return JSON.parse(json);
    },
    // 移除临时缓存
    remove(key: string) {
        window.sessionStorage.removeItem(Local.setKey(key));
    },
    // 移除全部临时缓存
    clear() {
        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);
    },
};