import { emitter } from '@kit.BasicServicesKit' import { AppStorageKeyCollect } from '../constants' /** * @description 用户信息类,可结合AppStorage使用,实现响应式更换用户信息,使用时替换为后端传回的用户属性即可 */ export class UserInfo { static KEY: string = 'UserInfo' private declare static instance: UserInfo private isLogin: boolean = false private token?: string //此注释下的属性可按需更改 private memberName?: string private memberPhone?: string private memberEmail?: string private memberIcon?: string private aiCount?: number private userId?: number private memberScore?: number private constructor() { } /** * 获取用户单例 * @returns UserInfo */ static getInstance() { if (!UserInfo.instance) { UserInfo.instance = new UserInfo() } return UserInfo.instance } /** * 设置用户信息并且设置登录状态 * @param _userInfo */ setUserInfoAndLogin(_userInfo: UserInfo) { UserInfo.getInstance().isLogin = true if (_userInfo.token) { UserInfo.getInstance().token = _userInfo.token } UserInfo.getInstance().memberEmail = _userInfo.memberEmail UserInfo.getInstance().memberIcon = _userInfo.memberIcon UserInfo.getInstance().memberName = _userInfo.memberName UserInfo.getInstance().userId = _userInfo.userId UserInfo.getInstance().memberScore = _userInfo.memberScore UserInfo.getInstance().aiCount = _userInfo.aiCount UserInfo.getInstance().memberPhone = _userInfo.memberPhone emitter.emit('refreshList') AppStorage.setOrCreate(UserInfo.KEY, UserInfo.getInstance()) } /** * @description 登出并清空用户信息 */ logout() { UserInfo.getInstance().isLogin = false UserInfo.getInstance().token = undefined UserInfo.getInstance().memberEmail = undefined UserInfo.getInstance().memberIcon = undefined UserInfo.getInstance().memberName = undefined UserInfo.getInstance().userId = undefined UserInfo.getInstance().memberScore = undefined UserInfo.getInstance().aiCount = undefined UserInfo.getInstance().memberPhone = undefined AppStorage.setOrCreate(UserInfo.KEY, UserInfo.getInstance()) AppStorage.setOrCreate(AppStorageKeyCollect.TOKEN, undefined) } /** * 检测用户是否登录 * @returns boolean */ checkLogin() { return UserInfo.getInstance().isLogin } getToken() { return UserInfo.getInstance().token } setToken(token: string) { UserInfo.getInstance().token = token AppStorage.setOrCreate(AppStorageKeyCollect.TOKEN, token) AppStorage.setOrCreate(UserInfo.KEY, UserInfo.getInstance()) } getHeadImg() { return UserInfo.getInstance().memberIcon } setHeadImg(headImg: string) { UserInfo.getInstance().memberIcon = headImg AppStorage.setOrCreate(UserInfo.KEY, UserInfo.getInstance()) } getEmail() { return UserInfo.getInstance().memberEmail } setEmail(email: string) { UserInfo.getInstance().memberEmail = email AppStorage.setOrCreate(UserInfo.KEY, UserInfo.getInstance()) } getName() { return UserInfo.getInstance().memberName } setName(name: string) { UserInfo.getInstance().memberName = name AppStorage.setOrCreate(UserInfo.KEY, UserInfo.getInstance()) } getId() { return UserInfo.getInstance().userId } setId(id: number) { UserInfo.getInstance().userId = id AppStorage.setOrCreate(UserInfo.KEY, UserInfo.getInstance()) } getGoldNum() { return UserInfo.getInstance().memberScore } setGoldNum(goldNum: number) { UserInfo.getInstance().memberScore = goldNum AppStorage.setOrCreate(UserInfo.KEY, UserInfo.getInstance()) } getAiNum() { return UserInfo.getInstance().aiCount } setAiNum(aiNum: number) { UserInfo.getInstance().aiCount = aiNum AppStorage.setOrCreate(UserInfo.KEY, UserInfo.getInstance()) } getPhoneNumber() { return UserInfo.getInstance().memberPhone } setPhoneNumber(phoneNumber: string) { UserInfo.getInstance().memberPhone = phoneNumber AppStorage.setOrCreate(UserInfo.KEY, UserInfo.getInstance()) } }