NewUser.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. namespace app\controller\admin\user;
  3. use app\common\repositories\user\ZeroUserRepository;
  4. use app\controller\admin\BaseController;
  5. use app\entity\admin\request\user\ZeroUserListRequestEntity;
  6. use app\entity\admin\request\user\ZeroUserRequestEntity;
  7. use app\entity\admin\response\user\ZeroUserLineResponseEntity;
  8. use app\entity\admin\response\user\ZeroUserListResponseEntity;
  9. use app\validate\admin\user\AddZeroUserValidate;
  10. use app\validate\admin\user\ZeroUserListValidate;
  11. use think\response\Json;
  12. /**
  13. * 零号线用户控制器
  14. * 负责零号线用户的添加和更新操作
  15. */
  16. class NewUser extends BaseController
  17. {
  18. /**
  19. * 用户仓库实例
  20. * @var ZeroUserRepository
  21. */
  22. protected $repository;
  23. /**
  24. * 构造函数
  25. *
  26. * @param ZeroUserRepository $repository
  27. */
  28. public function __construct(ZeroUserRepository $repository)
  29. {
  30. parent::__construct();
  31. $this->repository = $repository;
  32. }
  33. /**
  34. * 添加或更新零号线用户
  35. *
  36. * @param AddZeroUserValidate $validate 验证器实例
  37. * @return Json
  38. */
  39. public function addZeroUser(AddZeroUserValidate $validate): Json
  40. {
  41. // 执行验证并获取实体
  42. $validationResult = $this->validateRequest($validate, ZeroUserRequestEntity::class);
  43. if ($validationResult instanceof Json) {
  44. return $validationResult;
  45. }
  46. // 验证枚举数据
  47. $enumValidationResult = $this->validateEnumData($validationResult->toUnderlineArray());
  48. if ($enumValidationResult instanceof Json) {
  49. return $enumValidationResult;
  50. }
  51. try {
  52. // 执行插入或更新操作
  53. $result = $this->repository->insertOrUpdate(
  54. $validationResult->getId(),
  55. $validationResult->toUnderlineArray()
  56. );
  57. // 根据操作结果返回相应的响应
  58. if ($result) {
  59. $response = ZeroUserLineResponseEntity::success();
  60. return app('json')->success($response->toResponseArray());
  61. } else {
  62. $response = ZeroUserLineResponseEntity::error();
  63. return app('json')->fail($response->toResponseArray());
  64. }
  65. } catch (\Exception $e) {
  66. // 记录详细异常日志
  67. $errorMessage = '零号线用户操作异常: '.$e->getMessage().
  68. ' File: '.$e->getFile().
  69. ' Line: '.$e->getLine();
  70. \think\facade\Log::error($errorMessage);
  71. // 根据环境返回不同的错误信息
  72. $isDev = app()->isDebug();
  73. if ($isDev) {
  74. // 开发环境返回详细错误信息
  75. return app('json')->fail('操作失败: '.$e->getMessage());
  76. } else {
  77. // 生产环境返回友好提示
  78. return app('json')->fail('系统繁忙,请稍后重试');
  79. }
  80. }
  81. }
  82. /**
  83. * 0号线用户列表
  84. * @param ZeroUserListValidate $validate
  85. * @return Json
  86. */
  87. public function getZeroUserList(ZeroUserListValidate $validate): Json
  88. {
  89. // 执行验证并获取实体
  90. $validationResult = $this->validateRequest($validate, ZeroUserListRequestEntity::class);
  91. if ($validationResult instanceof Json) {
  92. return $validationResult;
  93. }
  94. // 验证枚举数据
  95. $enumValidationResult = $this->validateEnumData($validationResult->toUnderlineArray());
  96. if ($enumValidationResult instanceof Json) {
  97. return $enumValidationResult;
  98. }
  99. // 获取列表
  100. $list = $this->repository->getList($validationResult);
  101. return ZeroUserListResponseEntity::response($list);
  102. }
  103. }