|
@@ -1,40 +1,30 @@
|
|
|
-import type { IUserInfoVo } from '@/api/types/login'
|
|
|
|
|
|
|
+import type { IUserInfoRes } from '@/api/types/login'
|
|
|
import { defineStore } from 'pinia'
|
|
import { defineStore } from 'pinia'
|
|
|
import { ref } from 'vue'
|
|
import { ref } from 'vue'
|
|
|
import {
|
|
import {
|
|
|
- getUserInfo as _getUserInfo,
|
|
|
|
|
- login as _login,
|
|
|
|
|
- logout as _logout,
|
|
|
|
|
- refreshToken as _refreshToken,
|
|
|
|
|
- wxLogin as _wxLogin,
|
|
|
|
|
- getWxCode,
|
|
|
|
|
|
|
+ getUserInfo,
|
|
|
} from '@/api/login'
|
|
} from '@/api/login'
|
|
|
|
|
|
|
|
// 初始化状态
|
|
// 初始化状态
|
|
|
-const userInfoState: IUserInfoVo = {
|
|
|
|
|
- id: 0,
|
|
|
|
|
|
|
+const userInfoState: IUserInfoRes = {
|
|
|
|
|
+ userId: 0,
|
|
|
username: '',
|
|
username: '',
|
|
|
|
|
+ nickname: '',
|
|
|
avatar: '/static/images/default-avatar.png',
|
|
avatar: '/static/images/default-avatar.png',
|
|
|
- token: '',
|
|
|
|
|
- refreshToken: '',
|
|
|
|
|
- refreshExpire: 0,
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
export const useUserStore = defineStore(
|
|
export const useUserStore = defineStore(
|
|
|
'user',
|
|
'user',
|
|
|
() => {
|
|
() => {
|
|
|
// 定义用户信息
|
|
// 定义用户信息
|
|
|
- const userInfo = ref<IUserInfoVo>({ ...userInfoState })
|
|
|
|
|
|
|
+ const userInfo = ref<IUserInfoRes>({ ...userInfoState })
|
|
|
// 设置用户信息
|
|
// 设置用户信息
|
|
|
- const setUserInfo = (val: IUserInfoVo) => {
|
|
|
|
|
|
|
+ const setUserInfo = (val: IUserInfoRes) => {
|
|
|
console.log('设置用户信息', val)
|
|
console.log('设置用户信息', val)
|
|
|
// 若头像为空 则使用默认头像
|
|
// 若头像为空 则使用默认头像
|
|
|
if (!val.avatar) {
|
|
if (!val.avatar) {
|
|
|
val.avatar = userInfoState.avatar
|
|
val.avatar = userInfoState.avatar
|
|
|
}
|
|
}
|
|
|
- else {
|
|
|
|
|
- val.avatar = 'https://oss.laf.run/ukw0y1-site/avatar.jpg?feige'
|
|
|
|
|
- }
|
|
|
|
|
userInfo.value = val
|
|
userInfo.value = val
|
|
|
}
|
|
}
|
|
|
const setUserAvatar = (avatar: string) => {
|
|
const setUserAvatar = (avatar: string) => {
|
|
@@ -51,79 +41,18 @@ export const useUserStore = defineStore(
|
|
|
/**
|
|
/**
|
|
|
* 获取用户信息
|
|
* 获取用户信息
|
|
|
*/
|
|
*/
|
|
|
- const getUserInfo = async () => {
|
|
|
|
|
- const res = await _getUserInfo()
|
|
|
|
|
- const userInfo = res.data
|
|
|
|
|
- setUserInfo(userInfo)
|
|
|
|
|
- // TODO 这里可以增加获取用户路由的方法 根据用户的角色动态生成路由
|
|
|
|
|
- return res
|
|
|
|
|
- }
|
|
|
|
|
- /**
|
|
|
|
|
- * 用户登录
|
|
|
|
|
- * @param credentials 登录参数
|
|
|
|
|
- * @returns R<IUserLogin>
|
|
|
|
|
- */
|
|
|
|
|
- const login = async (credentials: {
|
|
|
|
|
- username: string
|
|
|
|
|
- password: string
|
|
|
|
|
- code: string
|
|
|
|
|
- uuid: string
|
|
|
|
|
- }) => {
|
|
|
|
|
- const res = await _login(credentials)
|
|
|
|
|
- console.log('登录信息', res)
|
|
|
|
|
- uni.showToast({
|
|
|
|
|
- title: '登录成功',
|
|
|
|
|
- icon: 'success',
|
|
|
|
|
- })
|
|
|
|
|
- await getUserInfo()
|
|
|
|
|
- return res
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * 刷新token
|
|
|
|
|
- */
|
|
|
|
|
- const refreshToken = async () => {
|
|
|
|
|
- const res = await _refreshToken(userInfo.value.refreshToken)
|
|
|
|
|
- setUserInfo({
|
|
|
|
|
- ...userInfo.value,
|
|
|
|
|
- token: res.data.token,
|
|
|
|
|
- refreshToken: res.data.refreshToken,
|
|
|
|
|
- refreshExpire: res.data.refreshExpire,
|
|
|
|
|
- })
|
|
|
|
|
- await getUserInfo()
|
|
|
|
|
- return res
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * 退出登录 并 删除用户信息
|
|
|
|
|
- */
|
|
|
|
|
- const logout = async () => {
|
|
|
|
|
- _logout()
|
|
|
|
|
- removeUserInfo()
|
|
|
|
|
- }
|
|
|
|
|
- /**
|
|
|
|
|
- * 微信登录
|
|
|
|
|
- */
|
|
|
|
|
- const wxLogin = async () => {
|
|
|
|
|
- // 获取微信小程序登录的code
|
|
|
|
|
- const data = await getWxCode()
|
|
|
|
|
- console.log('微信登录code', data)
|
|
|
|
|
-
|
|
|
|
|
- const res = await _wxLogin(data)
|
|
|
|
|
- await getUserInfo()
|
|
|
|
|
|
|
+ const fetchUserInfo = async () => {
|
|
|
|
|
+ const res = await getUserInfo()
|
|
|
|
|
+ setUserInfo(res.data)
|
|
|
return res
|
|
return res
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return {
|
|
return {
|
|
|
userInfo,
|
|
userInfo,
|
|
|
- login,
|
|
|
|
|
- wxLogin,
|
|
|
|
|
|
|
+ removeUserInfo,
|
|
|
|
|
+ fetchUserInfo,
|
|
|
setUserInfo,
|
|
setUserInfo,
|
|
|
- getUserInfo,
|
|
|
|
|
setUserAvatar,
|
|
setUserAvatar,
|
|
|
- logout,
|
|
|
|
|
- hasLogin: computed(() => !!userInfo.value.token),
|
|
|
|
|
- refreshToken,
|
|
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|