feat: add comprehensive membership and stored value mall

This commit is contained in:
gqt
2026-07-12 20:38:33 +08:00
parent f3f8aee9a0
commit 62d59a2f03
6 changed files with 339 additions and 1 deletions
@@ -0,0 +1,31 @@
import { request } from './request'
import { toArray, toNumber } from './mappers'
import { toOrderBrief } from './order'
const toPlan = (item = {}) => ({
id: item.id ?? null,
name: item.name || '',
price: item.price || '0.00',
total_count: toNumber(item.total_count),
is_active: item.is_active === true,
courses: toArray(item.courses).map((course) => ({
id: course.id ?? null,
title: course.title || ''
})),
created_at: item.created_at || ''
})
export const membershipApi = {
getPlans() {
return request({
url: '/api/membership/plans'
}).then((data) => toArray(data.items || data).map(toPlan))
},
createMembershipOrder(planId) {
return request({
url: '/api/membership/orders',
method: 'POST',
data: { plan_id: planId }
}).then(toOrderBrief)
}
}
@@ -0,0 +1,27 @@
import { request } from './request'
import { toArray } from './mappers'
import { toOrderBrief } from './order'
const toStoredValueCard = (item = {}) => ({
id: item.id ?? null,
name: item.name || '',
price: item.price || '0.00',
face_value: item.face_value || '0.00',
is_active: item.is_active === true,
created_at: item.created_at || ''
})
export const storedValueApi = {
getCards() {
return request({
url: '/api/stored-value/cards'
}).then((data) => toArray(data.items || data).map(toStoredValueCard))
},
createOrder(cardId) {
return request({
url: '/api/stored-value/orders',
method: 'POST',
data: { card_id: cardId }
}).then(toOrderBrief)
}
}