From fe1ab342429ddc06f9afa4d570626da43787f74d Mon Sep 17 00:00:00 2001 From: yanpeng200212 <32453@DESKTOP-HTJ2T0B> Date: Mon, 12 Oct 2026 16:37:07 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BD=A6=E9=97=B4=E7=8F=AD=E6=AC=A1=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E8=B0=83=E6=95=B4=E5=88=B0=E3=80=8C=E7=94=9F=E4=BA=A7?= =?UTF-8?q?-=E5=89=8D=E7=BC=AB=E3=80=8D=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 菜单归属由「基础数据」改为「生产-前缫」,路径 /base/chejianbanci → /prod/qianxian/chejianbanci - 权限标识 base:chejianbanci:list → prod:chejianbanci:list - 清理历史遗留的旧菜单与旧权限单元 - 页面组件路径保持 base/chejianbanci/index 不变,前端无需改动 --- .../F9WebAiTest.Api/f9_web_ai_test_rbac.db | Bin 1159168 -> 1163264 bytes .../Data/DbSeeder.cs | 40 ++++++++++-------- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/backend/F9WebAiTest.Api/f9_web_ai_test_rbac.db b/backend/F9WebAiTest.Api/f9_web_ai_test_rbac.db index 5831c9482f7c84ba04e2e8d454b41000f4fd7890..178eabe60608a448115c2c7e2e8497bedb40f3c8 100644 GIT binary patch delta 1935 zcmaKtZ%h+s9LMkI-vjYz;x-gi7BJgjw9nl=cfErcsaUJXP-v?W6NQ!nMXiER#5cCv zj9D}p#JJm{E}2o2!TvFp)m$9YWP7zNNawN_W@By+Hv@6oizQ?)w%L9!6w}4$TP}{r%bZ-pP9*FVCYp@$`a?<522}u(iUf ze|7qD*a~HXvO_sCm&4A;L(6LFlhQ})PYmrCNcdZa`WouD4b*pSJ{}aJp*`ypT^l!=qDmQ(^&t~cQ4!_V)8#$} zDj%u{VR~62m%6~JzE&qAucjh{ia+WaLoU@Lf zogX-pjxonEN3FwR|H^*OzONu?d(QT!^^r}py$qXq&FXN&VkYM&)R7>wdL0;%YBV~-`-q=J|xgCvyl{0hB9Yz9G>%uB zjdEs+vBL5C;Aa94BR35-E&I0VnOu5Nl(B$}!7s)@%c|pGX*09FAa-vOtOdvf1L;#EMunG#yd?_c| zG`Ur!1^{bANKe~RMzrai8DK%;IC*(awCPJZet3lg-)2y%^^s4%q0%AamK$x1kk$Q=oCM-qo4%}Hfv|Dgox9OQb%zJuGF!v~X%A)jvubw>uH4N_tt*$`;i tDfzY@k2XgK0`Vd54u4gwD}0da7y6>nV5iUDHSqY0{GX;M^A?_O{TET2Pj>(S delta 395 zcmZo@aBq0vHbI(o2?GP8^h5=F#w8mQ&g(KRZZ^rBRHH{~-eqOy&R0 z|Be46{~P}2{13T`w@YncI>^sf=;Z4jWxW02ekO$rY^06%nuYI;=A(IFb zw|-J$aq9G{P!<&y5UYJrC<_p?0x=s9vu|G%%8~SnS%Oh{I=cg>(PSZmSMAD8$KrFCb*-`MG9~*ZWgBUkE&`*NeOx*TB$6w}R*8{u#$n=9#1!bnM zn=QyT-C(vLKf5ki`2BRo5KhVIt7i*xDq9+wnVCf~KIz)B!9jq5Pn$t>^^)sAFLN=t Qg1yYiXtce1wqU6U0DR?rm;e9( diff --git a/backend/F9WebAiTest.Infrastructure/Data/DbSeeder.cs b/backend/F9WebAiTest.Infrastructure/Data/DbSeeder.cs index b313243..5778f62 100644 --- a/backend/F9WebAiTest.Infrastructure/Data/DbSeeder.cs +++ b/backend/F9WebAiTest.Infrastructure/Data/DbSeeder.cs @@ -82,8 +82,7 @@ public static class DbSeeder // 6.68 生产模块(按工序拆分:生产-前缫 / 生产-后缫) SeedProdMenus(fsql, snowflake); - // 6.69 车间班次菜单(挂在"基础数据"目录下)+ 修正前缫部门的职责类型 - SeedChejianBanciMenus(fsql, snowflake); + // 6.69 修正前缫部门的职责类型(车间班次菜单随"生产-前缫"一起处理) FixQianxianDutyType(fsql); // 6.7 为菜单创建权限单元(Permission),并修正旧菜单权限关联(统一权限模型) @@ -675,10 +674,30 @@ public static class DbSeeder } // 2) 两个一级目录 + 各自页面菜单 + // 车间班次原先挂在"基础数据"目录下,现归入"生产-前缫" + var legacyChejianbanci = fsql.Select().Where(m => m.Path == "/base/chejianbanci").First(); + if (legacyChejianbanci != null) + { + fsql.Ado.ExecuteNonQuery($"DELETE FROM sys_rbac_role_permissions WHERE permission_id = {legacyChejianbanci.Id}"); + fsql.Ado.ExecuteNonQuery($"DELETE FROM sys_rbac_menus WHERE id = {legacyChejianbanci.Id}"); + Console.WriteLine("[DbSeeder] 已清理旧菜单 /base/chejianbanci(车间班次移入生产-前缫)"); + } + + // 一并清理旧菜单遗留的权限单元(权限标识已从 base:chejianbanci:list 改为 prod:chejianbanci:list) + var legacyPerms = fsql.Ado.ExecuteDataTable("SELECT id FROM sys_rbac_permissions WHERE code = 'base:chejianbanci:list'"); + foreach (DataRow permRow in legacyPerms.Rows) + { + var permId = Convert.ToInt64(permRow["id"]); + fsql.Ado.ExecuteNonQuery($"DELETE FROM sys_rbac_role_permissions WHERE permission_id = {permId}"); + fsql.Ado.ExecuteNonQuery($"DELETE FROM sys_rbac_permissions WHERE id = {permId}"); + Console.WriteLine("[DbSeeder] 已清理旧权限单元 base:chejianbanci:list"); + } + EnsureTopMenuWithChildren(fsql, snowflake, "/prod/qianxian", "生产-前缫", "Cpu", 5, new (string Name, string Path, string Component, string Permission, string Icon, int Sort)[] { - ("落丝记录", "/prod/qianxian/lsjl", "prod/lsjl/index", "prod:lsjl:list", "Document", 1) + ("落丝记录", "/prod/qianxian/lsjl", "prod/lsjl/index", "prod:lsjl:list", "Document", 1), + ("车间班次", "/prod/qianxian/chejianbanci", "base/chejianbanci/index", "prod:chejianbanci:list", "Timer", 2) }); EnsureTopMenuWithChildren(fsql, snowflake, "/prod/houxian", "生产-后缫", "DataLine", 6, @@ -767,21 +786,6 @@ public static class DbSeeder } } - /// 车间班次菜单(挂在"基础数据"目录下) - private static void SeedChejianBanciMenus(IFreeSql fsql, ISnowflakeIdGenerator snowflake) - { - try - { - EnsureBaseDataMenu(fsql, snowflake, "/base/chejianbanci", "车间班次", - "base/chejianbanci/index", "base:chejianbanci:list", "Timer", 11); - Console.WriteLine("[DbSeeder] 车间班次菜单已就绪"); - } - catch (Exception ex) - { - Console.WriteLine($"[DbSeeder] 车间班次菜单种子跳过:{ex}"); - } - } - /// /// 修正前缫部门的职责类型:历史数据迁移时 duty_type 统一写成了"其他"(5), /// 而车间班次等模块需要按职责类型(前缫=25)筛选部门。