Files
iotlcm/schema/11-seed-menu-align-prod.sql
T
MiFaZhan bc2c7bcc6b init: IotLCM 开源版部署仓
内容:
- docker-compose.yml:14 个基础/业务服务 + 3 个可选 profile(with-mock 挡板、with-bot、with-nginx)
- .env.example:集中管理镜像仓库、口令、端口;必填项缺失时 compose 直接报错退出
- config.example/:10 份配置模板,全部为占位值与注释说明
- schema/:12 个初始化脚本,按文件名顺序由 MySQL initdb 自动执行

脱敏处理:
- 生产/内网 IP、镜像仓库地址、公司名、真实域名全部清除
- 演示账号保留 18 个(出库与划拨依赖账号与部门树的关联),
  昵称/邮箱/手机号/登录IP/头像改为占位或编造值
- 数据库账号与 admin 口令改为初始化时按 .env 注入计算
- 通道模板与 Mock 通道的上游密钥置空
- Mock 通道地址指向 compose 内 onelink-mock 服务

部署时用 --profile with-mock 启动运营商接口挡板,即可在无真实运营商环境时跑通全链路。
2026-10-28 13:40:12 +08:00

73 lines
5.9 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- ============================================
-- 演示环境种子数据:sys_menu 与生产全量对齐(2026-10-27)
--
-- 背景:演示库 sys_menu 420 条,生产 459 条,缺 27 条增量(生产有、演示无),
-- 反向差异 0 条(演示无多余菜单)。缺的包括:
-- · 达量断网 4 个按钮权限(excel:template / excel:submit / range:submit / input:submit)
-- —— 这是"达量断网页面按钮点了 403 / 看不到功能"的直接原因
-- · 全量同步页(fullSyncRuns:view/failures/start/replay/replay:view)5 条
-- · 订单模块(订单目录 + 管理员订单 + 销售订单列表)3 条
-- · 文档中心(含 Web 手册 / OpenAPI 文档)3 条
-- · 财务/流量池/通道/销户等按钮权限 12 条
--
-- 方法:以 perms 为语义键做比对(perms 为空时用 menu_type+menu_name),
-- 生产 ID 与演示 ID 体系不同,故新建菜单占用演示 421-447 段,
-- 父级按语义递归解析到演示现有菜单(0 个悬空)。
--
-- 结果:演示 447 条;与生产逐条比对 —— 缺 0 条、多余 0 条。
-- 数量差 12 = 演示独有的 5 条租户按钮(system:tenant:*)
-- + 生产侧 7 条同 perms 的重复菜单(语义键去重后合并)
--
-- 角色绑定:演示仅 5 个角色,新菜单绑到 2/82/88(原有的全量绑定角色),
-- 与它们各自 190 条的绑定模式一致;role 3/4 是限定角色,不绑。
--
-- 前置知识:超管(role 1) 的菜单可见性走代码分支直接返回全部 status=0 菜单;
-- 但接口鉴权的 accessCodeList 仍需 sys_role_menu 里有该菜单,
-- 否则 normalizeMenuAccessCodes 拿不到 perms → 按钮/功能 403。
--
-- 幂等:先删后插,可重复执行。执行顺序:10 之后(11-)。
-- ============================================
SET NAMES utf8mb4;
USE `db_iotlcm`;
DELETE FROM `sys_menu` WHERE `menu_id` BETWEEN 421 AND 447;
INSERT INTO `sys_menu` (`menu_id`,`menu_name`,`parent_id`,`order_num`,`path`,`component`,`is_frame`,`is_cache`,`menu_type`,`visible`,`status`,`perms`,`icon`,`created_dept`,`created_by`,`created_at`,`remark`) VALUES
(421,'全量同步',2,7,'full-sync','monitor/full-sync/index','1','0','C','0','0','cpm:iot:fullSyncRuns:view','lucide:refresh-cw',100,1,NOW(),'全量同步结果与手动启动'),
(422,'查看失败明细',421,1,'',NULL,'1','0','F','0','0','cpm:iot:fullSyncRuns:failures','#',100,1,NOW(),NULL),
(423,'手动启动同步',421,2,'',NULL,'1','0','F','0','0','cpm:iot:fullSyncRuns:start','#',100,1,NOW(),NULL),
(424,'重投失败卡',421,3,'',NULL,'1','0','F','0','0','cpm:iot:fullSyncRuns:replay','#',100,1,NOW(),NULL),
(425,'查看重投状态',421,4,'',NULL,'1','0','F','0','0','cpm:iot:fullSyncRuns:replay:view','#',100,1,NOW(),NULL),
(426,'订单',196,10,'TOrder',NULL,'1','0','M','0','0',NULL,NULL,100,1,NOW(),NULL),
(427,'管理员订单',426,11,'indexTwo','iotlcm/tOrder/indexTwo','1','0','C','0','0',NULL,'ant-design:appstore-outlined',100,1,NOW(),NULL),
(428,'获取财务审核记录表列表',354,10,'',NULL,'1','0','F','0','0','gen:tFinanceAuditRecord:list',NULL,100,1,NOW(),NULL),
(429,'获取财务申请表列表',349,10,'',NULL,'1','0','F','0','0','gen:tFinanceApply:list',NULL,100,1,NOW(),NULL),
(430,'获取分层分润概览',334,10,'',NULL,'1','0','F','0','0','common:tFinCommissionDetail:getCommissionOverview',NULL,100,1,NOW(),NULL),
(431,'获取SIM流量池套餐配置表列表',411,10,'',NULL,'1','0','F','0','0','iot:tFlowPackageConfig:list',NULL,100,1,NOW(),NULL),
(432,'敏感定价查看',135,15,'',NULL,'1','0','F','0','0','iot:tSimFlowPackagePrice:sensitive:view',NULL,100,1,NOW(),NULL),
(433,'敏感定价维护',135,15,'',NULL,'1','0','F','0','0','iot:tSimFlowPackagePrice:sensitive:edit',NULL,100,1,NOW(),NULL),
(434,'下载批量卡销户Excel模板',257,10,'',NULL,'1','0','F','0','0','iot:tSimCardCancel:excel:template',NULL,100,1,NOW(),NULL),
(435,'提交Excel批量卡销户',257,10,'',NULL,'1','0','F','0','0','iot:tSimCardCancel:excel:submit',NULL,100,1,NOW(),NULL),
(436,'通道测试',119,10,'',NULL,'1','0','F','0','0','iot:tSimChannels:test',NULL,100,1,NOW(),NULL),
(437,'提交批量输入达量断网配置',257,10,'',NULL,'1','0','F','0','0','iot:tSimCardTrafficCutoff:input:submit',NULL,100,1,NOW(),NULL),
(438,'单卡加油包',257,10,'',NULL,'1','0','F','0','0','iot:tSimCardBindPkg:addPackage',NULL,100,1,NOW(),NULL),
(439,'流量池加油包',257,10,'',NULL,'1','0','F','0','0','iot:tSimPoolBindPackage:addPackage',NULL,100,1,NOW(),NULL),
(440,'看订购表/套餐详情',257,10,'',NULL,'1','0','F','0','0','iot:tSimCardBindPkg:view',NULL,100,1,NOW(),NULL),
(441,'下载达量断网配置Excel模板',416,1,'',NULL,'1','0','F','0','0','iot:tSimCardTrafficCutoff:excel:template',NULL,100,1,NOW(),NULL),
(442,'提交Excel批量达量断网配置',416,1,'',NULL,'1','0','F','0','0','iot:tSimCardTrafficCutoff:excel:submit',NULL,100,1,NOW(),NULL),
(443,'提交连号达量断网配置',416,1,'',NULL,'1','0','F','0','0','iot:tSimCardTrafficCutoff:range:submit',NULL,100,1,NOW(),NULL),
(444,'文档中心',0,33,'','/','1','0','C','0','0',NULL,NULL,100,1,NOW(),NULL),
(445,'Web 使用手册',444,1,'/docs/manual/web/',NULL,'0','0','C','0','0',NULL,NULL,100,1,NOW(),NULL),
(446,'OpenAPI 文档',444,2,'/docs/openapi/v3/',NULL,'0','0','C','0','0',NULL,NULL,100,1,NOW(),NULL),
(447,'获取销售订单列表',427,10,'',NULL,'1','0','F','0','0','iot:tOrder:sellList',NULL,100,1,NOW(),NULL);
DELETE FROM sys_role_menu WHERE menu_id BETWEEN 421 AND 447;
INSERT INTO sys_role_menu (tenant_id, role_id, menu_id, data_scope)
SELECT '000000', r.role_id, m.menu_id, '0'
FROM (SELECT 2 AS role_id UNION ALL SELECT 82 UNION ALL SELECT 88) r
CROSS JOIN (SELECT menu_id FROM sys_menu WHERE menu_id BETWEEN 421 AND 447) m;
-- 自检:菜单总数应为 447,新增绑定 81 条
SELECT COUNT(*) AS menu_total FROM `sys_menu`;
SELECT role_id, COUNT(*) AS menus FROM `sys_role_menu` GROUP BY role_id ORDER BY role_id;