20260821_add_mini_program_settings.sql 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. -- ============================================================
  2. -- 小程序系统设置 → 系统设置
  3. -- 日期: 2026-08-21
  4. -- 说明: 新增系统设置单例配置及读写权限
  5. -- ============================================================
  6. CREATE TABLE IF NOT EXISTS `sa_mini_program_settings` (
  7. `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '编号,固定为 1',
  8. `settings` MEDIUMTEXT NOT NULL COMMENT '小程序系统设置 JSON',
  9. `created_by` INT(11) NULL COMMENT '创建者',
  10. `updated_by` INT(11) NULL COMMENT '更新者',
  11. `create_time` DATETIME(0) NULL COMMENT '创建时间',
  12. `update_time` DATETIME(0) NULL COMMENT '更新时间',
  13. `delete_time` DATETIME(0) NULL COMMENT '删除时间',
  14. PRIMARY KEY (`id`)
  15. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='小程序系统设置';
  16. SET @mini_program_settings_menu_id = (
  17. SELECT `id` FROM `sa_system_menu`
  18. WHERE `code` = 'MiniProgramSettings' AND `delete_time` IS NULL
  19. ORDER BY `id` DESC LIMIT 1
  20. );
  21. INSERT INTO `sa_system_menu` (`parent_id`, `name`, `code`, `slug`, `type`, `method`, `sort`, `is_iframe`, `is_keep_alive`, `is_hidden`, `is_fixed_tab`, `is_full_page`, `generate_id`, `status`, `created_by`, `updated_by`, `create_time`, `update_time`)
  22. SELECT @mini_program_settings_menu_id, '读取小程序系统设置', 'MiniProgramSettingsRead', 'core:miniProgram:settings:read', 3, 'GET', 100, 2, 2, 2, 2, 2, 0, 1, 1, 1, NOW(), NOW()
  23. WHERE @mini_program_settings_menu_id IS NOT NULL AND NOT EXISTS (SELECT 1 FROM `sa_system_menu` WHERE `slug` = 'core:miniProgram:settings:read' AND `delete_time` IS NULL);
  24. INSERT INTO `sa_system_menu` (`parent_id`, `name`, `code`, `slug`, `type`, `method`, `sort`, `is_iframe`, `is_keep_alive`, `is_hidden`, `is_fixed_tab`, `is_full_page`, `generate_id`, `status`, `created_by`, `updated_by`, `create_time`, `update_time`)
  25. SELECT @mini_program_settings_menu_id, '保存小程序系统设置', 'MiniProgramSettingsUpdate', 'core:miniProgram:settings:update', 3, 'PUT', 90, 2, 2, 2, 2, 2, 0, 1, 1, 1, NOW(), NOW()
  26. WHERE @mini_program_settings_menu_id IS NOT NULL AND NOT EXISTS (SELECT 1 FROM `sa_system_menu` WHERE `slug` = 'core:miniProgram:settings:update' AND `delete_time` IS NULL);
  27. INSERT INTO `sa_system_role_menu` (`role_id`, `menu_id`)
  28. SELECT DISTINCT parent_role.`role_id`, permission_menu.`id`
  29. FROM `sa_system_role_menu` parent_role
  30. INNER JOIN `sa_system_menu` parent_menu ON parent_menu.`id` = parent_role.`menu_id` AND parent_menu.`code` = 'MiniProgramSettings' AND parent_menu.`delete_time` IS NULL
  31. INNER JOIN `sa_system_menu` permission_menu ON permission_menu.`parent_id` = parent_menu.`id` AND permission_menu.`slug` LIKE 'core:miniProgram:settings:%' AND permission_menu.`delete_time` IS NULL
  32. LEFT JOIN `sa_system_role_menu` existing_role ON existing_role.`role_id` = parent_role.`role_id` AND existing_role.`menu_id` = permission_menu.`id`
  33. WHERE existing_role.`id` IS NULL;