AdoS8ConfigBindingsController.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using Admin.NET.Plugin.AiDOP.Const.S8;
  2. using Admin.NET.Plugin.AiDOP.Infrastructure.S8;
  3. using Microsoft.AspNetCore.Http;
  4. using Microsoft.AspNetCore.Mvc;
  5. namespace Admin.NET.Plugin.AiDOP.Controllers.S8;
  6. /// <summary>
  7. /// 「操作员绑定」配置入口 —— <b>已整体退役(S8-SYSUSER-ONLY-1)</b>。
  8. ///
  9. /// <para><b>它原来做什么</b>:维护 <c>EmployeeMaster.sys_user_id</c>,也就是把一个业务员工
  10. /// 绑定到一个系统账号,从而让这个员工"能被 S8 当成处理人使用"。</para>
  11. ///
  12. /// <para><b>为什么退役</b>:S8 的人现在<b>就是</b>系统账号,不再存在"这个员工对应哪个账号"这个问题。
  13. /// 保留一个绑定页面,只会让管理员继续以为"必须先绑定员工才能用 S8",
  14. /// 而实际上绑不绑都不影响任何 S8 行为 —— 这正是最容易造成误操作的那类残留入口。
  15. /// 真库现状也说明它从未真正被使用:1105 名员工里只有 8 个绑了账号。</para>
  16. ///
  17. /// <para><b>为什么返回 410 而不是删掉路由</b>:410 Gone 让还在调用旧地址的客户端
  18. /// 立刻拿到「已退役 + 原因」,而 404 会被当成路径写错,引出一轮无谓的排查。
  19. /// 本控制器<b>不再依赖任何服务</b>,也不再触碰 <c>EmployeeMaster</c> ——
  20. /// 退役的入口不应该还保有写主数据的能力。</para>
  21. ///
  22. /// <para><b>没有动的东西</b>:<c>EmployeeMaster</c> 表与其中已有的 8 条 <c>sys_user_id</c> 绑定
  23. /// 全部原样保留。它属于 S0 业务主数据,不归 S8 处置。</para>
  24. /// </summary>
  25. [ApiController]
  26. [Route("api/aidop/s8/config")]
  27. [NonUnify]
  28. public class AdoS8ConfigBindingsController : ControllerBase
  29. {
  30. private const string RetiredMessage =
  31. "「操作员绑定」已退役:S8 人员身份统一为系统账号,无需再把员工绑定到账号。"
  32. + "请在系统账号管理中维护账号,并用 GET /api/aidop/s8/master-data/users 选择人员。";
  33. private IActionResult Retired() =>
  34. StatusCode(StatusCodes.Status410Gone, new
  35. {
  36. message = RetiredMessage,
  37. replacedBy = "/api/aidop/s8/master-data/users"
  38. });
  39. [HttpGet("operator-bindings")]
  40. [S8Permission(S8PermissionCatalog.ConfigRead)]
  41. public IActionResult ListRetired() => Retired();
  42. [HttpPost("operator-bindings")]
  43. [S8Permission(S8PermissionCatalog.ConfigOperatorBind)]
  44. public IActionResult BindRetired() => Retired();
  45. [HttpDelete("operator-bindings/{employeeId:long}")]
  46. [S8Permission(S8PermissionCatalog.ConfigOperatorBind)]
  47. public IActionResult UnbindRetired(long employeeId)
  48. {
  49. _ = employeeId;
  50. return Retired();
  51. }
  52. [HttpGet("sys-users")]
  53. [S8Permission(S8PermissionCatalog.ConfigRead)]
  54. public IActionResult SysUsersRetired() => Retired();
  55. }