import { request, uploadFile } from './request' import { toNumber, toPageQuery, toPagination } 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, profile_completed: backendMember.profile_completed === true, created_at: backendMember.created_at || '' }) const toBalance = (backendData = {}) => ({ member_id: backendData.member_id ?? null, balance: backendData.balance || '0.00' }) const toBalanceRecord = (backendRecord = {}) => ({ id: backendRecord.id ?? null, amount: backendRecord.amount || '0.00', kind: backendRecord.kind || '', kind_label: backendRecord.kind_label || backendRecord.kind || '', order_id: backendRecord.order_id ?? null, remark: backendRecord.remark || '', created_at: backendRecord.created_at || '' }) export const memberApi = { getMemberMe() { return request({ url: '/api/members/me' }).then(toMember) }, updateMemberProfile(payload = {}) { return request({ url: '/api/members/profile', method: 'POST', data: { nickname: payload.nickname || null, avatar_url: payload.avatar_url || null } }).then(toMember) }, uploadAvatar(filePath) { return uploadFile({ url: '/api/members/avatar', filePath }).then((data) => ({ avatar_url: data.avatar_url || '', member: toMember(data.member) })) }, bindMemberPhone(code) { return request({ url: '/api/members/phone/bind', method: 'POST', data: { code } }).then(toMember) }, getBalance() { return request({ url: '/api/members/balance' }).then(toBalance) }, getBalanceRecords(params = {}) { return request({ url: '/api/members/balance-records', data: toPageQuery(params) }).then((data) => { const pagination = toPagination(data, toBalanceRecord) return { ...pagination, total: toNumber(pagination.total) } }) } }