From 6778ebf0295313ce2b56bba000cef96e18afedd4 Mon Sep 17 00:00:00 2001 From: hwh <332078369@qq.com> Date: 星期五, 28 六月 2024 08:10:11 +0800 Subject: [PATCH] 角色、权限 --- Wms/WMS.BLL/SysServer/RoleRightServer.cs | 149 +++++++++++++++++-------------------------------- 1 files changed, 52 insertions(+), 97 deletions(-) diff --git a/Wms/WMS.BLL/SysServer/RoleRightServer.cs b/Wms/WMS.BLL/SysServer/RoleRightServer.cs index 1f16667..63cc975 100644 --- a/Wms/WMS.BLL/SysServer/RoleRightServer.cs +++ b/Wms/WMS.BLL/SysServer/RoleRightServer.cs @@ -7,7 +7,10 @@ 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; @@ -23,13 +26,16 @@ /// 渚濊禆娉ㄥ叆 /// </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(IRoleRightRepository rolerights, UserManager userManager) { _rolerights = rolerights; + _userManager = userManager; } /// <summary> @@ -37,28 +43,24 @@ /// </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) + .Select<RoleRightDto>() + .ToListAsync(); } /// <summary> @@ -66,21 +68,9 @@ /// </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> @@ -90,79 +80,44 @@ /// <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); - } - } } } \ No newline at end of file -- Gitblit v1.8.0