From 56ac2992fddc5591254a9cdf945ea014f7d284d3 Mon Sep 17 00:00:00 2001
From: hwh <332078369@qq.com>
Date: 星期二, 09 七月 2024 16:52:54 +0800
Subject: [PATCH] 菜单

---
 Wms/WMS.BLL/SysServer/MenuServer.cs |   70 +++++++++++++++++++++++++----------
 1 files changed, 50 insertions(+), 20 deletions(-)

diff --git a/Wms/WMS.BLL/SysServer/MenuServer.cs b/Wms/WMS.BLL/SysServer/MenuServer.cs
index 6c4dfa5..90a7cd3 100644
--- a/Wms/WMS.BLL/SysServer/MenuServer.cs
+++ b/Wms/WMS.BLL/SysServer/MenuServer.cs
@@ -19,7 +19,7 @@
     /// <summary>
     /// 鑿滃崟鏈嶅姟瀹炶返
     /// </summary>
-    public class MenuServer : DbHelper<SysFunctionMenu>,IMenuServer
+    public class MenuServer : DbHelper<SysFunctionMenu>, IMenuServer
     {
         private static readonly SqlSugarScope Db = DataContext.Db;
 
@@ -45,10 +45,13 @@
         /// </summary>
         /// <param name="menuDto">鑿滃崟Dto</param>
         /// <returns></returns>
-        public List<FunctionMenuVm> GetMenuList(string MenuName, string pMenuNo, string MenuNo, string level = "")
+        public async Task<List<FunctionMenuVm>> GetMenuList(string MenuName, string pMenuNo, string MenuNo, string level = "")
         {
-            string str = "select menu1.Id,menu1.MenuNo,menu1.MenuName,menu2.MenuName ParentName,menu1.ParentNo,menu1.Ord,menu1.Url,menu1.level,menu1.IsEnable,menu1.Demo,menu1.IsDel,menu1.CreateTime,menu1.CreateUser,menu1.UpdateTime,menu1.UpdateUser,user1.RealName CreateUserName from SysFunctionMenu menu1 left join sysfunctionmenu menu2 on menu1.parentNo = menu2.MenuNo join SysUserInfor user1 on menu1.CreateUser = user1.id  where menu1.IsDel = '0' and menu1.IsEnable = '0' ";
-
+            //string str = "select menu1.Id,menu1.MenuNo,menu1.MenuName,menu2.MenuName ParentName,menu1.ParentNo,menu1.Ord,menu1.Url,menu1.level,menu1.IsEnable,menu1.Demo,menu1.IsDel,menu1.CreateTime,menu1.CreateUser,menu1.UpdateTime,menu1.UpdateUser,user1.RealName CreateUserName from SysFunctionMenu menu1 left join sysfunctionmenu menu2 on menu1.parentNo = menu2.MenuNo join SysUserInfor user1 on menu1.CreateUser = user1.id  where menu1.IsDel = '0' and menu1.IsEnable = '0' ";
+            var queryAble = Db.Queryable<SysFunctionMenu>()
+                .LeftJoin<SysFunctionMenu>((a, b) => a.ParentNo == b.MenuNo)
+                .LeftJoin<SysUserInfor>((a, b, c) => a.CreateUser == c.Id);
+            var exp = Expressionable.Create<SysFunctionMenu, SysFunctionMenu, SysUserInfor>();
             //鍒ゆ柇椤甸潰鑿滃崟
             if (!string.IsNullOrEmpty(MenuNo))
             {
@@ -59,28 +62,33 @@
                     if (level == "1")
                     {
                         //椤甸潰
-                        str += $" and menu1.MenuNo = '{MenuNo}'";
+                        exp.And((a, b, c) => a.MenuNo == MenuNo);
+                        //str += $" and menu1.MenuNo = '{MenuNo}'";
                     }
                     if (level == "2")
                     {
                         //鎸夐挳
-                        str += $" and menu1.ParentNo = '{MenuNo}'";
+                        exp.And((a, b, c) => a.ParentNo == MenuNo);
+                        //str += $" and menu1.ParentNo = '{MenuNo}'";
                     }
                     if (level == "0")
                     {
                         //妯″潡
-                        str += $" and menu1.ParentNo = '{MenuNo}'";
+                        exp.And((a, b, c) => a.ParentNo == MenuNo);
+                        //str += $" and menu1.ParentNo = '{MenuNo}'";
                     }
                 }
                 else
                 {
                     if (!string.IsNullOrEmpty(MenuName))
                     {
-                        str += $" and menu1.ParentNo = '{MenuNo}'";
+                        exp.And((a, b, c) => a.ParentNo == MenuNo);
+                        //str += $" and menu1.ParentNo = '{MenuNo}'";
                     }
                     else
                     {
-                        str += $" and (menu1.ParentNo = '{MenuNo}' or menu1.MenuNo = '{MenuNo}')";
+                        exp.And((a, b, c) => a.ParentNo == MenuNo || a.MenuNo == MenuNo);
+                        //str += $" and (menu1.ParentNo = '{MenuNo}' or menu1.MenuNo = '{MenuNo}')";
 
                     }
                 }
@@ -95,17 +103,20 @@
                     if (level == "1")
                     {
                         //椤甸潰
-                        str += $" and menu1.ParentNo = '{pMenuNo}'";
+                        exp.And((a, b, c) => a.ParentNo == pMenuNo);
+                        //str += $" and menu1.ParentNo = '{pMenuNo}'";
                     }
                     if (level == "2")
                     {
                         //鎸夐挳
-                        str += $" and menu1.ParentNo in (select MenuNo from SysFunctionMenu where ParentNo = '{pMenuNo}')";
+                        exp.And((a, b, c) => SqlFunc.Subqueryable<SysFunctionMenu>().Where(d => d.ParentNo == pMenuNo && a.ParentNo == d.MenuNo).Any());
+                        //str += $" and menu1.ParentNo in (select MenuNo from SysFunctionMenu where ParentNo = '{pMenuNo}')";
                     }
                     if (level == "0")
                     {
                         //妯″潡
-                        str += $" and menu1.MenuNo= '{pMenuNo}'";
+                        exp.And((a, b, c) => a.MenuNo == pMenuNo);
+                        //str += $" and menu1.MenuNo= '{pMenuNo}'";
                     }
                 }
                 else
@@ -113,32 +124,51 @@
                     //鍒ゆ柇鑿滃崟鍚嶇О鏄惁涓虹┖
                     if (!string.IsNullOrEmpty(MenuName) && string.IsNullOrEmpty(MenuNo))
                     {
-                        str += $" and menu1.ParentNo in (select MenuNo from SysFunctionMenu where ParentNo = '{pMenuNo}')";
+                        queryAble.Where(a => SqlFunc.Subqueryable<SysFunctionMenu>().Where(d => d.ParentNo == pMenuNo && a.ParentNo == d.MenuNo).Any());
+                        //str += $" and menu1.ParentNo in (select MenuNo from SysFunctionMenu where ParentNo = '{pMenuNo}')";
                     }
                     else
                     {
-                        str += $" and  ( menu1.ParentNo = '{pMenuNo}' or menu1.MenuNo = '{pMenuNo}' or menu1.ParentNo in (select MenuNo from SysFunctionmenu where ParentNo = {pMenuNo}) )";
+                        exp.And((a, b, c) => a.ParentNo == pMenuNo || a.MenuNo == pMenuNo || SqlFunc.Subqueryable<SysFunctionMenu>().Where(d => d.ParentNo == pMenuNo && a.ParentNo == d.MenuNo).Any());
+                        //str += $" and  ( menu1.ParentNo = '{pMenuNo}' or menu1.MenuNo = '{pMenuNo}' or menu1.ParentNo in (select MenuNo from SysFunctionmenu where ParentNo = {pMenuNo}) )";
                     }
                 }
             }
             //鍒ゆ柇鑿滃崟鍚嶇О涓庣紪鍙锋槸鍚︿负绌�
             if (!string.IsNullOrEmpty(MenuName))
             {
-                str += $" and menu1.MenuName like '%{MenuName}%'";
+                exp.And((a, b, c) => a.MenuName.Contains(MenuName));
+                //str += $" and menu1.MenuName like '%{MenuName}%'";
                 //鍒ゆ柇鐖剁骇鑿滃崟鏄惁涓虹┖
                 if (!string.IsNullOrEmpty(pMenuNo) && string.IsNullOrEmpty(MenuNo))
                 {
-                    str += $" or menu1.MenuNo in (select MenuNo from SysFunctionMenu where ( ParentNo = '{pMenuNo}' or MenuNo='{pMenuNo}' ) and MenuName like '%{MenuName}%')";
+                    exp.Or((a, b, c) => SqlFunc.Subqueryable<SysFunctionMenu>().Where(e => (e.ParentNo == pMenuNo || e.MenuNo == pMenuNo && MenuName.Contains(MenuName)) && e.MenuNo == a.MenuNo).Any());
+                    //str += $" or menu1.MenuNo in (select MenuNo from SysFunctionMenu where ( ParentNo = '{pMenuNo}' or MenuNo='{pMenuNo}' ) and MenuName like '%{MenuName}%')";
                 }
             }
             //鍒ゆ柇鑿滃崟灞傜骇
             if (!string.IsNullOrEmpty(level))
             {
-                str += $" and menu1.Level = '{level}'";
+                exp.And((a, b, c) => a.Level == level);
+                //str += $" and menu1.Level = '{level}'";
             }
-            str += " order by menu1.MenuNo,menu1.Ord";
-            List<FunctionMenuVm> menulist = _menu.GetMenuList(str);
-            return menulist;
+            return await queryAble.Where(exp.ToExpression()).OrderBy((a, b, c) => a.MenuNo).OrderBy((a, b, c) => a.Ord)
+                .Select<FunctionMenuVm>((a, b, c) => new FunctionMenuVm()
+                {
+                    Id = a.Id,
+                    MenuNo = a.MenuNo,
+                    MenuName = a.MenuName,
+                    ParentNo = a.ParentNo,
+                    ParentName = b.MenuName,
+                    Ord = a.Ord,
+                    Url = a.Url,
+                    Level = a.Level,
+                    IsEnable = a.IsEnable,
+                    Demo = a.Demo,
+                    CreateTime = a.CreateTime,
+                    CreateUser = a.CreateUser,
+                    CreateUserName = c.RealName,
+                }, true).ToListAsync();
         }
 
         /// <summary>

--
Gitblit v1.8.0