54 lines
4.7 KiB
Markdown
54 lines
4.7 KiB
Markdown
# EDU-027 — Activate native Mall Trade order core
|
||
|
||
- **Status:** done — tenant-owned order core, native APIs/UI, RBAC, and PostgreSQL evidence delivered
|
||
- **Type:** native module takeover / order lifecycle / tenant isolation
|
||
- **Phase:** 5 / commercialization foundation
|
||
- **Blockers:** EDU-020, EDU-024, EDU-025, EDU-026, PostgreSQL Flyway
|
||
|
||
## Problem
|
||
|
||
RuoYi Vue Pro already provides the normalized Trade order aggregate, cart and price orchestration, Pay/Product/Promotion/Member composition, administrator order/config controllers, jobs, permissions, and Vben pages. The Server dependency was disabled and its core data objects inherited only `BaseDO`. Rebuilding orders inside Education would create a second commerce ledger and duplicate native payment, member, catalog, and coupon boundaries.
|
||
|
||
Legacy orders cannot be copied safely from terminal payment aggregates or display-only product rows. Native Trade requires verified Member identities, SPU/SKU line items, price allocation, delivery mode, payment linkage, status history, and promotion state that those projections do not contain.
|
||
|
||
## Delivered contract
|
||
|
||
- `yudao-server` activates `yudao-module-trade`; native `TradeOrderApiImpl` is now authoritative and the temporary Promotion fallback from EDU-026 is removed.
|
||
- Existing `/trade/order`, `/trade/config`, `/app-api/trade/order`, and `/app-api/trade/cart` contracts remain owned by Trade. Education adds no shadow order or cart API. This slice proves the administrator order/config interface and core persistence; it does not yet claim successful app checkout.
|
||
- `TradeOrderDO`, `TradeOrderItemDO`, `TradeOrderLogDO`, `TradeConfigDO`, and `CartDO` extend `TenantBaseDO`, so their native mapper/service access participates in framework tenant injection.
|
||
- V4390 mounts the existing order and trade-config Vben pages below an Education `交易中心` with the exact native query/update/pick-up/config permissions.
|
||
- Deferred after-sale, delivery-master-data, and brokerage tables are not silently activated. V4390 rejects any pre-existing version of those tables until a dedicated tenant-safe slice owns their schema and UI.
|
||
|
||
## Database contract
|
||
|
||
V4390 creates tenant-scoped PostgreSQL tables:
|
||
|
||
- `trade_config`
|
||
- `trade_cart`
|
||
- `trade_order`
|
||
- `trade_order_item`
|
||
- `trade_order_log`
|
||
|
||
All use `(tenant_id,id)` ownership keys and explicitly named identity sequences. Order Item → Order/Cart/Product and Order Log → Order references are tenant-qualified. Cart → Product, Order → Pay Order, and Order → Promotion Coupon references are also tenant-qualified. Checks enforce native order/type/terminal/delivery/refund/cancel/log enums, amount/count bounds, payment/cancel/delivery shapes, after-sale reference shape, and one active config per tenant. Indexes match administrator paging, member history, cart selection, auto-cancel/receive jobs, order details, and log history.
|
||
|
||
V4390 seeds menu IDs 6960–6967 for the Trade root, order page, config page, and exact five controller permissions.
|
||
|
||
## Legacy data decision
|
||
|
||
The native Trade ledger starts empty. V4390 does not fabricate line items from Pay totals, guess tenant/member/SPU/SKU links, translate terminal statuses into a richer order lifecycle, or attach historical coupons and refunds without reviewed source identities. A later import slice requires an explicit reconciliation contract and quarantine path.
|
||
|
||
## Verification
|
||
|
||
- The focused Trade tenant contract proves all five activated records inherit `TenantBaseDO`.
|
||
- The focused V4390 Flyway scenario proves same IDs can exist across tenants, cross-tenant Cart/Order Item references fail, invalid cancel/config states fail, five explicit sequences exist, exact menus/permissions are installed, core global-table adoption fails closed, and deferred Trade tables fail closed.
|
||
- The full PostgreSQL Flyway suite passes with 46 scenarios through V4390.
|
||
- `mvn -pl yudao-server -am -DskipTests compile` succeeds with Product, Promotion, and Trade enabled.
|
||
- The existing Vben order/config pages pass the web app typecheck and scoped lint/format checks.
|
||
|
||
## Explicitly open
|
||
|
||
- Native after-sale, delivery express/template/pick-up-store, and brokerage persistence/UI require later tenant-safe slices.
|
||
- Normal checkout still invokes native Promotion discount and reward lookups whose tables are deferred, and special orders require additional Promotion families. V4390 therefore does not claim end-to-end purchase creation, seckill, bargain, combination, point, discount, or reward orders.
|
||
- Legacy order import, automatic education-entitlement fulfillment, refund-driven revocation, and production reconciliation/runbooks remain separate work.
|
||
- Target-environment role grants, scheduled-job deployment, and browser/API smoke evidence remain operational work.
|