| | |
| | | /// <summary> |
| | | /// 菜单服务实践 |
| | | /// </summary> |
| | | public class MenuServer : DbHelper<SysFunctionMenu>,IMenuServer |
| | | public class MenuServer : DbHelper<SysFunctionMenu>, IMenuServer |
| | | { |
| | | private static readonly SqlSugarScope Db = DataContext.Db; |
| | | |
| | |
| | | /// </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)) |
| | | { |
| | |
| | | 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}')"; |
| | | |
| | | } |
| | | } |
| | |
| | | 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 |
| | |
| | | //判断菜单名称是否为空 |
| | | 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> |