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; } function resetUserData() { setToken(""); userInfo.value = clone(defaultUserInfo); userWallet.value = clone(defaultWallet); userNumData.value = cloneDeep(defaultNumData); } 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;