2024-12-31 10:05:55 +08:00
|
|
|
import { defineStore } from 'pinia'
|
|
|
|
|
import { ref } from 'vue'
|
2025-01-02 19:26:12 +08:00
|
|
|
import { getUserInfoApi, UserInfo } from '@/service/user'
|
|
|
|
|
import { Result } from '@/constants/result'
|
2024-12-31 10:05:55 +08:00
|
|
|
|
|
|
|
|
export const useUserStore = defineStore(
|
|
|
|
|
'user',
|
|
|
|
|
() => {
|
2025-01-02 19:26:12 +08:00
|
|
|
const userInfo = ref<UserInfo>(null)
|
2025-01-03 10:32:00 +08:00
|
|
|
const loginStatus = ref<boolean>(false)
|
2024-12-31 10:05:55 +08:00
|
|
|
|
2025-01-02 19:26:12 +08:00
|
|
|
const getUserInfo = async () => {
|
2025-01-03 10:32:00 +08:00
|
|
|
try {
|
|
|
|
|
const result = await getUserInfoApi()
|
|
|
|
|
if (result.errorCode === Result.Success.code) {
|
|
|
|
|
userInfo.value = result.data
|
|
|
|
|
loginStatus.value = true
|
|
|
|
|
uni.setStorageSync('userInfo', userInfo.value)
|
|
|
|
|
return new Result(result.errorCode, userInfo.value, result.errorMsg)
|
|
|
|
|
}
|
|
|
|
|
loginStatus.value = false
|
|
|
|
|
return Result.Fail
|
|
|
|
|
} catch (error) {
|
2025-01-02 19:26:12 +08:00
|
|
|
const userInfoStorage = uni.getStorageSync('userInfo')
|
|
|
|
|
if (userInfoStorage) {
|
|
|
|
|
userInfo.value = userInfoStorage
|
|
|
|
|
loginStatus.value = true
|
|
|
|
|
return new Result(Result.Success.code, userInfo.value, Result.Success.message)
|
|
|
|
|
} else {
|
|
|
|
|
loginStatus.value = false
|
|
|
|
|
return Result.Fail
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-12-31 10:05:55 +08:00
|
|
|
}
|
|
|
|
|
|
2025-01-03 10:32:00 +08:00
|
|
|
const logout = () => {
|
|
|
|
|
userInfo.value = null
|
|
|
|
|
loginStatus.value = false
|
|
|
|
|
uni.removeStorageSync('userInfo')
|
|
|
|
|
uni.removeStorageSync('token')
|
|
|
|
|
}
|
|
|
|
|
|
2024-12-31 10:05:55 +08:00
|
|
|
return {
|
|
|
|
|
userInfo,
|
2025-01-03 10:32:00 +08:00
|
|
|
loginStatus,
|
|
|
|
|
logout,
|
2025-01-02 19:26:12 +08:00
|
|
|
getUserInfo
|
2024-12-31 10:05:55 +08:00
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-12-31 10:19:20 +08:00
|
|
|
persist: true
|
|
|
|
|
}
|
2024-12-31 10:05:55 +08:00
|
|
|
)
|