| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- <?php
- namespace app\controller\admin\user;
- use app\common\repositories\user\ZeroUserRepository;
- use app\entity\admin\request\user\ZeroUserRequestEntity;
- use app\entity\admin\response\user\ZeroUserLineResponseEntity;
- use app\validate\admin\user\AddZeroUserValidate;
- use app\utils\EnumUtil;
- use think\response\Json;
- /**
- * 零号线用户控制器
- * 负责零号线用户的添加和更新操作
- */
- class NewUser
- {
- /**
- * 用户仓库实例
- * @var ZeroUserRepository
- */
- protected $repository;
- /**
- * 构造函数
- *
- * @param ZeroUserRepository $repository
- */
- public function __construct(ZeroUserRepository $repository)
- {
- $this->repository = $repository;
- }
- /**
- * 添加或更新零号线用户
- *
- * @param AddZeroUserValidate $validate 验证器实例
- * @return Json
- */
- public function addZeroUser(AddZeroUserValidate $validate): Json
- {
- // 执行验证
- $validationResult = $validate->validate();
- // 验证失败,返回错误信息
- if ($validationResult['status'] === 'error') {
- return app('json')->fail($validationResult['message']);
- }
- /** @var ZeroUserRequestEntity $entity 请求实体 */
- $entity = $validationResult['data'];
- // 自动验证枚举参数
- $requestData = $entity->getArray();
-
- // 使用智能枚举验证器自动验证,直接传递枚举类名
- $validationResult = EnumUtil::autoValidate(\app\common\enum\user\ZeroUserEnum::class, $requestData);
- if (!$validationResult['valid']) {
- return app('json')->fail(implode('; ', $validationResult['errors']));
- }
- try {
- // 执行插入或更新操作
- $result = $this->repository->insertOrUpdate(
- $entity->getId(),
- $requestData
- );
- // 根据操作结果返回相应的响应
- if ($result) {
- $response = ZeroUserLineResponseEntity::success();
- return app('json')->success($response->toResponseArray());
- } else {
- $response = ZeroUserLineResponseEntity::error();
- return app('json')->fail($response->toResponseArray());
- }
- } catch (\Exception $e) {
- // 记录异常日志
- \think\facade\Log::error('零号线用户操作异常: '.$e->getMessage());
- // 返回友好的错误信息
- return app('json')->fail('系统繁忙,请稍后重试');
- }
- }
- }
|