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

111 lines
2.4 KiB
JavaScript
Raw Normal View History

2024-05-29 00:54:59 +08:00
import { ref } from "vue";
import { defineStore } from "pinia";
import $share from '@/peach/platform/share'
import { isEmpty, cloneDeep, clone } from "lodash";
// 默认用户信息
const defaultUserInfo = {
avatar: "", // 头像
nickname: "", // 昵称
gender: 0, // 性别
mobile: "", // 手机号
point: 0, // 积分
};
// 默认钱包信息
const defaultWallet = {
balance: 0, // 余额
};
// 默认订单信息
const defaultNumData = {
unusedCouponCount: 0,
orderCount: {
allCount: 0,
unpaidCount: 0,
undeliveredCount: 0,
deliveredCount: 0,
uncommentedCount: 0,
afterSaleCount: 0,
},
};
const useUserStore = defineStore(
"user",
() => {
const userInfo = ref(clone(defaultUserInfo));
const userWallet = ref(clone(defaultWallet));
const userNumData = ref(cloneDeep(defaultNumData));
const isLogin = ref(!!uni.getStorageSync("token"));
const lastUpdateTime = ref(0)
function getUserInfo() {}
function getWallet() {}
function getNumData() {}
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 00:54:59 +08:00
function resetUserData() {
setToken("");
userInfo.value = clone(defaultUserInfo);
userWallet.value = clone(defaultWallet);
userNumData.value = cloneDeep(defaultNumData);
2024-05-22 15:42:13 +08:00
}
2024-05-29 00:54:59 +08:00
function updateUserData() {
const nowTime = new Date().getTime()
if (lastUpdateTime.value + 5000 > nowTime) {
return
}
lastUpdateTime.value = nowTime
await getUserInfo()
getWallet()
getNumData()
return userInfo.value
}
function loginAfter() {
updateUserData()
$share.getShareInfo()
}
function logOut() {
resetUserData();
return !isLogin.value
}
return {
userInfo,
isLogin,
setToken,
logOut
};
},
{
persist: true,
strategies: [
{
key: "user-store",
},
],
}
);
export default useUserStore;