| 12345678910111213141516171819202122232425262728293031323334 |
- -- 创建注册优惠码表
- CREATE TABLE IF NOT EXISTS promo_codes (
- id BIGSERIAL PRIMARY KEY,
- code VARCHAR(32) NOT NULL UNIQUE,
- bonus_amount DECIMAL(20,8) NOT NULL DEFAULT 0,
- max_uses INT NOT NULL DEFAULT 0,
- used_count INT NOT NULL DEFAULT 0,
- status VARCHAR(20) NOT NULL DEFAULT 'active',
- expires_at TIMESTAMPTZ DEFAULT NULL,
- notes TEXT DEFAULT NULL,
- created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
- updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
- );
- -- 创建优惠码使用记录表
- CREATE TABLE IF NOT EXISTS promo_code_usages (
- id BIGSERIAL PRIMARY KEY,
- promo_code_id BIGINT NOT NULL REFERENCES promo_codes(id) ON DELETE CASCADE,
- user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
- bonus_amount DECIMAL(20,8) NOT NULL,
- used_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
- UNIQUE(promo_code_id, user_id)
- );
- -- 索引
- CREATE INDEX IF NOT EXISTS idx_promo_codes_status ON promo_codes(status);
- CREATE INDEX IF NOT EXISTS idx_promo_codes_expires_at ON promo_codes(expires_at);
- CREATE INDEX IF NOT EXISTS idx_promo_code_usages_promo_code_id ON promo_code_usages(promo_code_id);
- CREATE INDEX IF NOT EXISTS idx_promo_code_usages_user_id ON promo_code_usages(user_id);
- COMMENT ON TABLE promo_codes IS '注册优惠码';
- COMMENT ON TABLE promo_code_usages IS '优惠码使用记录';
- COMMENT ON COLUMN promo_codes.max_uses IS '最大使用次数,0表示无限制';
- COMMENT ON COLUMN promo_codes.status IS '状态: active, disabled';
|