From 9d1660270272180cd71147d6ddd53d1382643d2e Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期一, 02 十一月 2026 18:00:14 +0800
Subject: [PATCH] merge: 并入远程 Initial commit 作为历史根节点
---
HMI.MenuManage/Util/RoleMenuHelper.cs | 91 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 91 insertions(+), 0 deletions(-)
diff --git a/HMI.MenuManage/Util/RoleMenuHelper.cs b/HMI.MenuManage/Util/RoleMenuHelper.cs
new file mode 100644
index 0000000..999a03d
--- /dev/null
+++ b/HMI.MenuManage/Util/RoleMenuHelper.cs
@@ -0,0 +1,91 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Data;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Markup;
+using DatabaseHelper;
+using HMI.Core.Util;
+using HMI.MenuManage.Entity;
+
+namespace HMI.MenuManage.Util
+{
+ public class RoleMenuHelper
+ {
+ /// <summary>
+ /// 鏍规嵁roleCode鑾峰彇rel鏁版嵁
+ /// </summary>
+ /// <param name="sqliteHelper"></param>
+ /// <param name="roleCode"></param>
+ /// <returns></returns>
+ public static ObservableCollection<RoleMenuRel> SelectRoleMenuTreeData(SqliteHelper sqliteHelper,
+ string roleCode)
+ {
+ ObservableCollection<RoleMenuRel> treeData = new ObservableCollection<RoleMenuRel>();
+ Dictionary<string, RoleMenuRel> cache = new Dictionary<string, RoleMenuRel>();
+ DataTable dt = sqliteHelper.GetDataTable($@"SELECT m.*,t.roleCode,t.menuCode FROM menu AS m
+LEFT JOIN (
+SELECT rel.roleCode,rel.menuCode FROM role AS r
+INNER JOIN role_menu_rel AS rel
+ON r.code = rel.roleCode AND rel.roleCode='{roleCode}'
+) AS t
+ON m.code=t.menuCode
+Order By m.level,m.id;");
+ if (dt != null)
+ {
+ foreach (DataRow dr in dt.Rows)
+ {
+ var menu = new RoleMenuRel
+ {
+ MenuCode = dr["code"].ToString(),
+ RoleCode = roleCode,
+ ParentCode = dr["parentCode"].ToString(),
+ MenuName = dr["name"].ToString(),
+ MenuIcon = dr["iconPath"].ToString(),
+ Selected = !(dr["menuCode"] is System.DBNull),
+ };
+ cache[menu.MenuCode] = menu;
+ if (cache.ContainsKey(menu.ParentCode))
+ {
+ cache[menu.ParentCode].AddChild(menu);
+ }
+ else
+ {
+ treeData.Add(menu);
+ }
+ }
+ }
+ return treeData;
+ }
+
+ public static void SaveRelData(SqliteHelper sqliteHelper, IEnumerable<RoleMenuRel> rels, string roleCode, string firstSql, string lastSql)
+ {
+ List<RoleMenuRel> datas = new List<RoleMenuRel>();
+ GetSelectedMenu(rels, datas);
+ List<string> sqls = new List<string>() {
+ firstSql, $"DELETE FROM role_menu_rel WHERE roleCode='{roleCode}'"
+ };
+ foreach (var data in datas)
+ {
+ sqls.Add($"INSERT INTO role_menu_rel (roleCode,menuCode) VALUES ('{roleCode}','{data.MenuCode}');");
+ }
+ sqls.Add(lastSql);
+ sqliteHelper.ExecuteBatchSql(sqls);
+ }
+
+ public static void GetSelectedMenu(IEnumerable<RoleMenuRel> rels, List<RoleMenuRel> datas)
+ {
+ foreach (var dr in rels)
+ {
+ if (dr.Selected)
+ {
+ datas.Add(dr);
+ }
+ GetSelectedMenu(dr.Children, datas);
+ }
+ }
+
+ }
+}
--
Gitblit v1.9.1