实现租客成长等级并优化展示

This commit is contained in:
yml2213
2026-07-26 11:25:25 +08:00
parent 756fa342cb
commit 321f0781cf
27 changed files with 948 additions and 16 deletions
+21
View File
@@ -9,6 +9,16 @@ import {
} from '@/shared/utils/authStorage'
import { loginWithPassword, registerWithPassword } from '@/features/auth/api/auth'
function renterGrowthLevelName(level: string) {
const map: Record<string, string> = {
normal: '普通',
platinum: '铂金',
diamond: '钻石',
peak: '巅峰',
}
return map[level] || '普通'
}
export const useSessionStore = defineStore('session', {
state: () => ({
token: getAccessToken('user'),
@@ -18,6 +28,8 @@ export const useSessionStore = defineStore('session', {
nickname: localStorage.getItem('nickname') || '',
avatarUrl: localStorage.getItem('avatar_url') || '',
realnameStatus: localStorage.getItem('realname_status') || 'unknown',
renterGrowthPoints: Number(localStorage.getItem('renter_growth_points') || 0),
renterGrowthLevel: localStorage.getItem('renter_growth_level') || 'normal',
_loadingMe: false, // 防止重复调用
}),
getters: {
@@ -25,6 +37,7 @@ export const useSessionStore = defineStore('session', {
displayName: state =>
state.nickname || (state.phone ? `用户${state.phone.slice(-6)}` : `用户${state.userId || 0}`),
avatarText: state => (state.nickname || state.phone || 'U').slice(0, 1),
renterGrowthLevelName: state => renterGrowthLevelName(state.renterGrowthLevel),
},
actions: {
async login(phone: string, code: string) {
@@ -78,6 +91,8 @@ export const useSessionStore = defineStore('session', {
this.nickname = ''
this.avatarUrl = ''
this.realnameStatus = 'unknown'
this.renterGrowthPoints = 0
this.renterGrowthLevel = 'normal'
clearAuthStorage('user')
},
syncFromStorage() {
@@ -88,6 +103,8 @@ export const useSessionStore = defineStore('session', {
this.nickname = localStorage.getItem('nickname') || ''
this.avatarUrl = localStorage.getItem('avatar_url') || ''
this.realnameStatus = localStorage.getItem('realname_status') || 'unknown'
this.renterGrowthPoints = Number(localStorage.getItem('renter_growth_points') || 0)
this.renterGrowthLevel = localStorage.getItem('renter_growth_level') || 'normal'
},
applySession(user: AuthUser, accessToken: string, refreshToken: string) {
this.token = accessToken
@@ -111,6 +128,10 @@ export const useSessionStore = defineStore('session', {
localStorage.setItem('avatar_url', user.avatar_url)
this.realnameStatus = user.realname_status
localStorage.setItem('realname_status', user.realname_status)
this.renterGrowthPoints = Number(user.renter_growth_points || 0)
localStorage.setItem('renter_growth_points', String(this.renterGrowthPoints))
this.renterGrowthLevel = user.renter_growth_level || 'normal'
localStorage.setItem('renter_growth_level', this.renterGrowthLevel)
},
},
})