admin_system/lajiao_java/sql/DDL/DDL.sql

204 lines
9.5 KiB
MySQL
Raw Permalink Normal View History

2026-03-13 08:26:58 +00:00
create table lottery_activity
(
activity_id bigint auto_increment comment '活动id'
primary key,
activity_name varchar(100) null comment '活动名称',
start_time datetime null comment '开始时间',
end_time datetime null comment '结束时间',
description text null comment '活动描述',
activity_image varchar(255) null comment '活动图片url',
create_time datetime null comment '创建时间',
update_time datetime null comment '更新时间',
is_active tinyint default 1 null comment '是否启用1-启用0-禁用)'
)
comment '抽奖活动表' collate = utf8mb4_unicode_ci;
create table lottery_activity_award_rela
(
id bigint auto_increment comment '关联id'
primary key,
activity_id bigint not null comment '活动id',
award_id bigint not null comment '奖项id',
create_time datetime default CURRENT_TIMESTAMP null comment '创建时间',
update_time datetime default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP comment '更新时间',
constraint uk_activity_award
unique (activity_id, award_id)
)
comment '活动奖项关联表';
create index idx_activity_id
on lottery_activity_award_rela (activity_id);
create index idx_award_id
on lottery_activity_award_rela (award_id);
create table lottery_award
(
award_id bigint auto_increment comment '奖项id'
primary key,
award_name varchar(100) not null comment '奖项名称',
award_level int default 1 null comment '奖项等级1-一等奖2-二等奖...',
card_nums int default 1 null comment '每个奖项的卡片数量',
valid_days int default 7 null comment '有效天数',
probability varchar(50) default '' null comment '中奖概率(百分比)',
award_image varchar(500) default '' null comment '奖项图片URL',
description varchar(500) default '' null comment '奖项描述',
status tinyint default 1 null comment '奖项状态0-禁用 1-启用',
create_time datetime default CURRENT_TIMESTAMP null comment '创建时间',
update_time datetime default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP comment '更新时间'
)
comment '抽奖奖项表';
create table lottery_card
(
card_id bigint auto_increment comment '卡片id'
primary key,
card_no varchar(32) null comment '卡片编号(唯一)',
batch_no varchar(32) null comment '批次号',
award_id bigint null comment '关联的奖项id',
status tinyint default 0 null comment '卡片状态0-未领取 1-已领取未使用 2-已使用 3-已过期',
user_id bigint null comment '领取用户id未领取时为空',
receive_time datetime null comment '领取时间',
expire_time datetime null comment '过期时间',
use_time datetime null comment '使用时间(兑换)',
exchange_id int null comment '兑换id(当卡片被用来兑换奖品时填入)',
create_time datetime default CURRENT_TIMESTAMP null comment '创建时间',
update_time datetime default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP comment '更新时间',
card_name varchar(32) null comment '卡片名称'
)
comment '抽奖卡片实例表';
create index idx_award_id
on lottery_card (award_id);
create index idx_batch_no
on lottery_card (batch_no);
create index idx_exchange_id
on lottery_card (exchange_id);
create index idx_expire_time
on lottery_card (expire_time);
create index idx_status
on lottery_card (status);
create index idx_user_id
on lottery_card (user_id);
create table lottery_exchange_record
(
exchange_id bigint auto_increment comment '兑换id'
primary key,
user_id bigint null comment '用户id',
activity_id bigint null comment '抽奖活动Id',
award_id bigint null comment '奖品id',
award_name varchar(100) null comment '奖品名称',
exchange_time datetime null comment '兑换时间',
card_num int null comment '卡片消耗数量',
assert_type int null comment '兑换的资产类型',
change_money decimal(10, 2) default 0.00 null comment '兑换的资产数量',
description varchar(500) null comment '描述',
create_time datetime default CURRENT_TIMESTAMP null comment '创建时间',
update_time datetime default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP comment '更新时间'
)
comment '兑换记录表' collate = utf8mb4_unicode_ci;
create index idx_activity_id
on lottery_exchange_record (activity_id);
create index idx_award_id
on lottery_exchange_record (award_id);
create index idx_user_id
on lottery_exchange_record (user_id);
create table lottery_points_record
(
id bigint auto_increment comment '记录id'
primary key,
user_id bigint null comment '用户id',
points int null comment '积分变动数量(正数为增加,负数为减少)',
point_type int null comment '积分类型1-消费配送2-兑换消耗3-活动奖励4-其他)',
record_id bigint null comment '抽奖记录id',
description varchar(255) null comment '积分变动描述',
create_time datetime null comment '创建时间',
update_time datetime null comment '更新时间',
current_points int null comment '当前剩余积分',
points_before int null comment '变动前积分',
points_after int null comment '变动后积分'
)
comment '积分记录表' collate = utf8mb4_unicode_ci;
create index idx_record_id
on lottery_points_record (record_id);
create index idx_user_id
on lottery_points_record (user_id);
create table lottery_points_rule
(
rule_id int auto_increment comment '规则id'
primary key,
rule_name varchar(100) null comment '规则名称',
points_type int null comment '积分类型1-抽奖获得2-兑换消耗3-活动奖励)',
points_value int null comment '积分值',
description text null comment '规则描述',
is_active tinyint default 1 null comment '是否启用1-启用0-禁用)',
create_time datetime null comment '创建时间',
update_time datetime null comment '更新时间',
start_time datetime null comment '开始时间',
end_time datetime null comment '结束时间'
)
comment '积分规则表' collate = utf8mb4_unicode_ci;
create table lottery_probability_segment
(
segment_id bigint auto_increment comment '区间配置ID'
primary key,
activity_id bigint not null comment '活动ID',
segment_size int default 25000 not null comment '每个区间的大小',
award_level int not null comment '奖项等级1=省,2=地级市,3=县级市,4=自治县,5=县,6=阳光普照)',
quota_per_segment int not null comment '每个区间内该等级奖项的配额',
description varchar(255) null comment '描述',
create_time datetime default CURRENT_TIMESTAMP null comment '创建时间',
update_time datetime default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP comment '更新时间'
)
comment '概率区间配置表(防止奖项扎堆)' charset = utf8mb4;
create index idx_activity
on lottery_probability_segment (activity_id);
create index idx_activity_level
on lottery_probability_segment (activity_id, award_level);
create table lottery_record
(
record_id bigint auto_increment comment '记录id'
primary key,
activity_id bigint null comment '活动ID',
user_id bigint null comment '用户id',
award_id bigint null comment '奖项id',
batch_no varchar(64) null comment '批次号(同一次抽奖的多个结果)',
draw_time datetime null comment '抽奖时间',
is_win tinyint null comment '是否中奖1-中奖0-未中奖)',
points_cost int default 0 null comment '本次消耗积分',
points_gained int default 0 null comment '获得积分',
create_time datetime null comment '创建时间',
update_time datetime null comment '更新时间'
)
comment '抽奖记录表' collate = utf8mb4_unicode_ci;
create index idx_activity_user
on lottery_record (activity_id, user_id);
create index idx_award_id
on lottery_record (award_id);
create index idx_batch_no
on lottery_record (batch_no);
create index idx_user_id
on lottery_record (user_id);