feat(finance): P2 手动退款登记与成本异常闭环

- 迁移 112:order_refunds(订单项级退款,整单拆多条共享 batch_no,source/external_ref 预留平台 API)+ cost_exceptions.resolution_note
- 新服务 order-refund-service:整单/指定商品退款、可退金额校验、撤销、全额退完同步 pay_status
- 销售事实改为按有效退款记录冲减;无记录时仍兼容 pay_status=refunded 的历史全额退款
- 订单详情新增退款登记与退款记录表,商品明细显示收入/已退/可退
- 全额退款自动关闭该订单项成本异常并写处理备注;成本异常处理改为带备注弹窗
- 财务事件 UNION 接入退款记录,文档同步 P2 状态与 API
This commit is contained in:
yml2213
2026-10-24 17:18:51 +08:00
parent a78cc1f984
commit faf56e567e
18 changed files with 1127 additions and 48 deletions
+35 -1
View File
@@ -1,5 +1,10 @@
import { apiGet, apiPost } from '@/lib/http'
import type { AdminOrderDetail, AdminOrderListItem, AdminPagination } from '@/types/admin'
import type {
AdminOrderDetail,
AdminOrderListItem,
AdminOrderRefund,
AdminPagination,
} from '@/types/admin'
export function fetchAdminOrders(params?: Record<string, unknown>) {
return apiGet<{ items: AdminOrderListItem[]; pagination: AdminPagination }>(
@@ -24,3 +29,32 @@ export function updateAdminOrderClaimStatus(
claimStatusUpdatedAt: string
}>(`/api/v1/admin/orders/${orderId}/claim-status`, payload)
}
export function createAdminOrderRefund(
orderId: number | string,
payload: {
orderItemId?: number
amountFen?: number
reason?: string
note?: string
refundedAt?: string
},
) {
return apiPost<{
batchNo: string
refunds: AdminOrderRefund[]
fullRefunded: boolean
closedExceptionCount: number
}>(`/api/v1/admin/orders/${orderId}/refunds`, payload)
}
export function voidAdminOrderRefund(
orderId: number | string,
refundId: number,
payload: { reason?: string },
) {
return apiPost<{ refund: AdminOrderRefund; rebuiltDate: string }>(
`/api/v1/admin/orders/${orderId}/refunds/${refundId}/void`,
payload,
)
}