wangzhibo
2025-10-23 cad64c1de2c45856b0774933c5801b05b64984e8
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 })
    }
 
  }
})