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/Model/RoleManageModel.cs |  122 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 122 insertions(+), 0 deletions(-)

diff --git a/HMI.MenuManage/Model/RoleManageModel.cs b/HMI.MenuManage/Model/RoleManageModel.cs
new file mode 100644
index 0000000..65b1e16
--- /dev/null
+++ b/HMI.MenuManage/Model/RoleManageModel.cs
@@ -0,0 +1,122 @@
+锘縰sing HMI.Core.Entity;
+using HMI.Core.Util;
+using HMI.MenuManage.Entity;
+using HMI.MenuManage.Util;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Data;
+using System.IO;
+
+namespace HMI.MenuManage.Model
+{
+    public class RoleManageModel : NotifyBase
+    {
+        public SqliteHelper sqliteHelper;
+
+        private ObservableCollection<RoleData> _DataSource;
+
+        public ObservableCollection<RoleData> DataSource
+        {
+            get { return _DataSource; }
+            set { Set(ref _DataSource, value); }
+        }
+
+        private RoleData _SelectedValue;
+        public RoleData SelectedValue
+        {
+            get => _SelectedValue;
+            set
+            {
+                Set(ref _SelectedValue, value);
+                LoadRelData(value);
+            }
+        }
+
+        private ObservableCollection<RoleMenuRel> _TreeDataSource;
+
+        public ObservableCollection<RoleMenuRel> TreeDataSource
+        {
+            get { return _TreeDataSource; }
+            set { Set(ref _TreeDataSource, value); }
+        }
+
+        public RoleManageModel()
+        {
+            if (!File.Exists(PathHelper.DatabasePath))
+            {
+                SqliteHelper.CreateDatabase(PathHelper.DatabasePath);
+            }
+            sqliteHelper = new SqliteHelper(PathHelper.DatabasePath);
+            sqliteHelper.ExecuteSql(@"CREATE TABLE IF NOT EXISTS role (
+                    id INTEGER PRIMARY KEY AUTOINCREMENT,
+                    code TEXT NOT NULL,
+                    name TEXT,
+                    UNIQUE(code)
+                    );
+CREATE TABLE IF NOT EXISTS role_menu_rel (
+                    id INTEGER PRIMARY KEY AUTOINCREMENT,
+                    roleCode TEXT NOT NULL,
+                    menuCode TEXT NOT NULL,
+                    UNIQUE(roleCode,menuCode)
+                    );
+");
+        }
+
+        public void LoadData()
+        {
+            ObservableCollection<RoleData> data = new ObservableCollection<RoleData>();
+            DataTable dt = sqliteHelper.GetDataTable("SELECT * FROM role Order By id;");
+            if (dt != null)
+            {
+                foreach (DataRow dr in dt.Rows)
+                {
+                    var menu = new RoleData
+                    {
+                        Id = dr["id"].ToString(),
+                        Code = dr["code"].ToString(),
+                        Name = dr["name"].ToString()
+                    };
+                    data.Add(menu);
+                }
+            }
+            DataSource = data;
+        }
+
+        public void LoadRelData(RoleData data)
+        {
+            if (data == null)
+            {
+                TreeDataSource.Clear();
+                return;
+            }
+            TreeDataSource = RoleMenuHelper.SelectRoleMenuTreeData(sqliteHelper, data.Code);
+        }
+
+        public void DelSingleData(RoleData data)
+        {
+            sqliteHelper.ExecuteBatchSql(new List<string>{
+            $"DELETE FROM role WHERE id = '{data.Id}'",
+            $"DELETE FROM role_menu_rel WHERE roleCode = '{data.Code}'",
+            $"DELETE FROM user_role_rel WHERE roleCode = '{data.Code}'"
+            });
+        }
+
+        public void DeleteRoleByCodes(IEnumerable<string> codes)
+        {
+            List<string> sqls = new List<string>();
+            foreach (string code in codes)
+            {
+                sqls.Add($"DELETE FROM role WHERE code = '{code}';");
+                sqls.Add($"DELETE FROM role_menu_rel WHERE roleCode = '{code}';");
+                sqls.Add($"DELETE FROM user_role_rel WHERE roleCode = '{code}';");
+            }
+            sqliteHelper.ExecuteBatchSql(sqls);
+        }
+
+        public void SaveRelData(RoleData role)
+        {
+            if (role == null) return;
+            RoleMenuHelper.SaveRelData(sqliteHelper, TreeDataSource, role.Code, null, null);
+        }
+    }
+}

--
Gitblit v1.9.1