NewUser.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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->getArray();
  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. \think\facade\Log::error('零号线用户操作异常: '.$e->getMessage());
  69. // 返回友好的错误信息
  70. return app('json')->fail('系统繁忙,请稍后重试');
  71. }
  72. }
  73. }