From 34bfa7df61921f7d1798fc08db0b8d81828da96b Mon Sep 17 00:00:00 2001
From: hwh <332078369@qq.com>
Date: 星期二, 02 七月 2024 08:07:57 +0800
Subject: [PATCH] 物料、部门、功能设定
---
Wms/WMS.BLL/SysServer/RBACServer.cs | 96 ++++++++++++++++++++++--------------------------
1 files changed, 44 insertions(+), 52 deletions(-)
diff --git a/Wms/WMS.BLL/SysServer/RBACServer.cs b/Wms/WMS.BLL/SysServer/RBACServer.cs
index 5bb0c42..9b1ed93 100644
--- a/Wms/WMS.BLL/SysServer/RBACServer.cs
+++ b/Wms/WMS.BLL/SysServer/RBACServer.cs
@@ -12,6 +12,9 @@
using WMS.IDAL;
using WMS.IDAL.ISysInterface;
using Model.ModelVm.SysVm;
+using WMS.Entity.Context;
+using Utility;
+using Talk.Extensions;
namespace WMS.BLL.SysServer
{
@@ -26,17 +29,20 @@
public IRBACRepository _rbac { get; set; }
private readonly IMenuRepository _menu;
private readonly IRoleRightRepository _roleright;
+ private static readonly SqlSugarScope Db = DataContext.Db;
+ private readonly UserManager _userManager;
/// <summary>
/// 鏋勯�犲嚱鏁�
/// </summary>
/// <param name="rbac"></param>
/// <param name="menu"></param>
/// <param name="roleright"></param>
- public RBACServer(IRBACRepository rbac, IMenuRepository menu, IRoleRightRepository roleright)
+ public RBACServer(IRBACRepository rbac, IMenuRepository menu, IRoleRightRepository roleright, UserManager userManager)
{
_rbac = rbac;
_menu = menu;
_roleright = roleright;
+ _userManager = userManager;
}
/// <summary>
@@ -54,10 +60,14 @@
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
- public List<RoleRightDto> GetRoleRightList(int id)
+ public async Task<List<RoleRightDto>> GetRoleRightList(int id)
{
- List<RoleRightDto> roleRightDtos = _roleright.GetRoleRightListById(id);
- return roleRightDtos;
+ return await Db.Queryable<SysRoleRight>()
+ .LeftJoin<SysRoles>((a, b) => a.RoleNo == b.RoleNo)
+ .LeftJoin<SysFunctionMenu>((a, b, c) => a.MenuNo == c.MenuNo)
+ .Where((a, b, c) => a.Id == id && a.IsDel == "0")
+ .Select<RoleRightDto>()
+ .ToListAsync();
}
/// <summary>
@@ -65,53 +75,31 @@
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
- public object GetMenuByroleIdNew(int id)
+ public async Task<List<FunctionMenuDto>> GetMenuByroleIdNew(int id)
{
- try
+ List<RoleRightDto> rolerightlist = await Db.Queryable<SysRoleRight>().LeftJoin<SysRoles>((a, b) => a.RoleNo == b.RoleNo)
+ .LeftJoin<SysFunctionMenu>((a, b, c) => a.MenuNo == c.MenuNo)
+ .Where((a, b, c) => a.Id == id && a.IsDel == "0")
+ .Select<RoleRightDto>()
+ .ToListAsync();
+ var listMenuNo = rolerightlist.Select(s => s.MenuNo).Distinct().ToList();
+ List<FunctionMenuDto> listMenu = await Db.Queryable<SysFunctionMenu>().OrderBy(m => m.MenuNo).Select(m => new FunctionMenuDto()
{
- List<RoleRightDto> rolerightlist = _roleright.GetRoleRightListById(id);
- //var list = DataContext.WmsSysRight.Where(m => m.UserGroupId == id).ToList();
- var str = new List<string>();
- foreach (var item in rolerightlist)
- {
- str.Add(item.MenuNo);
- }
- string sql1 = $"select * from SysFunctionMenu where IsDel = '0' and ParentNo = ''";
- List<FunctionMenuDto> parent = _menu.GetMenuList(sql1).OrderBy(m => m.MenuNo).Select(m => new FunctionMenuDto()
- {
- //Id = m.Id,
- MenuNo = m.MenuNo,
- ParentId = m.ParentNo,
- title = m.MenuName,
- //expand = str.Contains(m.Id),
- @checked = str.Contains(m.MenuNo)
- }).ToList();
-
- string sql2 = $"select * from SysFunctionMenu where IsDel = '0' and ParentNo != ''";
- List<FunctionMenuDto> child = _menu.GetMenuList(sql2).OrderBy(m => m.MenuNo).Select(m => new FunctionMenuDto()
- {
- //Id = m.Id,
- MenuNo = m.MenuNo,
- ParentId = m.ParentNo,
- title = m.MenuName,
- Expand = str.Contains(m.MenuNo),
- @checked = str.Contains(m.MenuNo)
- }).ToList();
-
- List<FunctionMenuDto> data = new List<FunctionMenuDto>();
-
- foreach (var item in parent)
- {
- data.Add(item);
- FunNew(child, item);
- }
- return data;
-
- }
- catch (Exception ex)
+ //Id = m.Id,
+ MenuNo = m.MenuNo,
+ ParentId = m.ParentNo,
+ title = m.MenuName,
+ Expand = listMenuNo.Contains(m.MenuNo),
+ @checked = listMenuNo.Contains(m.MenuNo)
+ }).ToListAsync();
+ var listParent = listMenu.Where(s => s.ParentId == "").ToList();
+ var listChild = listMenu.Where(s => s.ParentId != "").ToList();
+ foreach (var item in listParent)
{
- throw new Exception("鑾峰彇瑙掕壊瀵瑰簲鐨勮彍鍗曚俊鎭�" + ex.Message);
+ FunNew(listChild, item);
}
+ return listParent;
+
}
public void FunNew(List<FunctionMenuDto> all, FunctionMenuDto curItem)
{
@@ -123,7 +111,6 @@
{
FunNew(all, subItem);
}
-
}
@@ -134,11 +121,16 @@
/// <param name="MenuNo"></param>
/// <param name="UserId"></param>
/// <returns></returns>
- public List<FunctionMenuDto> GetRoleRightRBAC(string MenuNo, string UserId)
+ public async Task<List<FunctionMenuDto>> GetRoleRightRBAC(string MenuNo, string UserId)
{
- List<FunctionMenuDto> menudto = _menu.GetMenuDtoList(MenuNo,UserId);
-
- return menudto;
+ var modUser = await Db.Queryable<SysUserInfor>().FirstAsync(s => s.Id == _userManager.UserId);
+ return await Db.Queryable<SysFunctionMenu>()
+ .Where(s => s.IsDel == "0")
+ .WhereIF(!string.IsNullOrEmpty(MenuNo), s => s.ParentNo == MenuNo)
+ .WhereIF(modUser.UserName.ToUpper() != "ADMIN", s => SqlFunc.Subqueryable<SysRoleRight>().Where(c => c.RoleNo == modUser.RoleNo && s.MenuNo == c.MenuNo).Any())
+ .OrderBy(s => s.Ord, OrderByType.Asc)
+ .Select<FunctionMenuDto>()
+ .ToListAsync();
}
}
}
--
Gitblit v1.8.0