优化菜单请求参数

This commit is contained in:
不做码农 2022-05-24 18:16:31 +08:00
parent 58f5de7037
commit 225cc80811
5 changed files with 35 additions and 19 deletions

View File

@ -36,7 +36,7 @@ namespace ZR.Admin.WebApi.Controllers.System
/// <returns></returns> /// <returns></returns>
[ActionPermissionFilter(Permission = "system:menu:list")] [ActionPermissionFilter(Permission = "system:menu:list")]
[HttpGet("list")] [HttpGet("list")]
public IActionResult TreeMenuList([FromQuery] SysMenu menu) public IActionResult TreeMenuList([FromQuery] MenuQueryDto menu)
{ {
long userId = HttpContext.GetUId(); long userId = HttpContext.GetUId();
return SUCCESS(sysMenuService.SelectTreeMenuList(menu, userId), "yyyy-MM-dd HH:mm:ss"); return SUCCESS(sysMenuService.SelectTreeMenuList(menu, userId), "yyyy-MM-dd HH:mm:ss");
@ -62,7 +62,7 @@ namespace ZR.Admin.WebApi.Controllers.System
public IActionResult TreeSelect() public IActionResult TreeSelect()
{ {
long userId = HttpContext.GetUId(); long userId = HttpContext.GetUId();
var list = sysMenuService.SelectMenuList(new SysMenu(), userId).FindAll(f => f.visible == "0"); var list = sysMenuService.SelectMenuList(new MenuQueryDto(), userId).FindAll(f => f.visible == "0");
var treeMenus = sysMenuService.BuildMenuTreeSelect(list); var treeMenus = sysMenuService.BuildMenuTreeSelect(list);
return SUCCESS(treeMenus); return SUCCESS(treeMenus);
@ -78,7 +78,7 @@ namespace ZR.Admin.WebApi.Controllers.System
public IActionResult RoleMenuTreeselect(int roleId) public IActionResult RoleMenuTreeselect(int roleId)
{ {
long userId = HttpContext.GetUId(); long userId = HttpContext.GetUId();
var menus = sysMenuService.SelectMenuList(new SysMenu(), userId); var menus = sysMenuService.SelectMenuList(new MenuQueryDto(), userId);
var checkedKeys = sysRoleService.SelectUserRoleMenus(roleId); var checkedKeys = sysRoleService.SelectUserRoleMenus(roleId);
return SUCCESS(new return SUCCESS(new
{ {

View File

@ -73,4 +73,19 @@ namespace ZR.Model.System.Dto
/// </summary> /// </summary>
public string MenuNameKey { get; set; } public string MenuNameKey { get; set; }
} }
public class MenuQueryDto
{
public string MenuName { get; set; }
public string Visible { get; set; }
public string Status { get; set; }
public string MenuTypeIds { get; set; } = string.Empty;
public string[] MenuTypeIdArr
{
get
{
return MenuTypeIds.Split(',', StringSplitOptions.RemoveEmptyEntries);
}
}
}
} }

View File

@ -18,12 +18,13 @@ namespace ZR.Repository.System
/// 获取所有菜单(菜单管理) /// 获取所有菜单(菜单管理)
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public List<SysMenu> SelectTreeMenuList(SysMenu menu) public List<SysMenu> SelectTreeMenuList(MenuQueryDto menu)
{ {
return Context.Queryable<SysMenu>() return Context.Queryable<SysMenu>()
.WhereIF(!string.IsNullOrEmpty(menu.MenuName), it => it.MenuName.Contains(menu.MenuName)) .WhereIF(!string.IsNullOrEmpty(menu.MenuName), it => it.MenuName.Contains(menu.MenuName))
.WhereIF(!string.IsNullOrEmpty(menu.visible), it => it.visible == menu.visible) .WhereIF(!string.IsNullOrEmpty(menu.Visible), it => it.visible == menu.Visible)
.WhereIF(!string.IsNullOrEmpty(menu.status), it => it.status == menu.status) .WhereIF(!string.IsNullOrEmpty(menu.Status), it => it.status == menu.Status)
.OrderBy(it => new { it.parentId, it.orderNum }) .OrderBy(it => new { it.parentId, it.orderNum })
.ToTree(it => it.children, it => it.parentId, 0); .ToTree(it => it.children, it => it.parentId, 0);
} }
@ -34,7 +35,7 @@ namespace ZR.Repository.System
/// <param name="sysMenu"></param> /// <param name="sysMenu"></param>
/// <param name="roles">用户角色集合</param> /// <param name="roles">用户角色集合</param>
/// <returns></returns> /// <returns></returns>
public List<SysMenu> SelectTreeMenuListByUserId(SysMenu sysMenu, List<long> roles) public List<SysMenu> SelectTreeMenuListByUserId(MenuQueryDto sysMenu, List<long> roles)
{ {
var roleMenus = Context.Queryable<SysRoleMenu>() var roleMenus = Context.Queryable<SysRoleMenu>()
.Where(r => roles.Contains(r.Role_id)); .Where(r => roles.Contains(r.Role_id));
@ -42,8 +43,8 @@ namespace ZR.Repository.System
return Context.Queryable<SysMenu>() return Context.Queryable<SysMenu>()
.InnerJoin(roleMenus, (c, j) => c.MenuId == j.Menu_id) .InnerJoin(roleMenus, (c, j) => c.MenuId == j.Menu_id)
.WhereIF(!string.IsNullOrEmpty(sysMenu.MenuName), (c, j) => c.MenuName.Contains(sysMenu.MenuName)) .WhereIF(!string.IsNullOrEmpty(sysMenu.MenuName), (c, j) => c.MenuName.Contains(sysMenu.MenuName))
.WhereIF(!string.IsNullOrEmpty(sysMenu.visible), (c, j) => c.visible == sysMenu.visible) .WhereIF(!string.IsNullOrEmpty(sysMenu.Visible), (c, j) => c.visible == sysMenu.Visible)
.WhereIF(!string.IsNullOrEmpty(sysMenu.status), (c, j) => c.status == sysMenu.status) .WhereIF(!string.IsNullOrEmpty(sysMenu.Status), (c, j) => c.status == sysMenu.Status)
.OrderBy((c, j) => new { c.parentId, c.orderNum }) .OrderBy((c, j) => new { c.parentId, c.orderNum })
.Select(c => c) .Select(c => c)
.ToTree(it => it.children, it => it.parentId, 0); .ToTree(it => it.children, it => it.parentId, 0);
@ -53,12 +54,12 @@ namespace ZR.Repository.System
/// 获取所有菜单 /// 获取所有菜单
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public List<SysMenu> SelectMenuList(SysMenu menu) public List<SysMenu> SelectMenuList(MenuQueryDto menu)
{ {
return Context.Queryable<SysMenu>() return Context.Queryable<SysMenu>()
.WhereIF(!string.IsNullOrEmpty(menu.MenuName), it => it.MenuName.Contains(menu.MenuName)) .WhereIF(!string.IsNullOrEmpty(menu.MenuName), it => it.MenuName.Contains(menu.MenuName))
.WhereIF(!string.IsNullOrEmpty(menu.visible), it => it.visible == menu.visible) .WhereIF(!string.IsNullOrEmpty(menu.Visible), it => it.visible == menu.Visible)
.WhereIF(!string.IsNullOrEmpty(menu.status), it => it.status == menu.status) .WhereIF(!string.IsNullOrEmpty(menu.Status), it => it.status == menu.Status)
.OrderBy(it => new { it.parentId, it.orderNum }) .OrderBy(it => new { it.parentId, it.orderNum })
.ToList(); .ToList();
} }
@ -69,7 +70,7 @@ namespace ZR.Repository.System
/// <param name="sysMenu"></param> /// <param name="sysMenu"></param>
/// <param name="roles">用户角色集合</param> /// <param name="roles">用户角色集合</param>
/// <returns></returns> /// <returns></returns>
public List<SysMenu> SelectMenuListByRoles(SysMenu sysMenu, List<long> roles) public List<SysMenu> SelectMenuListByRoles(MenuQueryDto sysMenu, List<long> roles)
{ {
var roleMenus = Context.Queryable<SysRoleMenu>() var roleMenus = Context.Queryable<SysRoleMenu>()
.Where(r => roles.Contains(r.Role_id)); .Where(r => roles.Contains(r.Role_id));
@ -78,7 +79,7 @@ namespace ZR.Repository.System
.InnerJoin(roleMenus, (c, j) => c.MenuId == j.Menu_id) .InnerJoin(roleMenus, (c, j) => c.MenuId == j.Menu_id)
.Where((c, j) => c.status == "0") .Where((c, j) => c.status == "0")
.WhereIF(!string.IsNullOrEmpty(sysMenu.MenuName), (c, j) => c.MenuName.Contains(sysMenu.MenuName)) .WhereIF(!string.IsNullOrEmpty(sysMenu.MenuName), (c, j) => c.MenuName.Contains(sysMenu.MenuName))
.WhereIF(!string.IsNullOrEmpty(sysMenu.visible), (c, j) => c.visible == sysMenu.visible) .WhereIF(!string.IsNullOrEmpty(sysMenu.Visible), (c, j) => c.visible == sysMenu.Visible)
.OrderBy((c, j) => new { c.parentId, c.orderNum }) .OrderBy((c, j) => new { c.parentId, c.orderNum })
.Select(c => c) .Select(c => c)
.ToList(); .ToList();
@ -111,7 +112,7 @@ namespace ZR.Repository.System
.Where((menu) => .Where((menu) =>
menuTypes.Contains(menu.menuType) menuTypes.Contains(menu.menuType)
&& menu.status == "0" && menu.status == "0"
&& SqlFunc.Subqueryable<SysRoleMenu>().Where( s => roleIds.Contains(s.Role_id) && s.Menu_id == menu.MenuId).Any()) && SqlFunc.Subqueryable<SysRoleMenu>().Where(s => roleIds.Contains(s.Role_id) && s.Menu_id == menu.MenuId).Any())
.OrderBy((menu) => new { menu.parentId, menu.orderNum }) .OrderBy((menu) => new { menu.parentId, menu.orderNum })
.Select((menu) => menu).ToList(); .Select((menu) => menu).ToList();
} }

View File

@ -10,8 +10,8 @@ namespace ZR.Service.System.IService
{ {
//List<SysMenu> SelectMenuList(long userId); //List<SysMenu> SelectMenuList(long userId);
List<SysMenu> SelectMenuList(SysMenu menu, long userId); List<SysMenu> SelectMenuList(MenuQueryDto menu, long userId);
List<SysMenu> SelectTreeMenuList(SysMenu menu, long userId); List<SysMenu> SelectTreeMenuList(MenuQueryDto menu, long userId);
SysMenu GetMenuByMenuId(int menuId); SysMenu GetMenuByMenuId(int menuId);
int AddMenu(SysMenu menu); int AddMenu(SysMenu menu);

View File

@ -32,7 +32,7 @@ namespace ZR.Service
/// 获取所有菜单数(菜单管理) /// 获取所有菜单数(菜单管理)
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public List<SysMenu> SelectTreeMenuList(SysMenu menu, long userId) public List<SysMenu> SelectTreeMenuList(MenuQueryDto menu, long userId)
{ {
List<SysMenu> menuList; List<SysMenu> menuList;
if (SysRoleService.IsAdmin(userId)) if (SysRoleService.IsAdmin(userId))
@ -51,7 +51,7 @@ namespace ZR.Service
/// 获取所有菜单列表 /// 获取所有菜单列表
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public List<SysMenu> SelectMenuList(SysMenu menu, long userId) public List<SysMenu> SelectMenuList(MenuQueryDto menu, long userId)
{ {
List<SysMenu> menuList; List<SysMenu> menuList;
if (SysRoleService.IsAdmin(userId)) if (SysRoleService.IsAdmin(userId))