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
}
}