NewUser.php 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. namespace app\controller\admin\user;
  3. use app\common\repositories\user\ZeroUserRepository;
  4. use app\entity\admin\request\user\ZeroUserRequestEntity;
  5. use app\entity\admin\response\user\ZeroUserLineResponseEntity;
  6. use app\validate\admin\user\AddZeroUserValidate;
  7. use app\utils\EnumUtil;
  8. use think\response\Json;
  9. /**
  10. * 零号线用户控制器
  11. * 负责零号线用户的添加和更新操作
  12. */
  13. class NewUser
  14. {
  15. /**
  16. * 用户仓库实例
  17. * @var ZeroUserRepository
  18. */
  19. protected $repository;
  20. /**
  21. * 构造函数
  22. *
  23. * @param ZeroUserRepository $repository
  24. */
  25. public function __construct(ZeroUserRepository $repository)
  26. {
  27. $this->repository = $repository;
  28. }
  29. /**
  30. * 添加或更新零号线用户
  31. *
  32. * @param AddZeroUserValidate $validate 验证器实例
  33. * @return Json
  34. */
  35. public function addZeroUser(AddZeroUserValidate $validate): Json
  36. {
  37. // 执行验证
  38. $validationResult = $validate->validate();
  39. // 验证失败,返回错误信息
  40. if ($validationResult['status'] === 'error') {
  41. return app('json')->fail($validationResult['message']);
  42. }
  43. /** @var ZeroUserRequestEntity $entity 请求实体 */
  44. $entity = $validationResult['data'];
  45. // 自动验证枚举参数
  46. $requestData = $entity->toUnderlineArray();
  47. // 使用智能枚举验证器自动验证,直接传递枚举类名
  48. $validationResult = EnumUtil::autoValidate(\app\common\enum\user\ZeroUserEnum::class, $requestData);
  49. if (!$validationResult['valid']) {
  50. return app('json')->fail(implode('; ', $validationResult['errors']));
  51. }
  52. try {
  53. // 执行插入或更新操作
  54. $result = $this->repository->insertOrUpdate(
  55. $entity->getId(),
  56. $requestData
  57. );
  58. // 根据操作结果返回相应的响应
  59. if ($result) {
  60. $response = ZeroUserLineResponseEntity::success();
  61. return app('json')->success($response->toResponseArray());
  62. } else {
  63. $response = ZeroUserLineResponseEntity::error();
  64. return app('json')->fail($response->toResponseArray());
  65. }
  66. } catch (\Exception $e) {
  67. // 记录详细异常日志
  68. $errorMessage = '零号线用户操作异常: ' . $e->getMessage() .
  69. ' File: ' . $e->getFile() .
  70. ' Line: ' . $e->getLine();
  71. \think\facade\Log::error($errorMessage);
  72. // 根据环境返回不同的错误信息
  73. $isDev = app()->isDebug();
  74. if ($isDev) {
  75. // 开发环境返回详细错误信息
  76. return app('json')->fail('操作失败: ' . $e->getMessage());
  77. } else {
  78. // 生产环境返回友好提示
  79. return app('json')->fail('系统繁忙,请稍后重试');
  80. }
  81. }
  82. }
  83. }