alielie
2025-05-20 99df058a665ea04065a23e729ec79a2f23f79881
HMI.Base/PluginLoader.cs
@@ -62,6 +62,7 @@
        }
        private IPluginContainer pluginContainer;
        public void LoadMenuAndPlugin(IPluginContainer container, Dispatcher dispatcher)
        {
            pluginContainer = container;
@@ -76,6 +77,7 @@
                });
            }
        }
        private void LoadChildrenMenu()
        {
            foreach (var menu in Plugins)
@@ -97,31 +99,36 @@
                        {
                            string dllPath = Path.Combine(PluginFolder, menu.DllPath);
                            Assembly ass = Assembly.LoadFrom(dllPath);
                            var tss = ass.GetTypes();
                            Type ClassType = ass.GetType(menu.ClassName);
                            object Instance = Activator.CreateInstance(ClassType);
                            menu.Content = Instance;
                            if (Instance is IPlugin plugin)
                            {
                                plugin.SetLogger(LogManager.GetLogger(menu.Code));
                                string configFolder = Path.Combine(PathHelper.ConfigFolder, menu.Code);
                                if (!Directory.Exists(configFolder))
                            }
                            else
                            {
                                plugin = new PluginPackage(Instance);
                            }
                            plugin.SetLogger(LogManager.GetLogger(menu.Code));
                            string configFolder = Path.Combine(PathHelper.ConfigFolder, menu.Code);
                            if (!Directory.Exists(configFolder))
                            {
                                Directory.CreateDirectory(configFolder);
                            }
                            plugin.SetBaseFolder(configFolder);
                            plugin.InitFinish();
                            pluginContainer.OnCloseEvent += plugin.OnClose;
                            pluginContainer.DoCloseEvent += plugin.DoClose;
                            Type SettingType = ass.GetType($"{menu.ClassName}_Setting");
                            if (SettingType != null)
                            {
                                object SettingInstance = Activator.CreateInstance(SettingType);
                                if (SettingInstance is IFolderOwner fo)
                                {
                                    Directory.CreateDirectory(configFolder);
                                    fo.SetBaseFolder(configFolder);
                                }
                                plugin.SetBaseFolder(configFolder);
                                plugin.InitFinish();
                                pluginContainer.OnCloseEvent += plugin.OnClose;
                                pluginContainer.DoCloseEvent += plugin.DoClose;
                                Type SettingType = ass.GetType($"{menu.ClassName}_Setting");
                                if (SettingType != null)
                                {
                                    object SettingInstance = Activator.CreateInstance(SettingType);
                                    if (SettingInstance is IFolderOwner fo)
                                    {
                                        fo.SetBaseFolder(configFolder);
                                    }
                                    menu.SettingControl = SettingInstance;
                                }
                                menu.SettingControl = SettingInstance;
                            }
                        }
                        LoadMessageAppend?.Invoke(this,
@@ -134,7 +141,7 @@
                    }
                    catch (Exception ex)
                    {
                        log.Error("Load Plugin Failed.", ex);
                        log.Error($"Load Plugin [{menu.Name}] Failed.", ex);
                        LoadMessageAppend?.Invoke(this, new LoadMsg
                        {
                            Type = LoadMsgType.LOADING,
@@ -159,10 +166,10 @@
            try
            {
                UserInfo user = UserInfo.User;
                string sql = $@"SELECT m.* FROM menu AS m INNER JOIN role_menu_rel AS rrel ON m.code = rrel.menuCode
                string sql = $@"SELECT DISTINCT m.* FROM menu AS m INNER JOIN role_menu_rel AS rrel ON m.code = rrel.menuCode
INNER JOIN role AS r ON rrel.roleCode = r.code
INNER JOIN user_role_rel AS urel ON r.code = urel.roleCode
AND urel.username = '{user.Username}' ORDER BY m.level, m.id;";
AND urel.username = '{user.Username}' ORDER BY m.level,m.sort, m.id;";
                DataTable dt = sqliteHelper.GetDataTable(sql);
                if (dt != null)
@@ -184,6 +191,7 @@
                            {
                                Code = dr["code"].ToString(),
                                Name = dr["name"].ToString(),
                                Type = dr["type"].ToString(),
                                ParentCode = dr["parentCode"].ToString(),
                                DllPath = dr["dllPath"].ToString(),
                                ClassName = dr["className"].ToString(),
@@ -211,6 +219,5 @@
            }
            return data;
        }
    }
}