using Admin.NET.Plugin.AiDOP.Const.S8;
using Admin.NET.Plugin.AiDOP.Infrastructure;
using Admin.NET.Plugin.AiDOP.Infrastructure.S8;
using Admin.NET.Plugin.AiDOP.Service.S8;
namespace Admin.NET.Plugin.AiDOP.Controllers.S8;
///
/// S8 主数据下拉:优先复用 S0 已落库主数据语义(部门等),无则返回空列表,不把「下拉查询」误建成独立业务表。
///
/// S8-P0-3-MASTERDATA-TRUSTED-SCOPE-1:本控制器原先是 KNOWN-ISSUES I-001 里
/// 「6 个未接入可信作用域解析」之一。GET /master-data/employees?factoryRefId=<任意工厂>
/// 实测可返回 500 条其它租户员工的工号与真实姓名,现已接入 。
///
/// 入参语义:factoryRefId 已从所有 Action 签名移除;客户端继续携带也不产生授权效果。
///
[ApiController]
[Route("api/aidop/s8/master-data")]
[NonUnify]
public class AdoS8MasterDataController : ControllerBase
{
private readonly S8MasterDataAdapter _svc;
private readonly S8TrustedScopeResolver _scope;
public AdoS8MasterDataController(S8MasterDataAdapter svc, S8TrustedScopeResolver scope)
{
_svc = svc;
_scope = scope;
}
[HttpGet("departments")]
[S8Permission(S8PermissionCatalog.ExceptionRead)]
public async Task DepartmentsAsync()
{
try { return Ok(await _svc.GetDepartmentsAsync(await _scope.ResolveAsync())); }
catch (S8BizException ex) { return BadRequest(new { message = ex.Message }); }
}
[HttpGet("employees")]
[S8Permission(S8PermissionCatalog.ExceptionRead)]
public async Task EmployeesAsync()
{
try { return Ok(await _svc.GetEmployeesAsync(await _scope.ResolveAsync())); }
catch (S8BizException ex) { return BadRequest(new { message = ex.Message }); }
}
[HttpGet("lines")]
[S8Permission(S8PermissionCatalog.ExceptionRead)]
public async Task LinesAsync()
{
try { return Ok(await _svc.GetLinesAsync(await _scope.ResolveAsync())); }
catch (S8BizException ex) { return BadRequest(new { message = ex.Message }); }
}
}