2.4 KiB
2.4 KiB
商城优惠券与红包系统设计文档 v1.1
1. 系统概述
本系统旨在为消费者提供多种形式的优惠激励,包括店铺优惠券、商品专属券、平台通用券以及现金红包。 核心流程包含:优惠配置(后台) -> 用户领取(前台) -> 下单核销(结算) -> 状态流转。
2. 优惠券分类 (Coupon Types)
2.1 优惠形式 (coupon_type)
- 满减券 (Full Reduction):
coupon_type=1,discount_type=1. 例如:满 100 减 10。 - 折扣券 (Discount):
coupon_type=2,discount_type=2. 例如:满 100 打 9 折。 - 红包 (Red Packet):
coupon_type=1(或3),discount_type=1,min_order_amount=0.
2.2 适用范围 (Derived from Data)
- 店铺券:
merchant_id不为空,applicable_products为空。 - 商品券:
merchant_id不为空,applicable_products包含特定商品ID。 - 平台券:
merchant_id为空。
3. 数据库设计 (Database Schema)
3.1 优惠券模板表 (ml_coupon_templates)
定义优惠券的规则。
id: UUID (Primary Key)merchant_id: 商户ID (空则为平台券)name: 优惠券名称coupon_type: INTEGER (1:满减, 2:折扣, 3:免运费)discount_type: INTEGER (1:固定金额, 2:百分比)discount_value: DECIMAL (减免金额 或 折扣率如0.9)min_order_amount: DECIMAL (最低消费门槛, 0为无门槛)total_quantity: INTEGER (发行总量)per_user_limit: INTEGER (每人限领)applicable_products: JSONB (适用商品列表)start_time/end_time: 领取有效期status: INTEGER (1:正常)
3.2 用户优惠券表 (ml_user_coupons)
记录用户领取的优惠券实例。
id: UUIDuser_id: 用户IDtemplate_id: 关联模板coupon_code: 唯一码status: 1-未使用, 2-已使用, 3-已过期received_at: 领取时间expire_at: 过期时间order_id: 关联订单ID
4. 业务流程与开发指南
4.1 数据展示适配
前端 getUserCoupons 方法获取数据后,需根据 coupon_type 和 discount_type 做展示处理:
- 若
discount_type == 1: 展示¥{discount_value}。 - 若
discount_type == 2: 展示{discount_value * 10}折(若存0.9) 或根据实际存储值适配。
4.2 SQL 初始化
已提供修正后的 doc_mall/consumer/sql/06_setup_coupons.sql,适配真实表结构字段。请重新执行以生成测试数据。