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