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