feat(pricing): 开发定价方案
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
import type {
|
||||
PricingCatalog,
|
||||
PricingCategory,
|
||||
PricingPolicy,
|
||||
PricingPolicyRequest,
|
||||
PricingPreview,
|
||||
PricingPreviewRequest,
|
||||
} from '@atlas/contracts';
|
||||
import { api } from './api';
|
||||
const headers = () => ({ 'Idempotency-Key': crypto.randomUUID() });
|
||||
export const pricingApi = {
|
||||
categories: (store: string, q: string) =>
|
||||
api.get<PricingCategory[]>('/pricing/categories', { params: { store_id: store, q } }),
|
||||
catalog: (store: string) =>
|
||||
api.get<PricingCatalog>('/pricing/catalog', { params: { store_id: store } }),
|
||||
preview: (input: PricingPreviewRequest, signal?: AbortSignal) =>
|
||||
api.post<PricingPreview>('/pricing/quote-previews', input, { headers: headers(), signal }),
|
||||
createPolicy: (store: string, input: PricingPolicyRequest) =>
|
||||
api.post<PricingPolicy>(`/stores/${store}/pricing-policies`, input, { headers: headers() }),
|
||||
updatePolicy: (policy: PricingPolicy, input: PricingPolicyRequest) =>
|
||||
api.patch<PricingPolicy>(`/pricing-policies/${policy.id}`, input, {
|
||||
headers: { ...headers(), 'If-Match': `"${policy.revision}"` },
|
||||
}),
|
||||
defaultPolicy: (id: string) =>
|
||||
api.post<PricingPolicy>(`/pricing-policies/${id}/set-default`, {}, { headers: headers() }),
|
||||
archivePolicy: (id: string) => api.delete(`/pricing-policies/${id}`, { headers: headers() }),
|
||||
};
|
||||
@@ -0,0 +1,13 @@
|
||||
import type { PricingRateCardAdmin, PricingRateReviewRequest } from '@atlas/contracts';
|
||||
import { api } from './api';
|
||||
|
||||
export const pricingAdminApi = {
|
||||
cards: (platformId: string) =>
|
||||
api.get<PricingRateCardAdmin[]>('/system/pricing/rate-cards', {
|
||||
params: { platform_id: platformId },
|
||||
}),
|
||||
approve: (cardId: string, input: PricingRateReviewRequest, idempotencyKey: string) =>
|
||||
api.post<PricingRateCardAdmin>(`/system/pricing/rate-cards/${cardId}/reviews`, input, {
|
||||
headers: { 'Idempotency-Key': idempotencyKey },
|
||||
}),
|
||||
};
|
||||
Reference in New Issue
Block a user