实现多商户履约平台基础

This commit is contained in:
yml2213
2026-07-30 12:02:32 +08:00
parent dde6f2c269
commit 83429456a6
41 changed files with 5487 additions and 504 deletions
+70
View File
@@ -1,12 +1,22 @@
import request from './request'
import type {
DashboardStats,
ApiClient,
ApiCredential,
CallbackCredential,
CallbackSubscription,
FulfillmentOrder,
LoginResult,
Merchant,
MerchantMember,
MerchantProduct,
Order,
PageResult,
ShipLog,
Skin,
User,
WalletAccount,
WalletLedgerEntry,
} from '../types'
export const authApi = {
@@ -69,3 +79,63 @@ export const shipLogApi = {
list: (params?: Record<string, unknown>) =>
request.get('/ship-logs', { params }).then((r) => r.data.data as PageResult<ShipLog>),
}
export const merchantApi = {
current: () =>
request.get('/merchant').then((r) => r.data.data as { merchant: Merchant; role: MerchantMember['role'] }),
products: (params?: Record<string, unknown>) =>
request.get('/merchant/products', { params }).then((r) => r.data.data as PageResult<MerchantProduct>),
createProduct: (data: Partial<MerchantProduct> & {
product_code?: string
product_name?: string
category?: string
description?: string
attributes?: string
}) => request.post('/merchant/products', data).then((r) => r.data.data as MerchantProduct),
updateProduct: (id: number, data: Partial<MerchantProduct>) =>
request.patch(`/merchant/products/${id}`, data).then((r) => r.data.data),
orders: (params?: Record<string, unknown>) =>
request.get('/merchant/orders', { params }).then((r) => r.data.data as PageResult<FulfillmentOrder>),
wallet: () =>
request.get('/merchant/wallet').then((r) => r.data.data as WalletAccount),
ledger: (params?: Record<string, unknown>) =>
request.get('/merchant/wallet/ledger', { params }).then((r) => r.data.data as PageResult<WalletLedgerEntry>),
adjustWallet: (data: { amount: number; idempotency_key: string; note?: string }) =>
request.post('/merchant/wallet/adjust', data).then((r) => r.data.data as WalletAccount),
apiClients: () =>
request.get('/merchant/api-clients').then((r) => r.data.data as ApiClient[]),
createApiClient: (data: {
name: string
scopes: string
signature_version?: string
expires_at?: string
}) => request.post('/merchant/api-clients', data).then((r) => r.data.data as ApiCredential),
updateApiClientStatus: (id: number, status: ApiClient['status']) =>
request.patch(`/merchant/api-clients/${id}/status`, { status }).then((r) => r.data.data),
callbacks: () =>
request.get('/merchant/callbacks').then((r) => r.data.data as CallbackSubscription[]),
createCallback: (data: { name: string; url: string; events: string }) =>
request.post('/merchant/callbacks', data).then((r) => r.data.data as CallbackCredential),
updateCallbackStatus: (id: number, status: CallbackSubscription['status']) =>
request.patch(`/merchant/callbacks/${id}/status`, { status }).then((r) => r.data.data),
members: () =>
request.get('/merchant/members').then((r) => r.data.data as MerchantMember[]),
addMember: (data: { user_id: number; role: MerchantMember['role']; is_default?: boolean }) =>
request.post('/merchant/members', data).then((r) => r.data.data as MerchantMember),
}
export const platformApi = {
merchants: (params?: Record<string, unknown>) =>
request.get('/platform/merchants', { params }).then((r) => r.data.data as PageResult<Merchant>),
createMerchant: (data: {
code: string
name: string
contact_name?: string
contact_info?: string
owner_user_id: number
}) => request.post('/platform/merchants', data).then((r) => r.data.data as Merchant),
addMember: (
merchantId: number,
data: { user_id: number; role: MerchantMember['role']; is_default?: boolean },
) => request.post(`/platform/merchants/${merchantId}/members`, data).then((r) => r.data.data as MerchantMember),
}