2024-05-29 00:54:59 +08:00
|
|
|
import { ref } from "vue";
|
|
|
|
import { defineStore } from "pinia";
|
2024-05-29 01:29:31 +08:00
|
|
|
import $share from "@/peach/platform/share";
|
2024-05-29 00:54:59 +08:00
|
|
|
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"));
|
2024-05-29 01:29:31 +08:00
|
|
|
const lastUpdateTime = ref(0);
|
2024-05-29 00:54:59 +08:00
|
|
|
|
|
|
|
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 01:29:31 +08:00
|
|
|
async function updateUserData() {
|
|
|
|
const nowTime = new Date().getTime();
|
|
|
|
if (lastUpdateTime.value + 5000 > nowTime) {
|
|
|
|
return;
|
2024-05-29 00:54:59 +08:00
|
|
|
}
|
2024-05-29 01:29:31 +08:00
|
|
|
lastUpdateTime.value = nowTime;
|
|
|
|
|
|
|
|
await getUserInfo();
|
|
|
|
getWallet();
|
|
|
|
getNumData();
|
|
|
|
return userInfo.value;
|
2024-05-29 00:54:59 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
function loginAfter() {
|
2024-05-29 01:29:31 +08:00
|
|
|
updateUserData();
|
|
|
|
$share.getShareInfo();
|
2024-05-29 00:54:59 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
function logOut() {
|
|
|
|
resetUserData();
|
2024-05-29 01:29:31 +08:00
|
|
|
return !isLogin.value;
|
2024-05-29 00:54:59 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
return {
|
|
|
|
userInfo,
|
|
|
|
isLogin,
|
|
|
|
setToken,
|
2024-05-29 01:29:31 +08:00
|
|
|
logOut,
|
2024-05-29 00:54:59 +08:00
|
|
|
};
|
|
|
|
},
|
|
|
|
{
|
|
|
|
persist: true,
|
|
|
|
strategies: [
|
|
|
|
{
|
|
|
|
key: "user-store",
|
|
|
|
},
|
|
|
|
],
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
export default useUserStore;
|