coupon_table.sql 1.9 KB

123456789101112131415161718192021222324252627282930313233
  1. -- ============================================
  2. -- 用户优惠券表 (agent.dbo.user_coupons)
  3. -- SQL Server DDL
  4. -- ============================================
  5. IF NOT EXISTS (SELECT * FROM sysobjects WHERE name='user_coupons' AND xtype='U')
  6. BEGIN
  7. CREATE TABLE agent.dbo.user_coupons (
  8. id INT IDENTITY(1,1) PRIMARY KEY,
  9. user_id INT NOT NULL, -- 用户ID
  10. coupon_name VARCHAR(50) NOT NULL, -- 优惠券名称 (e.g. new_user_bonus)
  11. coupon_type TINYINT NOT NULL DEFAULT 1, -- 类型: 1=固定金额, 2=充值百分比
  12. coupon_value DECIMAL(10,2) NOT NULL DEFAULT 0, -- 优惠值 (元 or %)
  13. min_recharge DECIMAL(10,2) NOT NULL DEFAULT 0, -- 最低充值门槛(元)
  14. max_bonus DECIMAL(10,2) NOT NULL DEFAULT 0, -- 最大赠送上限(元), 百分比券使用
  15. bonus_coins INT NOT NULL DEFAULT 0, -- 实际赠送金币(分)
  16. order_sn VARCHAR(64) NOT NULL DEFAULT '', -- 关联订单号
  17. status TINYINT NOT NULL DEFAULT 0, -- 0=未使用, 1=已使用, 2=已过期
  18. issued_at DATETIME NULL, -- 发放时间
  19. used_at DATETIME NULL, -- 使用时间
  20. expire_at DATETIME NULL, -- 过期时间
  21. );
  22. -- 索引: 用户+状态查询(获取可用优惠券列表)
  23. CREATE INDEX idx_user_coupons_user_status ON agent.dbo.user_coupons (user_id, status, expire_at);
  24. -- 索引: 优惠券名称防重
  25. CREATE INDEX idx_user_coupons_user_name ON agent.dbo.user_coupons (user_id, coupon_name, status);
  26. -- 索引: 按订单号查找关联优惠券
  27. CREATE INDEX idx_user_coupons_order_sn ON agent.dbo.user_coupons (order_sn);
  28. END
  29. GO