yumi-golang/migrations/005_register_reward_daily_limit.sql

101 lines
4.4 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

CREATE TABLE IF NOT EXISTS `resident_register_reward_config` (
`id` bigint NOT NULL COMMENT '主键ID',
`sys_origin` varchar(32) NOT NULL COMMENT '来源系统',
`enabled` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否启用',
`gold_amount` bigint NOT NULL DEFAULT '0' COMMENT '金币数量',
`reward_group_id` bigint DEFAULT NULL COMMENT '奖励组ID',
`daily_limit` bigint NOT NULL DEFAULT '0' COMMENT '每日发奖份数限制0表示不限',
`create_time` datetime(3) DEFAULT NULL COMMENT '创建时间',
`update_time` datetime(3) DEFAULT NULL COMMENT '更新时间',
`create_user` bigint DEFAULT NULL COMMENT '创建用户',
`update_user` bigint DEFAULT NULL COMMENT '更新用户',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_resident_register_reward_sys_origin` (`sys_origin`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='常驻注册奖励配置';
CREATE TABLE IF NOT EXISTS `resident_register_reward_log` (
`id` bigint NOT NULL COMMENT '主键ID',
`event_id` varchar(128) NOT NULL COMMENT '注册事件ID',
`stream_message_id` varchar(64) NOT NULL DEFAULT '' COMMENT 'Redis Stream消息ID',
`sys_origin` varchar(32) NOT NULL COMMENT '来源系统',
`user_id` bigint NOT NULL COMMENT '用户ID',
`claim_date` varchar(10) NOT NULL DEFAULT '' COMMENT '领取日期,格式 YYYY-MM-DD',
`gold_amount` bigint NOT NULL DEFAULT '0' COMMENT '金币数量',
`reward_group_id` bigint DEFAULT NULL COMMENT '奖励组ID',
`grant_mode` varchar(32) NOT NULL DEFAULT '' COMMENT '发奖决策模式ISSUE_REWARD/QUOTA_EXHAUSTED',
`status` varchar(32) NOT NULL COMMENT '处理状态',
`error_message` varchar(255) NOT NULL DEFAULT '' COMMENT '错误信息',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_register_reward_event` (`event_id`),
KEY `idx_register_reward_sys_user` (`sys_origin`, `user_id`),
KEY `idx_register_reward_claim` (`sys_origin`, `claim_date`, `grant_mode`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='常驻注册奖励处理日志';
SET @current_schema := DATABASE();
SET @add_daily_limit_sql := IF(
NOT EXISTS (
SELECT 1
FROM information_schema.columns
WHERE table_schema = @current_schema
AND table_name = 'resident_register_reward_config'
AND column_name = 'daily_limit'
),
'ALTER TABLE `resident_register_reward_config` ADD COLUMN `daily_limit` bigint NOT NULL DEFAULT 0 COMMENT ''每日发奖份数限制0表示不限'' AFTER `reward_group_id`',
'SELECT 1'
);
PREPARE add_daily_limit_stmt FROM @add_daily_limit_sql;
EXECUTE add_daily_limit_stmt;
DEALLOCATE PREPARE add_daily_limit_stmt;
SET @add_claim_date_sql := IF(
NOT EXISTS (
SELECT 1
FROM information_schema.columns
WHERE table_schema = @current_schema
AND table_name = 'resident_register_reward_log'
AND column_name = 'claim_date'
),
'ALTER TABLE `resident_register_reward_log` ADD COLUMN `claim_date` varchar(10) NOT NULL DEFAULT '''' COMMENT ''领取日期,格式 YYYY-MM-DD'' AFTER `user_id`',
'SELECT 1'
);
PREPARE add_claim_date_stmt FROM @add_claim_date_sql;
EXECUTE add_claim_date_stmt;
DEALLOCATE PREPARE add_claim_date_stmt;
SET @add_grant_mode_sql := IF(
NOT EXISTS (
SELECT 1
FROM information_schema.columns
WHERE table_schema = @current_schema
AND table_name = 'resident_register_reward_log'
AND column_name = 'grant_mode'
),
'ALTER TABLE `resident_register_reward_log` ADD COLUMN `grant_mode` varchar(32) NOT NULL DEFAULT '''' COMMENT ''发奖决策模式ISSUE_REWARD/QUOTA_EXHAUSTED'' AFTER `reward_group_id`',
'SELECT 1'
);
PREPARE add_grant_mode_stmt FROM @add_grant_mode_sql;
EXECUTE add_grant_mode_stmt;
DEALLOCATE PREPARE add_grant_mode_stmt;
SET @add_claim_index_sql := IF(
NOT EXISTS (
SELECT 1
FROM information_schema.statistics
WHERE table_schema = @current_schema
AND table_name = 'resident_register_reward_log'
AND index_name = 'idx_register_reward_claim'
),
'ALTER TABLE `resident_register_reward_log` ADD KEY `idx_register_reward_claim` (`sys_origin`, `claim_date`, `grant_mode`)',
'SELECT 1'
);
PREPARE add_claim_index_stmt FROM @add_claim_index_sql;
EXECUTE add_claim_index_stmt;
DEALLOCATE PREPARE add_claim_index_stmt;