[Snow Team] frontend-fixer: auto-commit work

This commit is contained in:
yml
2026-06-09 16:33:54 +08:00
parent f5b38ff772
commit aa71532a05
10 changed files with 237 additions and 102 deletions
+165 -30
View File
@@ -1,5 +1,5 @@
import { apiClient } from '@/shared/api/client'
import type { ApiResponse } from '@/shared/types/types'
import type { ApiResponse, PaginatedResult } from '@/shared/types/types'
import type { HandoffStatus, OrderStatus, SettlementStatus } from '@/shared/types/status'
export interface Order {
@@ -19,12 +19,26 @@ export interface Order {
estimated_duration_hours: number
price_role?: 'renter' | 'owner' | 'admin' | string
display_amount_cent: number
/** @deprecated use display_amount_cent */
display_amount?: number
rent_amount_cent?: number
/** @deprecated use rent_amount_cent */
rent_amount?: number
owner_rent_amount_cent?: number
/** @deprecated use owner_rent_amount_cent */
owner_rent_amount?: number
deposit_amount_cent: number
/** @deprecated use deposit_amount_cent */
deposit_amount?: number
deposit_original_amount_cent: number
/** @deprecated use deposit_original_amount_cent */
deposit_original_amount?: number
deposit_waived_amount_cent: number
/** @deprecated use deposit_waived_amount_cent */
deposit_waived_amount?: number
platform_fee_cent?: number
/** @deprecated use platform_fee_cent */
platform_fee?: number
account_snapshot?: Record<string, unknown>
listing_snapshot?: string
checkout_info?: string
@@ -45,16 +59,34 @@ export interface Checkout {
status: SettlementStatus
price_role?: 'renter' | 'owner' | 'admin' | string
display_amount_cent: number
/** @deprecated use display_amount_cent */
display_amount?: number
rent_amount_cent?: number
/** @deprecated use rent_amount_cent */
rent_amount?: number
owner_rent_amount_cent?: number
/** @deprecated use owner_rent_amount_cent */
owner_rent_amount?: number
platform_fee_cent?: number
deposit_amount_cent: number
/** @deprecated use deposit_amount_cent */
deposit_amount?: number
consumable_amount_cent: number
/** @deprecated use consumable_amount_cent */
consumable_amount?: number
coin_consumed_m: number
other_amount_cent: number
/** @deprecated use other_amount_cent */
other_amount?: number
deposit_deduct_amount_cent: number
/** @deprecated use deposit_deduct_amount_cent */
deposit_deduct_amount?: number
renter_refund_amount_cent?: number
/** @deprecated use renter_refund_amount_cent */
renter_refund_amount?: number
owner_income_amount_cent?: number
/** @deprecated use owner_income_amount_cent */
owner_income_amount?: number
content: string
evidence_urls: string[]
owner_adjustment_reason: string
@@ -98,13 +130,37 @@ export interface PaymentOrder {
updated_at: string
}
// API functions below remain the same, TypeScript will catch any mismatches
export interface CheckoutPayload {
consumable_amount: number
coin_consumed_m: number
other_amount: number
deposit_deduct_amount?: number
content: string
evidence_urls: string[]
reason?: string
}
export interface RefundStatus {
order_id: number
order_no: string
refund_status: string
refund_amount_cent: number
refunded_at?: string
total_amount_cent: number
}
export interface AdminActionResponse {
updated?: boolean
closed?: boolean
refunded?: boolean
}
export async function fetchOrders() {
const { data } = await apiClient.get<ApiResponse<Order[]>>('/orders')
return data.data
}
export async function fetchOrder(id: number) {
export async function fetchOrder(id: string | number) {
const { data } = await apiClient.get<ApiResponse<Order>>(`/orders/${id}`)
return data.data
}
@@ -119,53 +175,132 @@ export async function cancelOrder(id: number) {
return data.data
}
export async function startPayment(orderId: number, payWay: string, jsPayFlag?: string) {
const { data } = await apiClient.post<ApiResponse<PaymentOrder>>(`/orders/${orderId}/pay`, {
pay_way: payWay,
jspay_flag: jsPayFlag || '',
})
export async function fetchHandoffRecords(id: string | number) {
const { data } = await apiClient.get<ApiResponse<HandoffRecord[]>>(`/orders/${id}/handoff-records`)
return data.data ?? []
}
export async function submitHandoff(id: number, content: string) {
const { data } = await apiClient.post<ApiResponse<HandoffRecord>>(`/orders/${id}/handoff`, { content })
return data.data
}
export async function queryPayment(orderId: number) {
const { data } = await apiClient.post<ApiResponse<PaymentOrder>>(`/orders/${orderId}/pay/query`)
return data.data
}
export async function confirmHandoff(orderId: number, type: string, content: string) {
export async function confirmReceive(id: number) {
const { data } = await apiClient.post<ApiResponse<{ confirmed: boolean }>>(
`/orders/${orderId}/handoff/${type}/confirm`,
{ content }
`/orders/${id}/confirm-receive`
)
return data.data
}
export async function createCheckout(
export async function startOrderPayment(
orderId: number,
payload: {
consumable_amount: number
coin_consumed_m: number
other_amount: number
deposit_deduct_amount: number
content: string
evidence_urls: string[]
}
options: { pay_way?: string; jspay_flag?: string } = {}
) {
const { data } = await apiClient.post<ApiResponse<PaymentOrder>>(
`/orders/${orderId}/start-payment`,
{
pay_way: options.pay_way || '',
jspay_flag: options.jspay_flag || '',
}
)
return data.data
}
export async function queryOrderPayment(orderId: number) {
const { data } = await apiClient.get<ApiResponse<PaymentOrder>>(`/orders/${orderId}/query-payment`)
return data.data
}
export async function submitCheckout(orderId: number, payload: CheckoutPayload) {
const { data } = await apiClient.post<ApiResponse<Checkout>>(`/orders/${orderId}/checkout`, payload)
return data.data
}
export async function confirmCheckout(orderId: number) {
const { data } = await apiClient.post<ApiResponse<{ confirmed: boolean }>>(
`/orders/${orderId}/checkout/confirm`
)
return data.data
}
export async function acceptCheckout(orderId: number) {
const { data } = await apiClient.post<ApiResponse<{ accepted: boolean }>>(`/orders/${orderId}/checkout/accept`)
const { data } = await apiClient.post<ApiResponse<{ accepted: boolean }>>(
`/orders/${orderId}/checkout/accept`
)
return data.data
}
export async function rejectCheckout(orderId: number) {
const { data } = await apiClient.post<ApiResponse<{ rejected: boolean }>>(`/orders/${orderId}/checkout/reject`)
export async function rejectCheckout(orderId: number, reason?: string) {
const { data } = await apiClient.post<ApiResponse<{ rejected: boolean }>>(
`/orders/${orderId}/checkout/reject`,
{ reason: reason || '' }
)
return data.data
}
export async function counterCheckout(orderId: number, checkoutId: number) {
const { data } = await apiClient.post<ApiResponse<Checkout>>(`/orders/${orderId}/checkout/${checkoutId}/counter`)
export async function counterCheckout(orderId: number, payload: CheckoutPayload) {
const { data } = await apiClient.post<ApiResponse<Checkout>>(
`/orders/${orderId}/checkout/counter`,
payload
)
return data.data
}
export async function fetchAdminOrders(page = 1, pageSize = 20) {
const { data } = await apiClient.get<ApiResponse<PaginatedResult<Order>>>('/admin/orders', {
params: { page, page_size: pageSize },
})
const result = data.data
return {
items: Array.isArray(result?.items) ? result.items : [],
total: Number(result?.total ?? 0),
page: Number(result?.page ?? page),
page_size: Number(result?.page_size ?? pageSize),
}
}
export async function fetchAdminOrder(id: string | number) {
const { data } = await apiClient.get<ApiResponse<Order>>(`/admin/orders/${id}`)
return data.data
}
export async function fetchAdminHandoffRecords(id: string | number) {
const { data } = await apiClient.get<ApiResponse<HandoffRecord[]>>(
`/admin/orders/${id}/handoff-records`
)
return data.data ?? []
}
export async function adminCloseOrder(id: number, reason: string) {
const { data } = await apiClient.post<ApiResponse<AdminActionResponse>>(`/admin/orders/${id}/close`, {
reason,
})
return data.data
}
export async function adminMarkOrderAbnormal(id: number, reason: string) {
const { data } = await apiClient.post<ApiResponse<AdminActionResponse>>(
`/admin/orders/${id}/mark-abnormal`,
{ reason }
)
return data.data
}
export async function adminRefundOrder(id: number) {
const { data } = await apiClient.post<ApiResponse<RefundStatus>>(`/admin/orders/${id}/refund`)
return data.data
}
export async function adminRefundStatus(id: number) {
const { data } = await apiClient.get<ApiResponse<RefundStatus>>(
`/admin/orders/${id}/refund-status`
)
return data.data
}
// Backward-compatible names kept for existing pages/composables.
export const startPayment = (orderId: number, payWay: string, jsPayFlag?: string) =>
startOrderPayment(orderId, { pay_way: payWay, jspay_flag: jsPayFlag })
export const queryPayment = queryOrderPayment
export const createCheckout = submitCheckout
export const confirmHandoff = confirmReceive