AdoS8MasterDataController.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using Admin.NET.Plugin.AiDOP.Const.S8;
  2. using Admin.NET.Plugin.AiDOP.Infrastructure;
  3. using Admin.NET.Plugin.AiDOP.Infrastructure.S8;
  4. using Admin.NET.Plugin.AiDOP.Service.S8;
  5. namespace Admin.NET.Plugin.AiDOP.Controllers.S8;
  6. /// <summary>
  7. /// S8 主数据下拉:优先复用 S0 已落库主数据语义(部门等),无则返回空列表,不把「下拉查询」误建成独立业务表。
  8. ///
  9. /// <para><b>S8-P0-3-MASTERDATA-TRUSTED-SCOPE-1</b>:本控制器原先是 KNOWN-ISSUES I-001 里
  10. /// 「6 个未接入可信作用域解析」之一。<c>GET /master-data/employees?factoryRefId=&lt;任意工厂&gt;</c>
  11. /// 实测可返回 500 条其它租户员工的工号与真实姓名,现已接入 <see cref="S8TrustedScopeResolver"/>。</para>
  12. ///
  13. /// <para><b>入参语义</b>:<c>factoryRefId</c> 已从所有 Action 签名移除;客户端继续携带也不产生授权效果。</para>
  14. /// </summary>
  15. [ApiController]
  16. [Route("api/aidop/s8/master-data")]
  17. [NonUnify]
  18. public class AdoS8MasterDataController : ControllerBase
  19. {
  20. private readonly S8MasterDataAdapter _svc;
  21. private readonly S8TrustedScopeResolver _scope;
  22. public AdoS8MasterDataController(S8MasterDataAdapter svc, S8TrustedScopeResolver scope)
  23. {
  24. _svc = svc;
  25. _scope = scope;
  26. }
  27. [HttpGet("departments")]
  28. [S8Permission(S8PermissionCatalog.ExceptionRead)]
  29. public async Task<IActionResult> DepartmentsAsync()
  30. {
  31. try { return Ok(await _svc.GetDepartmentsAsync(await _scope.ResolveAsync())); }
  32. catch (S8BizException ex) { return BadRequest(new { message = ex.Message }); }
  33. }
  34. [HttpGet("employees")]
  35. [S8Permission(S8PermissionCatalog.ExceptionRead)]
  36. public async Task<IActionResult> EmployeesAsync()
  37. {
  38. try { return Ok(await _svc.GetEmployeesAsync(await _scope.ResolveAsync())); }
  39. catch (S8BizException ex) { return BadRequest(new { message = ex.Message }); }
  40. }
  41. [HttpGet("lines")]
  42. [S8Permission(S8PermissionCatalog.ExceptionRead)]
  43. public async Task<IActionResult> LinesAsync()
  44. {
  45. try { return Ok(await _svc.GetLinesAsync(await _scope.ResolveAsync())); }
  46. catch (S8BizException ex) { return BadRequest(new { message = ex.Message }); }
  47. }
  48. }