import { authStorage, request } from './request' import { toNumber } from './mappers' const toMember = (backendMember = {}) => ({ id: backendMember.id ?? null, openid: backendMember.openid || '', unionid: backendMember.unionid || '', nickname: backendMember.nickname || '', phone: backendMember.phone || '', avatar_url: backendMember.avatar_url || '', balance: backendMember.balance || '0.00', is_active: backendMember.is_active === true, created_at: backendMember.created_at || '' }) const toWechatLogin = (backendData = {}) => ({ access_token: backendData.access_token || '', token_type: backendData.token_type || 'Bearer', expires_in: toNumber(backendData.expires_in), member: toMember(backendData.member) }) export const authApi = { async wechatLogin(payload = {}) { const data = typeof payload === 'string' ? { code: payload } : payload const loginData = await request({ url: '/api/auth/wechat-login', method: 'POST', data: { code: data.code, nickname: data.nickname || '', avatar_url: data.avatar_url || '' } }).then(toWechatLogin) authStorage.setToken(loginData.access_token) return loginData }, logout() { authStorage.clear() } } export { authStorage }