alter table ticket_package
|
add column total_quantity int not null default 0 comment '票包配置数量' after package_name;
|
|
create table if not exists ticket_package_merchant (
|
id bigint not null auto_increment,
|
package_id bigint not null comment '票包ID',
|
merchant_id bigint not null comment '适用商家ID',
|
sort_no int not null default 0 comment '排序',
|
created_at datetime not null default current_timestamp,
|
updated_at datetime not null default current_timestamp on update current_timestamp,
|
deleted tinyint not null default 0,
|
primary key (id),
|
unique key uk_ticket_package_merchant (package_id, merchant_id),
|
key idx_ticket_package_merchant_package (package_id),
|
key idx_ticket_package_merchant_merchant (merchant_id)
|
) engine=InnoDB default charset=utf8mb4 comment='票包适用商家';
|
|
create table if not exists ticket_package_level_rule (
|
id bigint not null auto_increment,
|
package_id bigint not null comment '票包ID',
|
talent_level varchar(64) not null comment '人才卡等级',
|
enabled tinyint not null default 1 comment '是否启用',
|
claimable_count int not null default 1 comment '当前等级可领数量',
|
reset_cycle varchar(32) not null default '每天' comment '重置周期:每天/每周/每月/每年',
|
created_at datetime not null default current_timestamp,
|
updated_at datetime not null default current_timestamp on update current_timestamp,
|
deleted tinyint not null default 0,
|
primary key (id),
|
unique key uk_ticket_package_level_rule (package_id, talent_level),
|
key idx_ticket_package_level_rule_package (package_id)
|
) engine=InnoDB default charset=utf8mb4 comment='票包人才等级领取规则';
|
|
update ticket_package p
|
set p.total_quantity = (
|
select count(*)
|
from ticket_package_code c
|
where c.package_id = p.id
|
and c.deleted = 0
|
)
|
where p.total_quantity = 0;
|
|
insert into ticket_package_merchant(package_id, merchant_id, sort_no)
|
select p.id, p.merchant_id, 0
|
from ticket_package p
|
where p.deleted = 0
|
and p.merchant_id is not null
|
and not exists (
|
select 1
|
from ticket_package_merchant pm
|
where pm.package_id = p.id
|
and pm.merchant_id = p.merchant_id
|
);
|
|
insert into ticket_package_level_rule(package_id, talent_level, enabled, claimable_count, reset_cycle)
|
select p.id,
|
levels.talent_level,
|
case
|
when coalesce(p.talent_levels, '') = '' then 1
|
when instr(p.talent_levels, levels.talent_level) > 0 then 1
|
else 0
|
end,
|
greatest(coalesce(p.per_user_limit, r.claimable_count, 1), 1),
|
coalesce(nullif(r.reset_cycle, ''), '每天')
|
from ticket_package p
|
join (
|
select '卓越人才卡' as talent_level
|
union all select '杰出人才卡'
|
union all select '菁英人才卡'
|
) levels
|
left join movie_ticket_rule r on r.talent_level = levels.talent_level
|
where p.deleted = 0
|
and not exists (
|
select 1
|
from ticket_package_level_rule pr
|
where pr.package_id = p.id
|
and pr.talent_level = levels.talent_level
|
);
|