-- ============================================================
-- 官方日Roll定时任务 + 机器人管理页面  一次性数据库脚本
-- 目标库：ruoyi 业务库（与 tt_roll / tt_user / sys_menu / sys_job 同库）
-- 说明：执行一次即可；执行后请【重启后端】，随后在"系统监控-定时任务"可见"官方日Roll生成"。
-- ============================================================

-- ------------------------------------------------------------
-- 1) 官方周期Roll房配置表
-- ------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `tt_official_roll_config` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '配置ID',
  `config_name` varchar(64) NOT NULL DEFAULT '' COMMENT '配置标识',
  `jackpot_id` int DEFAULT NULL COMMENT '奖池ID(tt_roll_jackpot.jackpot_id)',
  `period_type` varchar(16) NOT NULL DEFAULT 'DAILY' COMMENT '周期类型 DAILY每日/WEEKLY每周',
  `room_name` varchar(64) NOT NULL DEFAULT '' COMMENT '生成的房间名称',
  `description` varchar(255) DEFAULT '' COMMENT '房间描述',
  `roll_password` varchar(32) DEFAULT '' COMMENT '房间密码,为空则无密码',
  `min_recharge` decimal(10,2) DEFAULT '0.00' COMMENT '充值门槛,0为无门槛',
  `people_num` int DEFAULT '50' COMMENT '人数上限',
  `robot_num` int DEFAULT '0' COMMENT '每次自动加入的机器人数量,0则不加',
  `cdk_count` int DEFAULT '0' COMMENT '每次自动创建房间生成的CDK数量,0则不启用CDK',
  `sort_by` int DEFAULT '0' COMMENT '排序',
  `status` char(1) DEFAULT '0' COMMENT '状态 0启用 1停用',
  `last_generate_time` datetime DEFAULT NULL COMMENT '上次生成时间',
  `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `del_flag` char(1) DEFAULT '0' COMMENT '删除标志 0存在 2删除',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='官方周期Roll房配置' ROW_FORMAT=DYNAMIC;

-- 若 tt_official_roll_config 表此前已创建（无 cdk_count 列），执行下句补列；全新执行本脚本已含该列，可跳过：
-- ALTER TABLE `tt_official_roll_config` ADD COLUMN `cdk_count` int DEFAULT '0' COMMENT '每次自动创建房间生成的CDK数量,0则不启用CDK';

-- ------------------------------------------------------------
-- 2) tt_roll 增加 official_config_id 列（标记房间由哪条配置生成，用于每日幂等）
--    注意：MySQL 不支持 ADD COLUMN IF NOT EXISTS，若该列已存在请跳过本句。
-- ------------------------------------------------------------
ALTER TABLE `tt_roll`
  ADD COLUMN `official_config_id` int DEFAULT NULL COMMENT '官方周期Roll配置ID(tt_official_roll_config.id),手动创建为NULL';

-- ------------------------------------------------------------
-- 3) 注册定时任务到"系统监控-定时任务"：每天10点创建官方日Roll房并自动加入机器人
-- ------------------------------------------------------------
SET @jobId = (SELECT IFNULL(MAX(job_id), 100) + 1 FROM sys_job);
INSERT INTO `sys_job`(`job_id`,`job_name`,`job_group`,`invoke_target`,`cron_expression`,`misfire_policy`,`concurrent`,`status`,`create_by`,`create_time`,`remark`)
VALUES (@jobId, '官方日Roll生成', 'DEFAULT', 'officialRollTask.generateDailyRolls()', '0 0 10 * * ?', '3', '1', '0', 'admin', NOW(), '每天10点为启用的日Roll配置自动创建官方Roll房并加入机器人');

-- ------------------------------------------------------------
-- 4) 菜单：机器人管理（挂"用户管理"下）、日Roll配置（挂"Roll房设置"下）
--    父菜单按名称查找；若你的父菜单名称不同，请调整下面 menu_name 的匹配值。
--    若父菜单未找到(@xxxId 为 NULL)，菜单将挂到顶级(parent_id=0)，可在"菜单管理"里再拖动调整。
-- ------------------------------------------------------------
SET @userMgrId = (SELECT menu_id FROM (SELECT menu_id FROM sys_menu WHERE menu_name = '用户管理' AND menu_type = 'M' ORDER BY menu_id LIMIT 1) t);
SET @rollMgrId = (SELECT menu_id FROM (SELECT menu_id FROM sys_menu WHERE menu_name = 'Roll房设置' AND menu_type = 'M' ORDER BY menu_id LIMIT 1) t);
SET @menuBase = (SELECT IFNULL(MAX(menu_id), 2000) FROM sys_menu);

INSERT INTO `sys_menu`(`menu_id`,`menu_name`,`parent_id`,`order_num`,`path`,`component`,`query`,`is_frame`,`is_cache`,`menu_type`,`visible`,`status`,`perms`,`icon`,`create_by`,`create_time`)
VALUES (@menuBase + 1, '机器人管理', IFNULL(@userMgrId, 0), 5, 'robotUser', 'skins/robotUser/index', '', 1, 0, 'C', '0', '0', 'admin:robot:list', 'user', 'admin', NOW());

INSERT INTO `sys_menu`(`menu_id`,`menu_name`,`parent_id`,`order_num`,`path`,`component`,`query`,`is_frame`,`is_cache`,`menu_type`,`visible`,`status`,`perms`,`icon`,`create_by`,`create_time`)
VALUES (@menuBase + 2, '日Roll配置', IFNULL(@rollMgrId, 0), 9, 'officialRollConfig', 'skins/ttRoll/officialRollConfig', '', 1, 0, 'C', '0', '0', 'admin:officialRollConfig:list', 'time', 'admin', NOW());

-- ============================================================
-- 完成。若为非 admin 角色，请在"角色管理"里为角色勾选以上两个菜单权限。
-- ============================================================
