-- ====================================================
-- 权限补充脚本：添加代码中已使用但种子数据缺失的权限
-- 可重复执行（幂等）
-- 适用场景：
--   1. 全新初始化 init.sql 后，补充后续版本新增的权限
--   2. 运行 v9_permission_reset.sql 后，恢复被清除的权限
--   3. 任意已运行的数据库，补齐缺失权限
-- ====================================================

-- ----------------------------
-- 1. 数据统计模块（对应 DailyStatController / MonthStatController）
-- ----------------------------
INSERT IGNORE INTO `t_permission` (`id`, `company_id`, `name`, `value`, `pid`, `weight`) VALUES
(NULL, NULL, '数据统计', 'statistics', 0, 6);

-- 获取 statistics 的 ID（兼容 AUTO_INCREMENT 不同步的情况）
SET @stat_pid = (SELECT `id` FROM `t_permission` WHERE `value` = 'statistics' LIMIT 1);

INSERT IGNORE INTO `t_permission` (`id`, `company_id`, `name`, `value`, `pid`, `weight`) VALUES
(NULL, NULL, '日统计列表', 'dailyStat.list', @stat_pid, 1),
(NULL, NULL, '日统计同步', 'dailyStat.sync', @stat_pid, 2),
(NULL, NULL, '月统计列表', 'monthStat.list', @stat_pid, 3),
(NULL, NULL, '月统计同步', 'monthStat.sync', @stat_pid, 4);

-- ----------------------------
-- 2. 停车券模块（对应 ParkingCouponRecordController）
-- ----------------------------
INSERT IGNORE INTO `t_permission` (`id`, `company_id`, `name`, `value`, `pid`, `weight`) VALUES
(NULL, NULL, '停车券管理', 'parkingCouponRecord', 0, 105);

SET @pcr_pid = (SELECT `id` FROM `t_permission` WHERE `value` = 'parkingCouponRecord' LIMIT 1);

INSERT IGNORE INTO `t_permission` (`id`, `company_id`, `name`, `value`, `pid`, `weight`) VALUES
(NULL, NULL, '发放记录', 'parkingCouponRecord.list', @pcr_pid, 1);

-- ----------------------------
-- 3. 将新权限追加到超级管理员角色（role_id=1）
--    先取出当前 permissions，再拼接增量，避免 MySQL 同表子查询限制
-- ----------------------------
SET SESSION group_concat_max_len = 10000;

-- 取出超级管理员当前已有权限
SET @current_perms = (SELECT `permissions` FROM `t_role` WHERE `id` = 1);

-- 拼接尚未包含的新权限值
SET @append_perms = (SELECT GROUP_CONCAT(`value` SEPARATOR '|')
    FROM `t_permission`
    WHERE `value` IN (
        'statistics', 'dailyStat.list', 'dailyStat.sync',
        'monthStat.list', 'monthStat.sync',
        'parkingCouponRecord', 'parkingCouponRecord.list'
    )
    AND FIND_IN_SET(`value`, REPLACE(@current_perms, '|', ',')) = 0
);

-- 如果有新权限才更新
UPDATE `t_role`
SET `permissions` = CONCAT(@current_perms, '|', @append_perms)
WHERE `id` = 1 AND @append_perms IS NOT NULL AND @append_perms != '';

-- ----------------------------
-- 验证（取消注释以检查结果）
-- ----------------------------
-- SELECT COUNT(*) AS perm_count FROM t_permission;          -- 应为 92
-- SELECT `value` FROM t_permission ORDER BY id;
-- SELECT permissions FROM t_role WHERE id = 1;
