Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

UserHandler.php 1.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. namespace app\webscoket\handler;
  3. use app\services\message\service\StoreServiceRecordServices;
  4. use app\services\user\UserAuthServices;
  5. use app\webscoket\BaseHandler;
  6. use app\webscoket\Manager;
  7. use app\webscoket\Response;
  8. use crmeb\exceptions\AuthException;
  9. /**
  10. * Class UserHandler
  11. * @package app\webscoket\handler
  12. */
  13. class UserHandler extends BaseHandler
  14. {
  15. /**
  16. * 用户登陆
  17. * @param array $data
  18. * @param Response $response
  19. * @return bool|\think\response\Json|null
  20. */
  21. public function login(array $data = [], Response $response)
  22. {
  23. // 游客登陆
  24. if (isset($data['tourist']) && $data['tourist']) {
  25. return $response->success();
  26. }
  27. if (!isset($data['token']) || !$token = $data['token']) {
  28. return $response->fail('授权失败!');
  29. }
  30. try {
  31. /** @var UserAuthServices $services */
  32. $services = app()->make(UserAuthServices::class);
  33. $authInfo = $services->parseToken($token);
  34. } catch (AuthException $e) {
  35. return $response->fail($e->getMessage());
  36. }
  37. $user = $authInfo['user'];
  38. /** @var StoreServiceRecordServices $service */
  39. $service = app()->make(StoreServiceRecordServices::class);
  40. $service->updateRecord(['to_uid' => $user->uid], ['online' => 1, 'type' => $res['form_type'] ?? 1]);
  41. //给所有在线客服人员发送当前用户上线消息
  42. $this->manager->pushing($this->manager->userFd(Manager::KEFU_TYPE_NUM), $response->message('user_online', [
  43. 'uid' => $user->uid,
  44. 'online' => 1
  45. ])->getData(), $this->fd);
  46. return $response->success('login', $user->toArray());
  47. }
  48. }