|
|
@@ -0,0 +1,66 @@
|
|
|
+-- ====================================================
|
|
|
+-- 权限补充脚本:添加代码中已使用但种子数据缺失的权限
|
|
|
+-- 可重复执行(幂等)
|
|
|
+-- 适用场景:
|
|
|
+-- 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;
|