import { defineStore } from 'pinia' import { isEmpty, cloneDeep, clone } from 'lodash' import UserApi from '@/peach/api/member/user' import PayWalletApi from '@/peach/api/pay/wallet' import OrderApi from '@/peach/api/trade/order' import CouponApi from '@/peach/api/promotion/coupon' import cart from './cart' // 默认用户信息 const defaultUserInfo = { avatar: '', // 头像 nickname: '', // 昵称 gender: 0, // 性别 mobile: '', // 手机号 point: 0, // 积分 } // 默认钱包信息 const defaultUserWallet = { balance: 0, // 余额 } // 默认订单、优惠券等其他资产信息 const defaultNumData = { unusedCouponCount: 0, orderCount: { allCount: 0, unpaidCount: 0, undeliveredCount: 0, deliveredCount: 0, uncommentedCount: 0, afterSaleCount: 0, }, } const user = defineStore({ id: 'user', state: () => ({ userInfo: clone(defaultUserInfo), userWallet: clone(defaultUserWallet), numData: cloneDeep(defaultNumData), isLogin: !!uni.getStorageSync('token'), lastUpdateTime: 0, }), actions: { // 获取用户信息 async getInfo() { const { code, data } = await UserApi.getUserInfo() if (code !== 0) { return } this.userInfo = data return Promise.resolve(data) }, // 获得用户钱包 async getWallet() { const { code, data } = await PayWalletApi.getPayWallet() if (code !== 0) { return } this.userWallet = data }, // 获取订单、优惠券等其他资产信息 getNumData() { OrderApi.getOrderCount().then((res) => { if (res.code === 0) { this.numData.orderCount = res.data } }) CouponApi.getUnusedCouponCount().then((res) => { if (res.code === 0) { this.numData.unusedCouponCount = res.data } }) }, // 设置 token setToken(token = '', refreshToken = '') { if (token === '') { this.isLogin = false uni.removeStorageSync('token') uni.removeStorageSync('refresh-token') } else { this.isLogin = true uni.setStorageSync('token', token) uni.setStorageSync('refresh-token', refreshToken) this.loginAfter() } return this.isLogin }, // 登录后,加载各种信息 async loginAfter() { await this.updateUserData() // 提醒绑定手机号 if (app().platform.bind_mobile && !this.userInfo.mobile) { showAuthModal('changeMobile') } // 添加分享记录 const shareLog = uni.getStorageSync('shareLog') if (!isEmpty(shareLog)) { this.addShareLog({ ...shareLog, }) } }, // 重置用户默认数据 resetUserData() { // 清空 token this.setToken() // 清空用户相关的缓存 this.userInfo = clone(defaultUserInfo) this.userWallet = clone(defaultUserWallet) this.numData = cloneDeep(defaultNumData) // 清空购物车的缓存 cart().emptyList() }, // 登出系统 async logout() { this.resetUserData() return !this.isLogin }, }, }) export default user