import { reactive } from 'vue' import * as api from '@/service/user' import { getOrderInfo, getDiscountInfo } from '@/service/order' export const state = reactive({ ready: false, bgWhite: false, userInfo: null as ApiUser.Info.Response | null, // 拉新优惠券信息 coupon: {} as any, currentOrder: null as any, rebuyDiscount: 0, // 二次购买折扣 }) export async function getUserInfo(reportError?: boolean) { const { results } = await api.getUserInfo(reportError) state.userInfo = results return results } export async function updateUserInfo(data: ApiUser.Update.Request) { await api.updateUserInfo(data) Object.assign(state.userInfo as ApiUser.Info.Response, data) } export async function logout() { await api.logout() state.userInfo = null } export function bootstrap() { api.getInviteCoupon().then(({ results }) => (state.coupon = results)) getDiscountInfo('3').then( ({ results }) => (state.rebuyDiscount = +results.amount) ) return getUserInfo(false) } export async function getCurrentOrder(id: string | number) { if (!state.currentOrder || +state.currentOrder.id !== +id) { state.currentOrder = (await getOrderInfo(+id)).results } }