using Infrastructure; using Microsoft.AspNetCore.Mvc; using OpenAuth.App; using OpenAuth.App.Request; using OpenAuth.Repository.Core; using OpenAuth.Repository.Domain; using OpenAuth.WebApi.Model.CustomAttribute; namespace OpenAuth.WebApi.Controllers { /// /// 机构操作 /// [Route("api/[controller]/[action]")] [ApiController] //[ApiExplorerSettings(GroupName = "组织机构_Orgs")] public class OrgsController : ControllerBase { private readonly OrgManagerApp _app; public OrgsController(OrgManagerApp app) { _app = app; } #region 查询 #region 分页 /// /// 查询部门列表 /// /// /// [HttpGet] [AllData("Orgs", "LoadAllPage")] public async Task>>> LoadPage([FromQuery] QueryOrgListReq req) { return await _app.LoadPage(req); } #endregion #region 详情 /// /// 获取机构详情 /// [HttpGet] public Response Get(string id) { var result = new Response(); try { result.Result = _app.Get(id); } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } #endregion #region 部门树 /// /// 根据name查询组织树形结构 /// name为空查全部 /// /// /// [HttpGet] [AllData("Orgs", "OrgsAllTree")] public async Task>> OrgsTree(string name) { return await _app.OrgsTree(name); } #endregion #region 部门树【包含职级】 /// /// 部门树【包含职级】 /// /// [HttpGet] public async Task>> OrgPositonTree() { var result = new Response>(); try { result = await _app.OrgPositonTree(); } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } #endregion #region 子节点 [HttpGet] public async Task>> LoadChildren(long? parentId) { var response = new Response>(); try { response.Result = await _app.LoadChildren(parentId); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } #endregion #region 父节点 /// /// 查询节点所有父级 /// /// 节点id /// [HttpGet] public async Task>> LoadParents(long childId) { var response = new Response>(); try { response.Result = await _app.LoadParents(childId); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } #endregion #region 用户关联的部门和职级 [HttpGet] public async Task>> UserOrgs(long userId) { var response = new Response>(); try { response.Result = await _app.UserOrgs(userId); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } #endregion #endregion #region 新增 /// /// 新增 /// /// /// [HttpPost] public Response Add(OrgForm org) { var result = new Response(); try { result = _app.Add(org); } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } #endregion #region 修改 /// /// 修改 /// /// /// [HttpPost] public Response Update(SysOrg obj) { var result = new Response(); try { result = _app.Update(obj); } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } #endregion #region 删除选中的部门及所有的子部门 /// /// 删除选中的部门及所有的子部门 /// /// /// [HttpPost] public Response Delete([FromBody] string[] ids) { var result = new Response(); try { result = _app.DelOrgCascade(ids); } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } #endregion #region 为部门分配职级组 /// /// 为部门分配职级组 /// /// /// [HttpPost] public async Task> OrgPosGroup(AssignOrgPosGroup assignOrgPos) { var result = new Response(); try { result = await _app.OrgPosGroup(assignOrgPos); } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } #endregion #region 未启用/后台使用 #region 部门树【全部数据】 [HttpGet] [ApiExplorerSettings(IgnoreApi = true)] public async Task>> OrgsAllTree(string name) { return await _app.OrgsAllTree(name); } #endregion #region 分页 [HttpGet] [ApiExplorerSettings(IgnoreApi = true)] public async Task>>> LoadAllPage([FromQuery] QueryOrgListReq req) { return await _app.LoadAllPage(req); } #endregion #endregion } }