feat(orders): 对齐契约 §6——服务端重算金额/地址快照/requestId 幂等/分页 + confirm/cancel 接口
- POST /api/orders 改为 { addressId, items[{productId,quantity}], designListId?, requestId? },
totalAmount 按 Product 真实价格重算,客户端不再可传金额(DTO 白名单同步收紧)
- requestId 幂等:Order 新增唯一列 + 迁移 20260915000000,重复请求返回已创建订单
- GET /api/orders 支持 status/page/pageSize,返回 { list, total, page, pageSize }
- GET /api/orders/:id 补本人校验(越权 403 / 不存在 404)
- 新增 PATCH /api/orders/:id/confirm(SHIPPED→COMPLETED)、POST /api/orders/:id/cancel(仅 PENDING)
- 下单事务内推进设计清单 DRAFT/SUBMITTED→PROCESSING(单向,R2 交接的状态触发权)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
-- 订单幂等键(api-contract-v1 §6:requestId 防重复下单,重复请求返回已创建订单)
|
||||
ALTER TABLE "Order" ADD COLUMN "requestId" TEXT;
|
||||
CREATE UNIQUE INDEX "Order_requestId_key" ON "Order"("requestId");
|
||||
@@ -129,6 +129,8 @@ model Order {
|
||||
addressSnapshot Json
|
||||
// 关联的设计清单(R4 下单后 WCD 派单据此读取 designData)
|
||||
designListId String?
|
||||
// 客户端幂等键(api-contract-v1 §6:requestId 重复请求返回已创建订单)
|
||||
requestId String? @unique
|
||||
user User @relation(fields: [userId], references: [id])
|
||||
designList DesignList? @relation(fields: [designListId], references: [id])
|
||||
items OrderItem[]
|
||||
|
||||
Reference in New Issue
Block a user