| | |
| | | using WIDESEA_Model.Models; |
| | | using WIDESEA_Model.Models.System; |
| | | using WIDESEA_SystemRepository; |
| | | using WIDESEA_Core.Helper; |
| | | |
| | | namespace WIDESEA_SystemService |
| | | { |
| | |
| | | return list; |
| | | } |
| | | |
| | | public List<RoleNodes> GetAllRoleId() |
| | | public List<RoleNodes> GetAllRoleId() |
| | | { |
| | | List<RoleNodes> roles = BaseDal.QueryData().Select(s => new RoleNodes() { Id = s.RoleId, ParentId = s.ParentId, RoleName = s.RoleName }).ToList(); |
| | | |
| | |
| | | { |
| | | return GetUserTreePermission(App.User.RoleId); |
| | | } |
| | | public override WebResponseContent UpdateData(SaveModel saveModel) |
| | | { |
| | | var ParentId = saveModel.MainData[nameof(Sys_Role.ParentId).FirstLetterToLower()].ObjToInt();//ç¶çº§ID |
| | | var RoleId = saveModel.MainData[nameof(Sys_Role.RoleId).FirstLetterToLower()].ObjToInt();//è§è²ID |
| | | if (RoleId == ParentId) return WebResponseContent.Instance.Error("ç¶çº§IDä¸è½ä¸ºèªå·±"); |
| | | if (App.User.RoleId == RoleId) return WebResponseContent.Instance.Error("æ æä½æé"); |
| | | return base.UpdateData(saveModel); |
| | | } |
| | | |
| | | public override PageGridData<Sys_Role> GetPageData(PageDataOptions options) |
| | | { |
| | | PageGridData<Sys_Role> pageGridData = new PageGridData<Sys_Role>(); |
| | | if (App.User.IsSuperAdmin) |
| | | { |
| | | var GridData = base.GetPageData(options); |
| | | pageGridData = new PageGridData<Sys_Role>() |
| | | { |
| | | Rows = options.Order?.ToLower() == OrderByType.Asc.ToString().ToLower() ? GridData.Rows.OrderBy(x => x.RoleId).ToList() : GridData.Rows, |
| | | Total = GridData.Total |
| | | }; |
| | | return pageGridData; |
| | | } |
| | | |
| | | var roleIds = GetAllChildren(App.User.RoleId).Select(x => x.Id); |
| | | //æ å½¢èåä¼ æ¥è¯¢è§è²ä¸ææç¨æ· |
| | | string where = ValidatePageOptions(options); |
| | | |
| | | int total = 0; |
| | | pageGridData = new PageGridData<Sys_Role>() |
| | | { |
| | | Rows = BaseDal.Db.Queryable<Sys_Role>().Where(x => roleIds.Contains(x.RoleId)).Where(where).OrderBy(x => x.RoleId).ToPageList(options.Page, options.Rows), |
| | | Total = total |
| | | }; |
| | | |
| | | return pageGridData; |
| | | } |
| | | /// <summary> |
| | | /// ç¼è¾æéæ¶ï¼è·åæå®è§è²çææèåæé |
| | | /// </summary> |
| | |
| | | //è·åç¨æ·æé |
| | | List<Permissions> permissions = _MenuRepository.GetPermissions(roleId); |
| | | //æéç¨æ·æéæ¥è¯¢ææçèåä¿¡æ¯ |
| | | List<MenuDTO> menus = _MenuService.GetUserMenuList(roleId); |
| | | List<MenuDTO> menus = _MenuService.GetUserMenuList(roleId); |
| | | //è·åå½åç¨æ·æéå¦:(Add,Search)对åºçæ¾ç¤ºææ¬ä¿¡æ¯å¦:Addï¼æ·»å ï¼Search:æ¥è¯¢ |
| | | var data = menus.Select(x => new |
| | | { |
| | |
| | | string message = ""; |
| | | try |
| | | { |
| | | if (!GetAllChildren(App.User.RoleId).Exists(x => x.Id == roleId)) |
| | | var RoleNodes = GetAllChildren(App.User.RoleId); |
| | | RoleNodes = RoleNodes.Where(x => x.Id != App.User.RoleId).ToList(); |
| | | if (!RoleNodes.Exists(x => x.Id == roleId) /*&& !App.User.IsRoleIdSuperAdmin(App.User.RoleId)*/) |
| | | return WebResponseContent.Instance.Error("没ææéä¿®æ¹æ¤è§è²çæéä¿¡æ¯"); |
| | | //å½åç¨æ·çæé |
| | | List<Permissions> permissions = _MenuRepository.GetPermissions(App.User.RoleId); |
| | |
| | | List<int> originalMeunIds = new List<int>(); |
| | | //被åé
è§è²çæé |
| | | List<Sys_RoleAuth> roleAuths = _RoleAuthRepository.QueryData(x => x.RoleId == roleId); |
| | | List<Sys_RoleAuth> updateAuths = new List<Sys_RoleAuth>(); |
| | | foreach (UserPermissionDTO x in userPermissions) |
| | | { |
| | | Permissions per = permissions.FirstOrDefault(p => p.MenuId == x.Id); |
| | | //ä¸è½åé
è¶
è¿å½åç¨æ·çæé |
| | | if (per == null) continue; |
| | | //per.UserAuthArr.Contains(a.Value)æ ¡éªæéèå´ |
| | | string[] arr = x.Actions == null || x.Actions.Count == 0 |
| | | ? new string[0] |
| | | : x.Actions.Where(a => per.UserAuthArr.Contains(a.Value)) |
| | | .Select(s => s.Value).ToArray(); |
| | | |
| | | //妿å½åæé没æåé
è¿ï¼è®¾ç½®Auth_Idé»è®¤ä¸º0ï¼è¡¨ç¤ºæ°å¢çæé |
| | | var auth = roleAuths.Where(r => r.MenuId == x.Id).Select(s => new { s.AuthId, s.AuthValue, s.MenuId }).FirstOrDefault(); |
| | | string newAuthValue = string.Join(",", arr); |
| | | //æé没æåçåååä¸å¤ç |
| | | if (auth == null || auth.AuthValue != newAuthValue) |
| | | { |
| | | updateAuths.Add(new Sys_RoleAuth() |
| | | { |
| | | RoleId = roleId, |
| | | MenuId = x.Id, |
| | | AuthValue = string.Join(",", arr), |
| | | AuthId = auth == null ? 0 : auth.AuthId, |
| | | ModifyDate = DateTime.Now, |
| | | Modifier = App.User.UserName, |
| | | CreateDate = DateTime.Now, |
| | | Creater = App.User.UserName |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | originalMeunIds.Add(auth.MenuId); |
| | | } |
| | | |
| | | } |
| | | //æ´æ°æé |
| | | _RoleAuthRepository.UpdateData(updateAuths.Where(x => x.AuthId > 0).ToList()); |
| | | //æ°å¢çæé |
| | | _RoleAuthRepository.AddData(updateAuths.Where(x => x.AuthId <= 0).ToList()); |
| | | |
| | | //è·åæéåæ¶çæé |
| | | int[] authIds = roleAuths.Where(x => userPermissions.Select(u => u.Id) |
| | | .ToList().Contains(x.MenuId) || originalMeunIds.Contains(x.MenuId)) |
| | | .Select(s => s.AuthId) |
| | | .ToArray(); |
| | | List<Sys_RoleAuth> delAuths = roleAuths.Where(x => x.AuthValue != "" && !authIds.Contains(x.AuthId)).ToList(); |
| | | delAuths.ForEach(x => |
| | | { |
| | | x.AuthValue = ""; |
| | | }); |
| | | //å°åæ¶çæé设置为"" |
| | | _RoleAuthRepository.DeleteData(delAuths); |
| | | |
| | | int addCount = updateAuths.Where(x => x.AuthId <= 0).Count(); |
| | | int updateCount = updateAuths.Where(x => x.AuthId > 0).Count(); |
| | | |
| | | string _version = DateTime.Now.ToString("yyyyMMddHHMMssfff"); |
| | | |
| | | |
| | | content.OK($"ä¿åæåï¼æ°å¢å é
èåæé{addCount}æ¡,æ´æ°èå{updateCount}æ¡,å 餿é{delAuths.Count}æ¡"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | message = "å¼å¸¸ä¿¡æ¯ï¼" + ex.Message + ex.StackTrace + ","; |
| | | } |
| | | |
| | | return content; |
| | | } |
| | | /// <summary> |
| | | /// ç¼è¾æéæ¶ï¼è·åå½åç¨æ·çææèåæé |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public WebResponseContent GetCurrentUserTreePermissionPDA() |
| | | { |
| | | return GetUserTreePermissionPDA(App.User.RoleId); |
| | | } |
| | | |
| | | public WebResponseContent GetCurrentTreePermissionPDA() |
| | | { |
| | | WebResponseContent content = GetCurrentUserTreePermissionPDA(); |
| | | int roleId = App.User.RoleId; |
| | | return WebResponseContent.Instance.OK(null, new |
| | | { |
| | | tree = content.Data, |
| | | roles = GetAllChildren(roleId) |
| | | }); |
| | | } |
| | | |
| | | public WebResponseContent GetUserTreePermissionPDA(int roleId) |
| | | { |
| | | if (!App.User.IsRoleIdSuperAdmin(roleId) && App.User.RoleId != roleId) |
| | | { |
| | | if (!(GetAllChildren(App.User.RoleId)).Exists(x => x.Id == roleId)) |
| | | { |
| | | return WebResponseContent.Instance.Error("没ææéè·åæ¤è§è²çæéä¿¡æ¯"); |
| | | } |
| | | } |
| | | //è·åç¨æ·æé |
| | | List<Permissions> permissions = _MenuRepository.GetPermissions(roleId); |
| | | //æéç¨æ·æéæ¥è¯¢ææçèåä¿¡æ¯ |
| | | List<MenuDTO> menus = _MenuService.GetUserMenuListPDA(roleId); |
| | | |
| | | //è·åå½åç¨æ·æéå¦:(Add,Search)对åºçæ¾ç¤ºææ¬ä¿¡æ¯å¦:Addï¼æ·»å ï¼Search:æ¥è¯¢ |
| | | var data = menus.Where(x => x.MenuType == 1).Select(x => new |
| | | { |
| | | Id = x.MenuId, |
| | | Pid = x.ParentId, |
| | | Text = x.MenuName, |
| | | IsApp = x.MenuType == 1, |
| | | Actions = _MenuService.GetActions(x.MenuId, x.Actions, permissions, roleId) |
| | | }); |
| | | return WebResponseContent.Instance.OK(null, data); |
| | | } |
| | | |
| | | public WebResponseContent SavePermissionPDA(List<UserPermissionDTO> userPermissions, int roleId) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | string message = ""; |
| | | try |
| | | { |
| | | if (!GetAllChildren(App.User.RoleId).Exists(x => x.Id == roleId)) |
| | | return WebResponseContent.Instance.Error("没ææéä¿®æ¹æ¤è§è²çæéä¿¡æ¯"); |
| | | //å½åç¨æ·çæé |
| | | List<Permissions> permissions = _MenuRepository.GetPermissions(App.User.RoleId); |
| | | |
| | | List<int> originalMeunIds = new List<int>(); |
| | | |
| | | List<int> menuIds = _MenuRepository.QueryData(x => x.MenuId, x => x.MenuType == 1); |
| | | |
| | | //被åé
è§è²çæé |
| | | List<Sys_RoleAuth> roleAuths = _RoleAuthRepository.QueryData(x => x.RoleId == roleId && menuIds.Contains(x.MenuId)); |
| | | List<Sys_RoleAuth> updateAuths = new List<Sys_RoleAuth>(); |
| | | foreach (UserPermissionDTO x in userPermissions) |
| | | { |
| | |
| | | x.AuthValue = ""; |
| | | }); |
| | | //å°åæ¶çæé设置为"" |
| | | _RoleAuthRepository.UpdateData(delAuths); |
| | | _RoleAuthRepository.DeleteData(delAuths); |
| | | |
| | | int addCount = updateAuths.Where(x => x.AuthId <= 0).Count(); |
| | | int updateCount = updateAuths.Where(x => x.AuthId > 0).Count(); |
| | | |
| | | |
| | | string _version = DateTime.Now.ToString("yyyyMMddHHMMssfff"); |
| | | |
| | | |