From 9912b73c566e149d053d3692a13526977c9e8a56 Mon Sep 17 00:00:00 2001 From: lzh Date: Fri, 24 Apr 2026 14:39:26 +0800 Subject: [PATCH] =?UTF-8?q?feat(iot):=20IoT=20v2.0=20=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E8=BF=81=E7=A7=BB=E8=84=9A=E6=9C=AC=EF=BC=88=E8=A7=84=E5=88=99?= =?UTF-8?q?=E9=93=BE=20+=20=E5=AD=90=E7=B3=BB=E7=BB=9F=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 使用子查询按名称取 parent_id,不写死 ID,兼容不同环境自增序列。 新增: - 规则链管理(父: 规则引擎)+ 5 个权限按钮 + 隐藏编辑器路由 - 子系统管理(父: 设备接入)+ 4 个权限按钮 待补:告警记录 v2(IotAlarmRecordController 补齐后再执行) Co-Authored-By: Claude Sonnet 4.6 (1M context) --- .../migrations/2026-04-24_iot_v2_menus.sql | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 sql/mysql/migrations/2026-04-24_iot_v2_menus.sql diff --git a/sql/mysql/migrations/2026-04-24_iot_v2_menus.sql b/sql/mysql/migrations/2026-04-24_iot_v2_menus.sql new file mode 100644 index 00000000..c2738f20 --- /dev/null +++ b/sql/mysql/migrations/2026-04-24_iot_v2_menus.sql @@ -0,0 +1,53 @@ +-- IoT v2.0 新功能菜单 +-- 说明:不写死 ID,parent_id 通过子查询按名称取,避免不同环境 ID 不一致 +-- 注意:告警记录 v2 (iot/alarm/record/list) 待补 IotAlarmRecordController 后再加 + +-- ───────────────────────────────────────────── +-- 1. 规则链管理(父: 规则引擎) +-- ───────────────────────────────────────────── +INSERT INTO `system_menu` (`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) +VALUES ('规则链管理', '', 2, 3, + (SELECT id FROM (SELECT id FROM system_menu WHERE name = '规则引擎' AND deleted = b'0' LIMIT 1) t), + 'rule-chain', 'fa-solid:project-diagram', 'iot/rule/chain/list', 'RuleChainList', + 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'); + +-- 规则链管理 按钮 +INSERT INTO `system_menu` (`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) +VALUES + ('规则链查询', 'iot:rule:query', 3, 1, (SELECT id FROM (SELECT id FROM system_menu WHERE name = '规则链管理' AND deleted = b'0' LIMIT 1) t), '', '', '', NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), + ('规则链创建', 'iot:rule:create', 3, 2, (SELECT id FROM (SELECT id FROM system_menu WHERE name = '规则链管理' AND deleted = b'0' LIMIT 1) t), '', '', '', NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), + ('规则链更新', 'iot:rule:update', 3, 3, (SELECT id FROM (SELECT id FROM system_menu WHERE name = '规则链管理' AND deleted = b'0' LIMIT 1) t), '', '', '', NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), + ('规则链删除', 'iot:rule:delete', 3, 4, (SELECT id FROM (SELECT id FROM system_menu WHERE name = '规则链管理' AND deleted = b'0' LIMIT 1) t), '', '', '', NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), + ('规则链启用停用', 'iot:rule:update', 3, 5, (SELECT id FROM (SELECT id FROM system_menu WHERE name = '规则链管理' AND deleted = b'0' LIMIT 1) t), '', '', '', NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'); + +-- 规则链编辑器(隐藏路由,供列表页 router.push 跳转) +INSERT INTO `system_menu` (`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) +VALUES ('规则链编辑器', '', 2, 99, + (SELECT id FROM (SELECT id FROM system_menu WHERE name = '规则引擎' AND deleted = b'0' LIMIT 1) t), + 'rule-chain/edit/:id?', '', 'iot/rule/chain/edit', 'RuleChainEdit', + 0, b'0', b'0', b'0', '1', NOW(), '1', NOW(), b'0'); + +-- ───────────────────────────────────────────── +-- 2. 子系统管理(父: 设备接入) +-- ───────────────────────────────────────────── +INSERT INTO `system_menu` (`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) +VALUES ('子系统管理', '', 2, 4, + (SELECT id FROM (SELECT id FROM system_menu WHERE name = '设备接入' AND deleted = b'0' LIMIT 1) t), + 'subsystem', 'fa-solid:layer-group', 'iot/subsystem/list', 'IoTSubsystemList', + 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'); + +-- 子系统管理 按钮 +INSERT INTO `system_menu` (`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) +VALUES + ('子系统查询', 'iot:subsystem:query', 3, 1, (SELECT id FROM (SELECT id FROM system_menu WHERE name = '子系统管理' AND deleted = b'0' LIMIT 1) t), '', '', '', NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), + ('子系统创建', 'iot:subsystem:create', 3, 2, (SELECT id FROM (SELECT id FROM system_menu WHERE name = '子系统管理' AND deleted = b'0' LIMIT 1) t), '', '', '', NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), + ('子系统更新', 'iot:subsystem:update', 3, 3, (SELECT id FROM (SELECT id FROM system_menu WHERE name = '子系统管理' AND deleted = b'0' LIMIT 1) t), '', '', '', NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), + ('子系统删除', 'iot:subsystem:delete', 3, 4, (SELECT id FROM (SELECT id FROM system_menu WHERE name = '子系统管理' AND deleted = b'0' LIMIT 1) t), '', '', '', NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'); + +-- ───────────────────────────────────────────── +-- TODO: 告警记录 v2(待补 IotAlarmRecordController) +-- ───────────────────────────────────────────── +-- 前端: iot/alarm/record/list (IoTAlarmRecordList) +-- 接口: /iot/alarm-record/* — 需先创建后端 Controller +-- 父菜单: 告警中心 (sort=3) +-- 按钮权限: iot:alarm-record:query / ack / clear / archive