From fa74612c99459a8b4e94121d2d3bfcc42915208b Mon Sep 17 00:00:00 2001
From: tj <1378534974@qq.com>
Date: 星期二, 27 五月 2025 16:08:20 +0800
Subject: [PATCH] loading,wechatLogin

---
 store/user.ts |   86 ++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 84 insertions(+), 2 deletions(-)

diff --git a/store/user.ts b/store/user.ts
index c95eed2..61a39ea 100644
--- a/store/user.ts
+++ b/store/user.ts
@@ -1,6 +1,88 @@
+// stores/user.ts
 import { defineStore } from 'pinia'
 import { ref } from 'vue'
+import http from '@/plugins/http.js' // 请替换成你实际的 http 封装路径
+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)
+
+    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
+        }
+      }
+      
+
+    return {
+        hasLogin,
+        isBind,
+        userInfo,
+        loginwx,
+        getCurrentInfo,
+        initLoginState,
+    }
+})

--
Gitblit v1.9.3