Skip to content

优惠券与活动价

优惠券

后台 优惠券与礼品卡 → 优惠券 → 新建

字段说明

字段说明
优惠码用户结账输入的字符串,可手填或自动生成,大小写不敏感
类型fixed(立减 ¥N)/ percent(打 N 折)
面额 / 折扣fixed=20 → 减 20 元;percent=80 → 打 8 折
最小订单金额满 ¥N 才可用
适用商品留空 = 全场;勾选指定商品 = 仅这些可用
适用会员等级留空 = 所有;否则限 ≥ X 级
总发行量全平台总共能用 N 次
单用户上限同一用户最多用 N 次
有效期起止时间

用户使用

结账页输入优惠码 → 实时计算折后价 → 提交订单时一并写入 coupon_usages 表(防重复)。

订单退款时,用过的优惠码不归还使用次数(用户已经"消费"了一次机会)。

活动价(基于会员等级的折扣)

跟优惠券不同——优惠券是输码触发,会员价是自动按等级给折

后台 商品管理 → SKU 编辑 → 会员价:

等级售价
LV0(默认)¥199
LV1¥179
LV2¥159
LV3¥99

下单时按用户当前 member_level_id 自动取对应价。不显示在划线价旁,直接当售价

会员价 + 优惠券可叠加。先按会员价取基价,再 apply 优惠券。如不想叠加,优惠券里设"适用商品"限定某些 SKU。

排查

现象原因
输码提示"无效"拼写;过期;超过单用户上限;不符合商品/会员限制
订单退款后用户说"我码没还"这是预期行为(防刷)
会员价不生效用户 member_level_id 没刷新(后台手动改完用户级别后让他登出再登)

SQL 速查

sql
-- 看某优惠码已用了几次
SELECT count(*) FROM coupon_usages WHERE coupon_id = (SELECT id FROM coupons WHERE code = 'SAVE20');

-- 某用户用了哪些券
SELECT c.code, cu.created_at, cu.order_no
FROM coupon_usages cu JOIN coupons c ON c.id = cu.coupon_id
WHERE cu.user_id = 42;

MIT License