126 lines
5.7 KiB
SQL
126 lines
5.7 KiB
SQL
# 抽奖系统数据库初始化SQL
|
||
|
||
## 1. 抽奖活动表
|
||
```sql
|
||
CREATE TABLE lottery_activity (
|
||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||
activity_code VARCHAR(50) UNIQUE NOT NULL COMMENT '活动编码',
|
||
activity_name VARCHAR(100) NOT NULL COMMENT '活动名称',
|
||
activity_desc VARCHAR(500) COMMENT '活动描述',
|
||
start_time DATETIME NOT NULL COMMENT '开始时间',
|
||
end_time DATETIME NOT NULL COMMENT '结束时间',
|
||
status TINYINT DEFAULT 0 COMMENT '状态:0-未开始,1-进行中,2-已结束,3-已关闭',
|
||
total_stock INT DEFAULT 0 COMMENT '总奖品库存',
|
||
consumed_stock INT DEFAULT 0 COMMENT '已消耗库存',
|
||
draw_count_limit INT DEFAULT 0 COMMENT '每人抽奖次数限制(0为不限制)',
|
||
draw_count_cycle VARCHAR(20) COMMENT '次数限制周期:DAILY-每天,TOTAL-总计',
|
||
need_ticket TINYINT DEFAULT 0 COMMENT '是否需要抽奖券:0-否,1-是',
|
||
ticket_cost INT DEFAULT 1 COMMENT '每次消耗抽奖券数量',
|
||
sort_order INT DEFAULT 0 COMMENT '排序',
|
||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
INDEX idx_status_time (status, start_time, end_time),
|
||
INDEX idx_code (activity_code)
|
||
) COMMENT '抽奖活动表';
|
||
```
|
||
|
||
## 2. 奖品配置表
|
||
```sql
|
||
CREATE TABLE lottery_prize (
|
||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||
activity_id BIGINT NOT NULL COMMENT '活动ID',
|
||
prize_code VARCHAR(50) NOT NULL COMMENT '奖品编码',
|
||
prize_name VARCHAR(100) NOT NULL COMMENT '奖品名称',
|
||
prize_type TINYINT NOT NULL COMMENT '奖品类型:1-实物,2-虚拟币,3-优惠券,4-积分,5-谢谢参与',
|
||
prize_value DECIMAL(10,2) COMMENT '奖品价值/数量',
|
||
prize_image VARCHAR(200) COMMENT '奖品图片',
|
||
prize_level TINYINT COMMENT '奖品等级:1-特等奖,2-一等奖,3-二等奖...',
|
||
total_stock INT NOT NULL COMMENT '总库存',
|
||
remaining_stock INT NOT NULL COMMENT '剩余库存',
|
||
daily_stock INT DEFAULT 0 COMMENT '每日库存限制(0为不限制)',
|
||
probability DECIMAL(10,6) NOT NULL COMMENT '中奖概率(0-1之间)',
|
||
sort_order INT DEFAULT 0 COMMENT '排序(九宫格位置)',
|
||
is_display TINYINT DEFAULT 1 COMMENT '是否展示:0-否,1-是',
|
||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
INDEX idx_activity (activity_id),
|
||
INDEX idx_code (prize_code),
|
||
UNIQUE KEY uk_activity_code (activity_id, prize_code)
|
||
) COMMENT '奖品配置表';
|
||
```
|
||
|
||
## 3. 中奖记录表
|
||
```sql
|
||
CREATE TABLE lottery_record (
|
||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||
record_no VARCHAR(50) UNIQUE NOT NULL COMMENT '记录编号',
|
||
user_id BIGINT NOT NULL COMMENT '用户ID',
|
||
activity_id BIGINT NOT NULL COMMENT '活动ID',
|
||
prize_id BIGINT COMMENT '奖品ID(未中奖为NULL)',
|
||
prize_name VARCHAR(100) COMMENT '奖品名称快照',
|
||
prize_type TINYINT COMMENT '奖品类型快照',
|
||
is_win TINYINT NOT NULL COMMENT '是否中奖:0-未中奖,1-中奖',
|
||
draw_time DATETIME NOT NULL COMMENT '抽奖时间',
|
||
prize_status TINYINT DEFAULT 0 COMMENT '奖品状态:0-待发放,1-已发放,2-发放失败',
|
||
deliver_time DATETIME COMMENT '发放时间',
|
||
remark VARCHAR(500) COMMENT '备注',
|
||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
INDEX idx_user_activity (user_id, activity_id),
|
||
INDEX idx_draw_time (draw_time),
|
||
INDEX idx_activity_win (activity_id, is_win),
|
||
INDEX idx_record_no (record_no)
|
||
) COMMENT '中奖记录表';
|
||
```
|
||
|
||
## 4. 抽奖券表
|
||
```sql
|
||
CREATE TABLE lottery_ticket (
|
||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||
user_id BIGINT NOT NULL COMMENT '用户ID',
|
||
ticket_source VARCHAR(50) COMMENT '来源:SYSTEM-系统发放,ACTIVITY-活动赠送,PURCHASE-购买',
|
||
source_id VARCHAR(50) COMMENT '来源ID',
|
||
total_count INT NOT NULL COMMENT '总数量',
|
||
used_count INT DEFAULT 0 COMMENT '已使用数量',
|
||
remaining_count INT NOT NULL COMMENT '剩余数量',
|
||
expire_time DATETIME COMMENT '过期时间',
|
||
status TINYINT DEFAULT 1 COMMENT '状态:0-已失效,1-正常',
|
||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
INDEX idx_user_status (user_id, status),
|
||
INDEX idx_expire (expire_time)
|
||
) COMMENT '抽奖券表';
|
||
```
|
||
|
||
## 5. 抽奖券使用记录表
|
||
```sql
|
||
CREATE TABLE lottery_ticket_record (
|
||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||
user_id BIGINT NOT NULL COMMENT '用户ID',
|
||
ticket_id BIGINT NOT NULL COMMENT '抽奖券ID',
|
||
change_count INT NOT NULL COMMENT '变动数量(正数增加,负数减少)',
|
||
change_type TINYINT NOT NULL COMMENT '变动类型:1-发放,2-消耗,3-过期,4-退回',
|
||
lottery_record_id BIGINT COMMENT '关联的抽奖记录ID',
|
||
remark VARCHAR(200) COMMENT '备注',
|
||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||
INDEX idx_user (user_id),
|
||
INDEX idx_ticket (ticket_id),
|
||
INDEX idx_lottery_record (lottery_record_id)
|
||
) COMMENT '抽奖券使用记录表';
|
||
```
|
||
|
||
## 6. 用户抽奖次数统计表
|
||
```sql
|
||
CREATE TABLE lottery_user_count (
|
||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||
user_id BIGINT NOT NULL COMMENT '用户ID',
|
||
activity_id BIGINT NOT NULL COMMENT '活动ID',
|
||
draw_date DATE NOT NULL COMMENT '统计日期',
|
||
draw_count INT DEFAULT 0 COMMENT '抽奖次数',
|
||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
UNIQUE KEY uk_user_activity_date (user_id, activity_id, draw_date),
|
||
INDEX idx_user_activity (user_id, activity_id)
|
||
) COMMENT '用户抽奖次数统计表';
|
||
```
|