using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using VOL.Core.Controllers.Basic; using VOL.Core.Enums; using VOL.Core.Extensions; using VOL.Core.Filters; using VOL.Core.ManageUser; using VOL.Core.UserManager; using VOL.Core.Utilities; using VOL.Entity.AttributeManager; using VOL.Entity.DomainModels; using VOL.System.IServices; using VOL.System.Repositories; using VOL.System.Services; namespace VOL.System.Controllers { [Route("api/role")] public partial class Sys_RoleController { [HttpPost, Route("getCurrentTreePermission")] [ApiActionPermission(ActionPermissionOptions.Search)] public async Task GetCurrentTreePermission() { return Json(await Service.GetCurrentTreePermission()); } [HttpPost, Route("getUserTreePermission")] [ApiActionPermission(ActionPermissionOptions.Search)] public async Task GetUserTreePermission(int roleId) { return Json(await Service.GetUserTreePermission(roleId)); } [HttpPost, Route("savePermission")] [ApiActionPermission(ActionPermissionOptions.Update)] public async Task SavePermission([FromBody] List userPermissions, int roleId) { return Json(await Service.SavePermission(userPermissions, roleId)); } /// /// 获取当前角色下的所有角色 /// /// [HttpPost, Route("getUserChildRoles")] [ApiActionPermission(ActionPermissionOptions.Search)] public IActionResult GetUserChildRoles() { int roleId = UserContext.Current.RoleId; var data = RoleContext.GetAllChildren(UserContext.Current.RoleId); if (UserContext.Current.IsSuperAdmin) { return Json(WebResponseContent.Instance.OK(null, data)); } //不是超级管理,将自己的角色查出来,在树形菜单上作为根节点 var self = Sys_RoleRepository.Instance.FindAsIQueryable(x => x.Role_Id == roleId) .Select(s => new VOL.Core.UserManager.RoleNodes() { Id = s.Role_Id, ParentId = 0,//将自己的角色作为root节点 RoleName = s.RoleName }).ToList(); data.AddRange(self); return Json(WebResponseContent.Instance.OK(null, data)); } /// /// treetable 获取子节点数据(2021.05.02) /// /// /// [ApiActionPermission(ActionPermissionOptions.Search)] [HttpPost, Route("GetPageData")] public override ActionResult GetPageData([FromBody] PageDataOptions loadData) { //获取根节点数据(对应Sys_Role1.js中searchBefore方法) if (loadData.Value.GetInt() == 1) { return GetTreeTableRootData(loadData).Result; } return base.GetPageData(loadData); } /// /// treetable 获取子节点数据(2021.05.02) /// /// [HttpPost, Route("getTreeTableRootData")] [ApiActionPermission(ActionPermissionOptions.Search)] public async Task GetTreeTableRootData([FromBody] PageDataOptions options) { //页面加载根节点数据条件x => x.ParentId == 0,自己根据需要设置 var query = Sys_RoleRepository.Instance.FindAsIQueryable(x => x.ParentId == 0); var rows = await query.TakeOrderByPage(options.Page, options.Rows) .OrderBy(x => x.Role_Id).Select(s => new { s.Role_Id, s.ParentId, s.RoleName, s.DeptName, s.Dept_Id, s.Enable, s.CreateDate, s.Creator, s.Modifier, s.ModifyDate, s.OrderNo, hasChildren = true }).ToListAsync(); return JsonNormal(new { total = await query.CountAsync(), rows }); } /// ///treetable 获取子节点数据(2021.05.02) /// /// [HttpPost, Route("getTreeTableChildrenData")] [ApiActionPermission(ActionPermissionOptions.Search)] public async Task GetTreeTableChildrenData(int roleId) { //点击节点时,加载子节点数据 var roleRepository = Sys_RoleRepository.Instance.FindAsIQueryable(x => true); var rows = await roleRepository.Where(x => x.ParentId == roleId) .Select(s => new { s.Role_Id, s.ParentId, s.RoleName, s.DeptName, s.Dept_Id, s.Enable, s.CreateDate, s.Creator, s.Modifier, s.ModifyDate, s.OrderNo, hasChildren = roleRepository.Any(x => x.ParentId == s.Role_Id) }).ToListAsync(); return JsonNormal(new { rows }); } } }