mall-app-t/peach/store/user.js

125 lines
3.3 KiB
JavaScript
Raw Normal View History

2024-05-29 17:07:37 +08:00
import { ref } from 'vue'
import { defineStore } from 'pinia'
import $share from '@/peach/platform/share'
import $router from '@/peach/router'
import UserUtil from '@/peach/api/member/user'
import { isEmpty, cloneDeep, clone } from 'lodash'
2024-05-29 00:54:59 +08:00
// 默认用户信息
const defaultUserInfo = {
2024-05-29 17:07:37 +08:00
avatar: '', // 头像
nickname: '', // 昵称
mobile: '', // 手机号
point: 0, // 积分
particulars: null,
}
2024-05-29 00:54:59 +08:00
// 默认钱包信息
const defaultWallet = {
2024-05-29 17:07:37 +08:00
balance: 0, // 余额
totalExpense: 0, // 总消费
totalRecharge: 0, // 总充值
}
2024-05-29 00:54:59 +08:00
// 默认订单信息
const defaultNumData = {
2024-05-29 17:07:37 +08:00
unusedCouponCount: 0,
orderCount: {
allCount: 0,
unpaidCount: 0,
undeliveredCount: 0,
deliveredCount: 0,
uncommentedCount: 0,
afterSaleCount: 0,
},
}
2024-05-29 00:54:59 +08:00
const useUserStore = defineStore(
2024-05-29 17:07:37 +08:00
'user',
() => {
const userInfo = ref(cloneDeep(defaultUserInfo))
const userWallet = ref(clone(defaultWallet))
const userNumData = ref(cloneDeep(defaultNumData))
const isLogin = ref(!!uni.getStorageSync('token'))
const lastUpdateTime = ref(0)
const lastRoutePage = ref(null)
2024-05-29 00:54:59 +08:00
2024-05-29 17:07:37 +08:00
async function getUserInfo() {
let res = await UserUtil.getUserInfo()
userInfo.value = res.data
}
2024-05-29 00:54:59 +08:00
2024-05-29 17:07:37 +08:00
async function getWallet() {
let res = await UserUtil.getWalletInfo()
userWallet.value = res.data
}
2024-05-29 00:54:59 +08:00
2024-05-29 17:07:37 +08:00
function getNumData() {}
2024-05-29 00:54:59 +08:00
2024-05-29 17:07:37 +08:00
function setToken(token, refreshToken) {
if (token === '') {
isLogin.value = false
uni.removeStorageSync('token')
uni.removeStorageSync('refresh-token')
} else {
isLogin.value = true
uni.setStorageSync('token', token)
uni.setStorageSync('refresh-token', refreshToken)
// 成功后处理
loginAfter()
}
return isLogin.value
}
2024-05-22 15:42:13 +08:00
2024-05-29 17:07:37 +08:00
function resetUserData() {
setToken('')
userInfo.value = cloneDeep(defaultUserInfo)
userWallet.value = clone(defaultWallet)
userNumData.value = cloneDeep(defaultNumData)
}
2024-05-22 15:42:13 +08:00
2024-05-29 17:07:37 +08:00
async function updateUserData() {
const nowTime = new Date().getTime()
if (lastUpdateTime.value + 5000 > nowTime) {
return
}
lastUpdateTime.value = nowTime
await Promise.all([getUserInfo(), getWallet(), getNumData()])
return userInfo.value
}
2024-05-29 01:29:31 +08:00
2024-05-29 17:07:37 +08:00
async function loginAfter() {
await updateUserData()
$share.getShareInfo()
$router.go('/pages/index/index')
}
2024-05-29 00:54:59 +08:00
2024-05-29 17:07:37 +08:00
function logOut() {
resetUserData()
return !isLogin.value
}
2024-05-29 00:54:59 +08:00
2024-05-29 17:07:37 +08:00
return {
userInfo,
userWallet,
isLogin,
setToken,
logOut,
loginAfter,
lastRoutePage,
}
},
{
persist: {
enabled: true,
strategies: [
{
key: 'user-store',
},
],
},
2024-05-29 00:54:59 +08:00
}
2024-05-29 17:07:37 +08:00
)
2024-05-29 00:54:59 +08:00
2024-05-29 17:07:37 +08:00
export default useUserStore