| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- import { AppStorageKeyCollect, EmitterKeyCollection } from '../constants'
- import { emitter } from '@kit.BasicServicesKit'
- import { YTUserRequest } from '../apis/YTUserRequest'
- import { YTLog } from '../../../../Index'
- /**
- * @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 declare pushToken: string
- private constructor() {
- }
- /**
- * 获取用户单例
- * @returns UserInfo
- */
- static getInstance() {
- if (!UserInfo.instance) {
- UserInfo.instance = new UserInfo()
- }
- return UserInfo.instance
- }
- /**
- * 设置用户信息并且设置登录状态
- * @param _userInfo
- */
- setUserInfoAndLogin(_userInfo: UserInfo) {
- userInfo.isLogin = true
- if (_userInfo.token) {
- userInfo.token = _userInfo.token
- }
- userInfo.memberEmail = _userInfo.memberEmail
- userInfo.memberIcon = _userInfo.memberIcon
- userInfo.memberName = _userInfo.memberName
- userInfo.userId = _userInfo.userId
- userInfo.memberScore = _userInfo.memberScore
- userInfo.aiCount = _userInfo.aiCount
- userInfo.memberPhone = _userInfo.memberPhone
- emitter.emit(EmitterKeyCollection.LOGIN)
- AppStorage.setOrCreate(UserInfo.KEY, userInfo)
- }
- /**
- * @description 登出并清空用户信息
- */
- logout() {
- userInfo.isLogin = false
- userInfo.token = undefined
- userInfo.memberEmail = undefined
- userInfo.memberIcon = undefined
- userInfo.memberName = undefined
- userInfo.userId = undefined
- userInfo.memberScore = undefined
- userInfo.aiCount = undefined
- userInfo.memberPhone = undefined
- AppStorage.setOrCreate(UserInfo.KEY, userInfo)
- emitter.emit(EmitterKeyCollection.LOGOUT)
- AppStorage.setOrCreate(AppStorageKeyCollect.TOKEN, undefined)
- }
- /**
- * 检测用户是否登录
- * @returns boolean
- */
- checkLogin() {
- return this.isLogin
- }
- getToken() {
- return this.token
- }
- setToken(token: string) {
- this.token = token
- AppStorage.setOrCreate<string>(AppStorageKeyCollect.TOKEN, token)
- AppStorage.setOrCreate(UserInfo.KEY, this)
- return this
- }
- getHeadImg(defaultIcon?: ResourceStr) {
- if (this.memberIcon) {
- return this.memberIcon
- }
- if (defaultIcon) {
- return defaultIcon
- }
- return $r('app.media.app_icon')
- }
- setHeadImg(headImg: string) {
- this.memberIcon = headImg
- AppStorage.setOrCreate(UserInfo.KEY, this)
- return this
- }
- getEmail() {
- return this.memberEmail
- }
- setEmail(email: string) {
- this.memberEmail = email
- AppStorage.setOrCreate(UserInfo.KEY, this)
- return this
- }
- getName() {
- // this.userInfo.getName() ?? this.userInfo.getPhoneNumber() ?? this.userInfo.getId()?.toString()
- if (this.memberName) {
- return this.memberName
- } else if (this.memberPhone) {
- return this.memberPhone
- } else if (this.userId) {
- return this.userId?.toString()
- } else {
- if (this.isLogin) {
- return '华为用户'
- }
- return '未登录'
- }
- }
- setName(name: string) {
- this.memberName = name
- AppStorage.setOrCreate(UserInfo.KEY, this)
- return this
- }
- getId() {
- //(this.userInfo.getId()?.toString().padStart(8, '0') ?? '00000000')
- if (this.userId) {
- return this.userId.toString().padStart(8, '0')
- }
- return '00000000'
- }
- setId(id: number) {
- this.userId = id
- AppStorage.setOrCreate(UserInfo.KEY, this)
- return this
- }
- getGoldNum() {
- return this.memberScore
- }
- setGoldNum(goldNum: number) {
- this.memberScore = goldNum
- AppStorage.setOrCreate(UserInfo.KEY, this)
- return this
- }
- getAiNum() {
- return this.aiCount
- }
- setAiNum(aiNum: number) {
- this.aiCount = aiNum
- AppStorage.setOrCreate(UserInfo.KEY, this)
- return this
- }
- getPhoneNumber() {
- return this.memberPhone
- }
- setPhoneNumber(phoneNumber: string) {
- this.memberPhone = phoneNumber
- AppStorage.setOrCreate(UserInfo.KEY, this)
- return this
- }
- setPushToken(pushToken: string) {
- this.pushToken = pushToken
- return this
- }
- pushPushTokenToBackEnd(success: () => void) {
- YTUserRequest.savePushToken(this, (res, err) => {
- if (!err && res) {
- YTLog.info(res)
- success()
- } else {
- YTLog.error(err)
- }
- })
- }
- }
- export const userInfo = UserInfo.getInstance()
|