From c020f31a67fc5aa5644511bddff075f7ecc85234 Mon Sep 17 00:00:00 2001
From: qinchulong <qinchulong@hnkhzn.com>
Date: 星期二, 27 五月 2025 15:35:27 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/HuaYiZhongHeng/ZhongHeLiTiKu

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_MenuService.cs |  202 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 202 insertions(+), 0 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_MenuService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_MenuService.cs"
new file mode 100644
index 0000000..82d9289
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_MenuService.cs"
@@ -0,0 +1,202 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO.System;
+using WIDESEA_ISystemRepository;
+using WIDESEA_ISystemService;
+using WIDESEA_Model;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_SystemService
+{
+    public class Sys_MenuService : ServiceBase<Sys_Menu, ISys_MenuRepository>, ISys_MenuService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+
+        public ISys_MenuRepository Repository => BaseDal;
+
+        public Sys_MenuService(ISys_MenuRepository BaseDal, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+        }
+
+        /// <summary>
+        /// 鑾峰彇褰撳墠鐢ㄦ埛鎵�鏈夎彍鍗曚笌鏉冮檺
+        /// </summary>
+        /// <returns></returns>
+        public object GetCurrentMenuActionList()
+        {
+            object obj = GetMenuActionList(App.User.RoleId);
+            if (obj is IEnumerable<object> list)
+            {
+                if (list.Any())
+                {
+                    return obj;
+                }
+                else
+                {
+                    return WebResponseContent.Instance.Error("鏈幏鍙栧埌鑿滃崟淇℃伅");
+                }
+            }
+            return obj;
+        }
+
+        /// <summary>
+        /// 鏍规嵁瑙掕壊ID鑾峰彇鑿滃崟涓庢潈闄�
+        /// </summary>
+        /// <param name="roleId"></param>
+        /// <returns></returns>
+        public object GetMenuActionList(int roleId)
+        {
+            if (App.User.IsRoleIdSuperAdmin(roleId))
+            {
+                return BaseDal.GetSuperAdminMenu();
+            }
+            return BaseDal.GetMenuByRoleId(roleId);
+        }
+
+
+        public List<MenuDTO> GetUserMenuList(int roleId)
+        {
+            if (App.User.IsRoleIdSuperAdmin(roleId))
+            {
+                return BaseDal.GetAllMenu();
+            }
+            List<int> menuIds = BaseDal.GetPermissions(roleId).Select(x => x.MenuId).ToList();
+            return BaseDal.GetAllMenu().Where(x => menuIds.Contains(x.MenuId)).ToList();
+        }
+
+        public List<MenuDTO> GetUserMenuListPDA(int roleId)
+        {
+            if (App.User.IsRoleIdSuperAdmin(roleId))
+            {
+                return BaseDal.GetAllMenuPDA();
+            }
+            List<int> menuIds = BaseDal.GetPermissions(roleId).Select(x => x.MenuId).ToList();
+            return BaseDal.GetAllMenuPDA().Where(x => menuIds.Contains(x.MenuId)).ToList();
+        }
+
+        public List<ActionDTO> GetActions(int menuId, List<ActionDTO> menuActions, List<Permissions> permissions, int roleId)
+        {
+            if (App.User.IsRoleIdSuperAdmin(roleId))
+            {
+                return menuActions;
+            }
+
+            return menuActions.Where(p => permissions
+                 .Exists(w => menuId == w.MenuId
+                 && w.UserAuthArr.Contains(p.Value)))
+                  .ToList();
+        }
+
+        /// <summary>
+        /// 缂栬緫淇敼鑿滃崟鏃�,鑾峰彇鎵�鏈夎彍鍗�
+        /// </summary>
+        /// <returns></returns>
+        public object GetMenu()
+        {
+            if (App.User.IsRoleIdSuperAdmin(App.User.RoleId))
+            {
+                List<int> menuIds = BaseDal.QueryData().Select(x => x.MenuId).ToList();
+                return BaseDal.GetMenu(menuIds);
+            }
+            else
+            {
+                List<int> menuIds = BaseDal.GetPermissions(App.User.RoleId).Select(x => x.MenuId).ToList();
+                return BaseDal.GetMenu(menuIds);
+            }
+        }
+
+        /// <summary>
+        /// 缂栬緫鑿滃崟鏃讹紝鑾峰彇鑿滃崟淇℃伅
+        /// </summary>
+        /// <param name="menuId"></param>
+        /// <returns></returns>
+        public object GetTreeItem(int menuId)
+        {
+            return BaseDal.GetTreeItem(menuId);
+        }
+
+        /// <summary>
+        /// 鏂板缓鎴栫紪杈戣彍鍗�
+        /// </summary>
+        /// <param name="menu"></param>
+        /// <returns></returns>
+        public WebResponseContent Save(Sys_Menu menu)
+        {
+            WebResponseContent webResponse = new WebResponseContent();
+            if (menu == null) return webResponse.Error("娌℃湁鑾峰彇鍒版彁浜ょ殑鍙傛暟");
+            if (menu.MenuId > 0 && menu.MenuId == menu.ParentId) return webResponse.Error("鐖剁骇ID涓嶈兘鏄綋鍓嶈彍鍗曠殑ID");
+            try
+            {
+                //webResponse = menu.ValidationEntity(x => new { x.MenuName, x.TableName });
+                //if (!webResponse.Status) return webResponse;
+                if (menu.TableName != "/" && menu.TableName != ".")
+                {
+                    // 2022.03.26澧炵Щ鍔ㄧ鍔犺彍鍗曠被鍨嬪垽鏂�
+                    Sys_Menu sysMenu = BaseDal.QueryFirst(x => x.TableName == menu.TableName);
+                    if (sysMenu != null)
+                    {
+                        if (sysMenu.MenuType == menu.MenuType)
+                        {
+                            if ((menu.MenuId > 0 && sysMenu.MenuId != menu.MenuId)
+                            || menu.MenuId <= 0)
+                            {
+                                return webResponse.Error($"瑙嗗浘/琛ㄥ悕銆恵menu.TableName}銆戝凡琚叾浠栬彍鍗曚娇鐢�");
+                            }
+                        }
+                    }
+                }
+                bool _changed = false;
+                if (menu.MenuId <= 0)
+                {
+                    int id = BaseDal.AddData(menu);
+                    menu.MenuId = id;
+                }
+                else
+                {
+                    //2020.05.07鏂板绂佹閫夋嫨涓婄骇瑙掕壊涓鸿嚜宸�
+                    if (menu.MenuId == menu.ParentId)
+                    {
+                        return webResponse.Error($"鐖剁骇id涓嶈兘涓鸿嚜宸�");
+                    } 
+                    if (BaseDal.QueryFirst(x => x.ParentId == menu.MenuId && menu.ParentId == x.MenuId) != null)
+                    {
+                        return webResponse.Error($"涓嶈兘閫夋嫨姝ょ埗绾d锛岄�夋嫨鐨勭埗绾d涓庡綋鍓嶈彍鍗曞舰鎴愪緷璧栧叧绯�");
+                    }
+
+                    _changed = BaseDal.QueryData(c => c.MenuId == menu.MenuId).Select(s => s.Auth).FirstOrDefault() != menu.Auth;
+
+                    BaseDal.UpdateData(menu);
+                }
+                webResponse.OK("淇濆瓨鎴愬姛", menu);
+            }
+            catch (Exception ex)
+            {
+                webResponse.Error(ex.Message);
+            }
+            return webResponse;
+
+        }
+
+        public WebResponseContent DelMenu(int menuId)
+        {
+            WebResponseContent webResponse = new WebResponseContent();
+            if(BaseDal.QueryFirst(x=>x.ParentId == menuId) != null)
+            {
+                return webResponse = WebResponseContent.Instance.Error("褰撳墠鑿滃崟瀛樺湪瀛愯彍鍗�,璇峰厛鍒犻櫎瀛愯彍鍗�!");
+            }
+            BaseDal.DeleteDataById(menuId);
+
+            return webResponse = WebResponseContent.Instance.OK("鍒犻櫎鎴愬姛");
+        }
+    }
+}

--
Gitblit v1.9.3