Files
vmall/docs/domains/marketing.md
T

1.5 KiB

Domain: Marketing (coupons, flash sales, group buying, points)

Four activity systems, all shop-scoped where merchant-facing, all resolved server-side at checkout.

Coupons (modules/coupon/)

Merchant templates (amount/threshold/window/stock) → customers claim → redeem at checkout. Locked in id order during checkout; the discount is computed server-side in the order currency. Coupons never combine with activity pricing (flash sale / group buying) on the same shop order.

Flash sales (modules/flash_sale/)

Merchant sessions with per-SKU items (activity price + reserved stock). Checkout splits a line into activity-priced and normal-priced units; activity stock is consumed via guarded decrement. A SKU rejects overlapping flash-sale and group-buying activities.

Group buying (modules/group_buying/)

Merchant activity (required members, window, group lifetime). Checkout with a group intent takes exactly one unit at the activity price; a seat is claimed at payment (paid_member_count guarded), groups open/succeed/expire.

Points mall (modules/points/)

Platform-curated catalog; customers redeem with the points account (append-only ledger, guarded points decrement), fulfillment/cancellation by platform admins.

Shared rules

  • All money integer minor units; activity prices convert to the order currency server-side.
  • All stock/seat counters use guarded UPDATE … AND col >= $q.
  • Mall exposes each domain as a mock-adapter-backed live domain (LIVE_PICKS); consoles are live-only.

Key files

See docs/code_index/marketing.md.