bklLiudl
2024-09-07 8c6e292c508312eca0aef4c203e5857c4fc3094c
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,52 @@
                    //判断菜单名称是否为空
                    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;
            exp.And((a, b, c) => a.IsDel == "0");
            return await queryAble.Where(exp.ToExpression()).OrderBy((a, b, c) => SqlFunc.ToInt32(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>