UserInfo.ets 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. import { emitter } from '@kit.BasicServicesKit'
  2. import { AppStorageKeyCollect } from '../constants'
  3. /**
  4. * @description 用户信息类,可结合AppStorage使用,实现响应式更换用户信息,使用时替换为后端传回的用户属性即可
  5. */
  6. export class UserInfo {
  7. static KEY: string = 'UserInfo'
  8. private declare static instance: UserInfo
  9. private isLogin: boolean = false
  10. private token?: string
  11. //此注释下的属性可按需更改
  12. private memberName?: string
  13. private memberPhone?: string
  14. private memberEmail?: string
  15. private memberIcon?: string
  16. private aiCount?: number
  17. private userId?: number
  18. private memberScore?: number
  19. private constructor() {
  20. }
  21. /**
  22. * 获取用户单例
  23. * @returns UserInfo
  24. */
  25. static getInstance() {
  26. if (!UserInfo.instance) {
  27. UserInfo.instance = new UserInfo()
  28. }
  29. return UserInfo.instance
  30. }
  31. /**
  32. * 设置用户信息并且设置登录状态
  33. * @param _userInfo
  34. */
  35. setUserInfoAndLogin(_userInfo: UserInfo) {
  36. this.isLogin = true
  37. if (_userInfo.token) {
  38. userInfo.token = _userInfo.token
  39. }
  40. this.memberEmail = _userInfo.memberEmail
  41. this.memberIcon = _userInfo.memberIcon
  42. this.memberName = _userInfo.memberName
  43. this.userId = _userInfo.userId
  44. this.memberScore = _userInfo.memberScore
  45. this.aiCount = _userInfo.aiCount
  46. this.memberPhone = _userInfo.memberPhone
  47. emitter.emit('refreshList')
  48. AppStorage.setOrCreate(UserInfo.KEY, this)
  49. }
  50. /**
  51. * @description 登出并清空用户信息
  52. */
  53. logout() {
  54. this.isLogin = false
  55. this.token = undefined
  56. this.memberEmail = undefined
  57. this.memberIcon = undefined
  58. this.memberName = undefined
  59. this.userId = undefined
  60. this.memberScore = undefined
  61. this.aiCount = undefined
  62. this.memberPhone = undefined
  63. AppStorage.setOrCreate(UserInfo.KEY, this)
  64. AppStorage.setOrCreate(AppStorageKeyCollect.TOKEN, undefined)
  65. }
  66. /**
  67. * 检测用户是否登录
  68. * @returns boolean
  69. */
  70. checkLogin() {
  71. return this.isLogin
  72. }
  73. getToken() {
  74. return this.token
  75. }
  76. setToken(token: string) {
  77. this.token = token
  78. AppStorage.setOrCreate<string>(AppStorageKeyCollect.TOKEN, token)
  79. AppStorage.setOrCreate(UserInfo.KEY, this)
  80. return this
  81. }
  82. getHeadImg() {
  83. if (this.memberIcon) {
  84. return this.memberIcon
  85. }
  86. return $r('app.media.app_icon')
  87. }
  88. setHeadImg(headImg: string) {
  89. this.memberIcon = headImg
  90. AppStorage.setOrCreate(UserInfo.KEY, this)
  91. return this
  92. }
  93. getEmail() {
  94. return this.memberEmail
  95. }
  96. setEmail(email: string) {
  97. this.memberEmail = email
  98. AppStorage.setOrCreate(UserInfo.KEY, this)
  99. return this
  100. }
  101. getName() {
  102. // this.userInfo.getName() ?? this.userInfo.getPhoneNumber() ?? this.userInfo.getId()?.toString()
  103. if (this.memberName) {
  104. return this.memberName
  105. } else if (this.memberPhone) {
  106. return this.memberPhone
  107. } else if (this.userId) {
  108. return this.userId?.toString()
  109. } else {
  110. if (this.isLogin) {
  111. return '华为用户'
  112. }
  113. return '未登录'
  114. }
  115. }
  116. setName(name: string) {
  117. this.memberName = name
  118. AppStorage.setOrCreate(UserInfo.KEY, this)
  119. return this
  120. }
  121. getId() {
  122. //(this.userInfo.getId()?.toString().padStart(8, '0') ?? '00000000')
  123. if (this.userId) {
  124. return this.userId.toString().padStart(8, '0')
  125. }
  126. return '00000000'
  127. }
  128. setId(id: number) {
  129. this.userId = id
  130. AppStorage.setOrCreate(UserInfo.KEY, this)
  131. return this
  132. }
  133. getGoldNum() {
  134. return this.memberScore
  135. }
  136. setGoldNum(goldNum: number) {
  137. this.memberScore = goldNum
  138. AppStorage.setOrCreate(UserInfo.KEY, this)
  139. return this
  140. }
  141. getAiNum() {
  142. return this.aiCount
  143. }
  144. setAiNum(aiNum: number) {
  145. this.aiCount = aiNum
  146. AppStorage.setOrCreate(UserInfo.KEY, this)
  147. return this
  148. }
  149. getPhoneNumber() {
  150. return this.memberPhone
  151. }
  152. setPhoneNumber(phoneNumber: string) {
  153. this.memberPhone = phoneNumber
  154. AppStorage.setOrCreate(UserInfo.KEY, this)
  155. return this
  156. }
  157. }
  158. export const userInfo = UserInfo.getInstance()