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
| import { defineStore } from 'pinia'
| import { generateUUIDv4 } from '@/utils/uuid'
|
| import { apiService } from '@/apiservice/apiService'
|
| export const useUserStore = defineStore('user', {
| state: () => ({
| id:'',
| uuid: '',
| createdAt: '',
| username: '',
| avatarUrl:'',
| sex: '', // 'male' / 'female' / 'unknown'
| phone: ''
| }),
| actions: {
| async initUser() {
| // 尝试读取本地 user_info
| const info = uni.getStorageSync('user_info')
| if (info && info.uuid) {
| // 已存在,直接加载
| Object.assign(this, info)
| } else {
| const randomUUID = generateUUIDv4()
| const createdAt = new Date().toISOString()
| const emptyUser = {
| id:'',
| uuid:randomUUID,
| createdAt:createdAt,
| username: '',
| avatarUrl: '',
| sex: '',
| phone: ''
| }
| try {
| const res = await apiService.touristAdd(emptyUser)
| if (res.code === 1000) {
| console.log('游客添加成功:', res.data?.id)
| emptyUser.id = res.data?.id
| } else {
| console.warn('游客添加失败:', res.message)
| }
| } catch (err) {
| console.error('游客上报错误:', err)
| }
| Object.assign(this, emptyUser)
| console.log(emptyUser)
| uni.setStorageSync('user_info', emptyUser)
| }
| },
| saveUserInfo({username,avatarUrl, sex, phone}) {
| // 更新 store
| const updated = {
| username: username ?? this.username,
| avatarUrl: avatarUrl ?? this.avatarUrl,
| sex: sex ?? this.sex,
| phone: phone ?? this.phone
| }
| Object.assign(this, updated)
|
| // 同步 storage
| uni.setStorageSync('user_info', { ...this.$state })
| }
|
| }
| })
|
|