namespace MiaoYu.Api.Admin.Controllers.Systems;
///
/// 组织机构控制器
///
[ControllerDescriptor(MenuId = "21", DisplayName = "组织机构")]
public class SysOrganizationController : AdminControllerBase
{
private readonly IRepository _sysOrganizationRepository;
private readonly IRepository _sysUserRepository;
private readonly IAccountService _accountService;
public SysOrganizationController(SysOrganizationService defaultService,
IRepository sysOrganizationRepository,
IRepository sysUserRepository,
IAccountService accountService)
: base(defaultService)
{
_sysOrganizationRepository = sysOrganizationRepository;
_sysUserRepository = sysUserRepository;
_accountService = accountService;
}
///
/// 获取列表
///
///
///
[ActionDescriptor(DisplayName = "查看列表")]
[HttpPost]
public async Task> FindListAsync([FromBody] SysOrganization search)
{
return await _defaultService.FindListAsync(search);
}
///
/// 根据id数组删除
///
///
///
[ActionDescriptor(DisplayName = "删除数据")]
[HttpPost]
public async Task DeleteListAsync([FromBody] List ids)
{
await _defaultService.DeleteListAsync(ids);
return true;
}
///
/// 查询表单数据
///
///
///
///
[ActionDescriptor(DisplayName = "查看表单")]
[HttpGet("{id?}/{parentId?}")]
public async Task> FindFormAsync([FromRoute] int id, int parentId)
{
return await _defaultService.FindFormAsync(id, parentId);
}
///
/// 添加
///
///
///
[RequestLimitFilter]
[ActionDescriptor(PermissionFunctionConsts.Function_Insert, DisplayName = "创建表单")]
[HttpPost]
[ApiCheckModel]
public Task CreateAsync([FromBody] SysOrganization form)
{
return _defaultService.SaveFormAsync(form);
}
///
/// 编辑
///
///
///
[RequestLimitFilter]
[ActionDescriptor(PermissionFunctionConsts.Function_Update, DisplayName = "编辑表单")]
[HttpPost]
[ApiCheckModel]
public Task UpdateAsync([FromBody] SysOrganization form)
{
return _defaultService.SaveFormAsync(form);
}
///
/// 获取组织架构树
///
///
[ActionDescriptor(DisplayName = "查看组织架构树")]
[HttpPost]
[Time("查看组织架构树")]
public async Task GetSysOrganizationTreeAsync()
{
var expandedRowKeys = new List();
var accountInfo = _accountService.GetAccountContext();
var sysOrganizationAll = await _sysOrganizationRepository
.DataPermission(_sysOrganizationRepository.SelectNoTracking, accountInfo, s => s.CreatorUserId!, s => s.Id)
.OrderBy(w => w.OrderNumber)
.ToListAsync();
return new
{
expandedRowKeys,
allKeys = sysOrganizationAll.OrderBy(w => w.OrderNumber).Select(w => w.Id).ToList(),
rows = sysOrganizationAll
};
}
}