| | |
| | | using AutoMapper; |
| | | using Model.ModelDto.SysDto; |
| | | using Model.ModelVm.SysVm; |
| | | using SqlSugar; |
| | | using Utility; |
| | | using WMS.DAL.SystemService; |
| | | using WMS.Entity.Context; |
| | | using WMS.Entity.SysEntity; |
| | | using WMS.IBLL.ISysServer; |
| | | using WMS.IDAL.ISysInterface; |
| | |
| | | /// <summary> |
| | | /// 依赖注入 |
| | | /// </summary> |
| | | public IRoleRightRepository _rolerights { get; set; } |
| | | private static readonly SqlSugarScope Db = DataContext.Db; |
| | | private readonly UserManager _userManager; |
| | | /// <summary> |
| | | /// 构造函数 |
| | | /// </summary> |
| | | /// <param name="roles"></param> |
| | | public RoleRightServer(IRoleRightRepository rolerights) |
| | | public RoleRightServer(UserManager userManager) |
| | | { |
| | | _rolerights = rolerights; |
| | | _userManager = userManager; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | /// <param name="userId">用户Id</param> |
| | | /// <returns></returns> |
| | | public List<RoleRightDto> GetRoleMenuList(int userId) |
| | | public async Task<List<RoleRightDto>> GetRoleMenuList() |
| | | { |
| | | try |
| | | var modUser = await Db.Queryable<SysUserInfor>().FirstAsync(m => m.Id == _userManager.UserId && m.IsDel == "0"); |
| | | if (modUser == null) |
| | | { |
| | | var user = _rolerights.GetRoleMenuList(userId); |
| | | return user; |
| | | throw Oops.Bah("未查询到登录人信息"); |
| | | } |
| | | catch (Exception e) |
| | | if (string.IsNullOrWhiteSpace(modUser.RoleNo)) |
| | | { |
| | | throw new Exception(e.Message); |
| | | throw Oops.Bah("未查询到登录人的所属角色信息"); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取角色权限信息列表 |
| | | /// 多表:角色权限、角色、菜单 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public List<RoleRightDto> GetRoleRightList() |
| | | { |
| | | List<RoleRightDto> roleRightDtos = _rolerights.GetRoleRightList(); |
| | | return roleRightDtos; |
| | | return await Db.Queryable<SysRoleRight>() |
| | | .LeftJoin<SysFunctionMenu>((a, b) => a.MenuNo == b.MenuNo) |
| | | .LeftJoin<SysRoles>((a, b, c) => a.RoleNo == c.RoleNo) |
| | | .Where((a, b, c) => a.IsDel == "0" && b.IsDel == "0" && c.IsDel == "0") |
| | | .Where((a, b, c) => a.RoleNo == modUser.RoleNo) |
| | | .OrderBy((a, b, c) => b.Ord) //.OrderBy((a, b, c) => SqlFunc.ToInt32(a.MenuNo)) |
| | | .Select<RoleRightDto>() |
| | | .ToListAsync(); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | /// <param name="rolerightids">角色权限id</param> |
| | | /// <returns></returns> |
| | | public List<SysRoleRight> GetRoleRightOneListById(int id) |
| | | public async Task<List<SysRoleRight>> GetRoleRightOneListById(int id) |
| | | { |
| | | List<SysRoleRight> roleRights = _rolerights.GetRoleRightOneListById(id); |
| | | return roleRights; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 根据角色号获取角色权限信息列表(单表) |
| | | /// </summary> |
| | | /// <param name="roleno">角色好</param> |
| | | /// <returns></returns> |
| | | public List<SysRoleRight> GetRoleRightOneListByNo(string roleno) |
| | | { |
| | | List<SysRoleRight> roleRights = _rolerights.GetRoleRightOneListByNo(roleno); |
| | | return roleRights; |
| | | return await Db.Queryable<SysRoleRight>().Where(s => s.IsDel == "0" && s.RoleNo == SqlFunc.Subqueryable<SysRoles>().Where(c => c.IsDel == "0" && c.Id == id).Select(c => c.RoleNo)).ToListAsync(); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// <param name="RoleNo">角色号</param> |
| | | /// <returns></returns> |
| | | /// <exception cref="Exception">捕获异常</exception> |
| | | public async Task<int> InsertRoleRight(string MenuNo, string RoleNo, string userId) |
| | | public async Task InsertRoleRight(string MenuNo, string RoleNo) |
| | | { |
| | | //捕获异常 |
| | | try |
| | | List<SysRoleRight> listRole = await Db.Queryable<SysRoleRight>().Where(s => s.RoleNo == RoleNo).ToListAsync(); |
| | | if (listRole.Count > 0) |
| | | { |
| | | //将菜单号进行分割 存储数组中 |
| | | var arr = MenuNo.Split(','); |
| | | int i = 0; |
| | | //查询该角色是否拥有权限 |
| | | List<SysRoleRight> rolelist = GetRoleRightOneListByNo(RoleNo); |
| | | //有 |
| | | if (rolelist.Count > 0) |
| | | await Db.Deleteable<SysRoleRight>().Where(s => s.RoleNo == RoleNo).ExecuteCommandAsync(); |
| | | } |
| | | var arr = MenuNo.Split(','); |
| | | var listRight = new List<SysRoleRight>(); |
| | | //循环将菜单数组分别加入到数据模型中 |
| | | for (int j = 0; j < arr.Count(); j++) |
| | | { |
| | | SysRoleRight roleright = new SysRoleRight(); |
| | | roleright.RoleNo = RoleNo;//角色号 |
| | | roleright.MenuNo = arr[j];//菜单号 |
| | | roleright.CreateUser = _userManager.UserId;//创建人 |
| | | roleright.CreateTime = DateTime.Now; |
| | | listRight.Add(roleright); |
| | | } |
| | | await Db.Insertable(listRight).ExecuteCommandAsync(); |
| | | |
| | | //删除子级角色权限信息。(角色权限减少,角色下级权限同时减少) |
| | | List<SysRoles> listRoleDel = await Db.Queryable<SysRoles>().Where(s => SqlFunc.Subqueryable<SysUserInfor>().Where(c => c.RoleNo == RoleNo && s.Id == c.Id).Any()).ToListAsync(); |
| | | var listRoleNo = listRoleDel.Select(s => s.RoleNo).Distinct().ToList(); |
| | | List<SysRoleRight> listRoleRight = await Db.Queryable<SysRoleRight>().Where(s => listRoleNo.Contains(s.RoleNo)).ToListAsync(); |
| | | foreach (var item in listRoleDel) |
| | | { |
| | | var listChildRoleRight = listRoleRight.Where(s => s.RoleNo == item.RoleNo).ToList(); |
| | | foreach (var right in listChildRoleRight) |
| | | { |
| | | //删除该角色所有菜单信息 |
| | | i = await DeleteRoleRight(RoleNo); |
| | | } |
| | | //无 |
| | | else if (rolelist.Count == 0) |
| | | { |
| | | i = 1; |
| | | } |
| | | //开始新增权限 |
| | | if (i > 0) |
| | | { |
| | | SysRoleRight roleright = new SysRoleRight(); |
| | | //循环将菜单数组分别加入到数据模型中 |
| | | for (int j = 0; j < arr.Count(); j++) |
| | | int first1 = Array.IndexOf(arr, right.MenuNo); |
| | | if (first1 <= -1) |
| | | { |
| | | roleright.RoleNo = RoleNo;//角色号 |
| | | roleright.MenuNo = arr[j];//菜单号 |
| | | roleright.CreateUser = Convert.ToInt32(userId);//创建人 |
| | | |
| | | //成功 将菜单号和角色号新增为新的数据 |
| | | i = await _rolerights.InsertRoleRight(roleright); |
| | | await Db.Deleteable<SysRoleRight>().Where(s => s.RoleNo == item.RoleNo && s.MenuNo == right.MenuNo).ExecuteCommandAsync(); |
| | | } |
| | | //删除子级角色权限信息。(角色权限减少,角色下级权限同时减少) |
| | | await _rolerights.DeleteChildRoleRight(RoleNo, MenuNo); |
| | | //返回 |
| | | return i; |
| | | |
| | | } |
| | | else |
| | | { |
| | | return i; |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | //抛出异常 |
| | | throw new Exception("新增角色权限信息异常", ex); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 删除角色权限信息 |
| | | /// </summary> |
| | | /// <param name="RoleNo">角色号</param> |
| | | /// <returns></returns> |
| | | /// <exception cref="Exception">捕获异常</exception> |
| | | public async Task<int> DeleteRoleRight(string RoleNo) |
| | | { |
| | | //捕获异常 |
| | | try |
| | | { |
| | | //删除 |
| | | int i = await _rolerights.DeleteRoleRight(RoleNo); |
| | | return i; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | //抛出异常 |
| | | throw new Exception("删除角色权限信息异常", ex); |
| | | } |
| | | } |
| | | } |
| | | } |