From 500078714411487af00161e01bd7e0b5efdc3414 Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期四, 07 八月 2025 13:32:32 +0800
Subject: [PATCH] add:热门景点
---
store/user.ts | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 103 insertions(+), 2 deletions(-)
diff --git a/store/user.ts b/store/user.ts
index c95eed2..bfca100 100644
--- a/store/user.ts
+++ b/store/user.ts
@@ -1,6 +1,107 @@
+// stores/user.ts
import { defineStore } from 'pinia'
import { ref } from 'vue'
+import http from '@/plugins/http.js'
+import storage from '@/plugins/storage'
+import message from '@/plugins/message'
+import { WechatLoginData } from '@/types/index'
+
export const useUserStore = defineStore('user', () => {
-
-})
\ No newline at end of file
+ const hasLogin = ref(false)
+ const isBind = ref(false)
+ const userInfo = ref<any>(null)
+ const address = ref<any>(null)
+
+ async function getCurrentInfo() {
+ const currentInfo = await http.request('get', '/api/current/user', {})
+ if (currentInfo && currentInfo.code == 0) {
+ console.log('当前用户信息', currentInfo)
+ userInfo.value = currentInfo.data // 赋值到 store
+ } else {
+ message.showToast('获取用户信息失败')
+ }
+ }
+
+ async function loginwx(data: WechatLoginData) {
+ const {
+ code,
+ imgurl = '',
+ nickname = '',
+ inviter = '',
+ phoneNumber = '',
+ purePhoneNumber = ''
+ } = data
+
+ const resp = await http.request('post', '/api/login/wechat', {
+ data: {
+ code,
+ imgurl,
+ nickname,
+ inviter,
+ phoneNumber,
+ purePhoneNumber
+ }
+ })
+
+ if (resp && resp.code === 0) {
+
+ isBind.value = true
+ storage.setItem('token', resp.data.access_token || '')
+ hasLogin.value = true
+ await getCurrentInfo()
+ } else {
+ message.showToast('登录失败:' + (resp?.msg || '未知错误'))
+ storage.removeItem('openid')
+ storage.removeItem('tel')
+ storage.removeItem('token')
+ }
+
+ return resp
+ }
+
+
+ function initLoginState() {
+ const token = storage.getItem('token')
+ if (token) {
+ hasLogin.value = true
+
+ const savedUserInfo = storage.getItem('userInfo')
+ if (savedUserInfo) {
+ userInfo.value = savedUserInfo
+ } else {
+ getCurrentInfo()
+ }
+ } else {
+ hasLogin.value = false
+ }
+ }
+
+
+ function updateAddress(addressParam:any) {
+
+ // 合并新信息到 userInfo 中
+ console.log("addressParam",addressParam)
+ address.value = addressParam
+ // 如果你有持久化,这里也同步一下
+ // storage.setItem('userInfo', userInfo.value)
+ }
+ function $reset() {
+ hasLogin.value = false
+ isBind.value = false
+ userInfo.value = null
+ address.value = null
+ }
+
+ return {
+ hasLogin,
+ isBind,
+ userInfo,
+ address,
+ loginwx,
+ getCurrentInfo,
+ initLoginState,
+ updateAddress,
+ $reset,
+ }
+})
--
Gitblit v1.9.3