feat(ECR-009): Ops-D order filters, plan display prices, refund status
LOOP-RUN-002 sample: admin order multi-filter, membership display price catalog, read-only refund_status. No real payment or RBAC. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -112,8 +112,25 @@ export const adminApi = {
|
||||
request<{ ok: boolean; ask_paid_quota_left: number }>('POST', `/users/${id}/ask-quota/grant`, {
|
||||
delta,
|
||||
}),
|
||||
orders: () =>
|
||||
request<{
|
||||
orders: (params?: {
|
||||
status?: string
|
||||
kind?: string
|
||||
from?: string
|
||||
to?: string
|
||||
user_id?: string
|
||||
limit?: number
|
||||
offset?: number
|
||||
}) => {
|
||||
const q = new URLSearchParams()
|
||||
if (params?.status) q.set('status', params.status)
|
||||
if (params?.kind) q.set('kind', params.kind)
|
||||
if (params?.from) q.set('from', params.from)
|
||||
if (params?.to) q.set('to', params.to)
|
||||
if (params?.user_id) q.set('user_id', params.user_id)
|
||||
if (params?.limit != null) q.set('limit', String(params.limit))
|
||||
if (params?.offset != null) q.set('offset', String(params.offset))
|
||||
const qs = q.toString()
|
||||
return request<{
|
||||
items: Array<{
|
||||
id: string
|
||||
user_id: string
|
||||
@@ -121,9 +138,18 @@ export const adminApi = {
|
||||
plan?: string
|
||||
amount_cents: number
|
||||
status: string
|
||||
refund_status: string
|
||||
created_at: string
|
||||
}>
|
||||
}>('GET', '/orders'),
|
||||
}>('GET', `/orders${qs ? `?${qs}` : ''}`)
|
||||
},
|
||||
planPrices: () =>
|
||||
request<{ items: Array<{ plan: string; display_cents: number; updated_at: string }> }>(
|
||||
'GET',
|
||||
'/membership/plan-prices',
|
||||
),
|
||||
savePlanPrices: (items: Array<{ plan: string; display_cents: number }>) =>
|
||||
request<{ ok: boolean }>('PUT', '/membership/plan-prices', { items }),
|
||||
audit: () =>
|
||||
request<{
|
||||
items: Array<{
|
||||
|
||||
Reference in New Issue
Block a user