Admin.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. <?php
  2. namespace addons\shopro\library\chat\provider\auth;
  3. use addons\shopro\exception\ShoproException;
  4. use addons\shopro\library\chat\traits\DebugEvent;
  5. use addons\shopro\library\chat\traits\Helper;
  6. use addons\shopro\library\chat\traits\Session;
  7. use addons\shopro\library\chat\traits\NspData;
  8. use addons\shopro\library\chat\provider\auth\traits\CustomerService;
  9. use addons\shopro\library\chat\Chat;
  10. use addons\shopro\library\chat\ChatService;
  11. use addons\shopro\library\chat\Getter;
  12. use addons\shopro\library\chat\Sender;
  13. use PHPSocketIO\SocketIO;
  14. use PHPSocketIO\Socket;
  15. use PHPSocketIO\Nsp;
  16. /**
  17. * 管理员身份
  18. */
  19. class Admin
  20. {
  21. /**
  22. * debug 方式注册事件
  23. */
  24. use DebugEvent;
  25. /**
  26. * 助手方法
  27. */
  28. use Helper;
  29. /**
  30. * session 存储助手
  31. */
  32. use Session;
  33. /**
  34. * 绑定数据到 nsp
  35. */
  36. use NspData;
  37. /**
  38. * 客服事件
  39. */
  40. use CustomerService;
  41. /**
  42. * 当前 Chat 实例
  43. *
  44. * @var Chat
  45. */
  46. protected $chat;
  47. /**
  48. * 当前 phpsocket.io 实例
  49. *
  50. * @var SocketIO
  51. */
  52. protected $io;
  53. /**
  54. * 当前socket 连接
  55. *
  56. * @var Socket
  57. */
  58. protected $socket;
  59. /**
  60. * 当前 命名空间
  61. *
  62. * @var Nsp
  63. */
  64. public $nsp;
  65. /**
  66. * getter 实例
  67. *
  68. * @var Getter
  69. */
  70. protected $getter;
  71. /**
  72. * sender 实例
  73. *
  74. * @var Getter
  75. */
  76. protected $sender;
  77. /**
  78. * getter 实例
  79. *
  80. * @var ChatService
  81. */
  82. protected $chatService;
  83. public function __construct(Chat $chat)
  84. {
  85. $this->chat = $chat;
  86. $this->io = $chat->io;
  87. $this->socket = $chat->socket;
  88. $this->nsp = $chat->nsp;
  89. $this->getter = $chat->getter;
  90. $this->chatService = $chat->chatService;
  91. $this->sender = $chat->sender;
  92. }
  93. public function on()
  94. {
  95. // 检测当前 auth 是否是客服
  96. $this->register('check_identify', function ($data, $callback) {
  97. // 检查当前管理员登录状态
  98. if (!$this->chatService->isLogin()) {
  99. throw new ShoproException('请先登录管理后台');
  100. }
  101. $admin = $this->session('auth_user');
  102. // 获取当前管理员的客服身份
  103. $customerServices = $this->chatService->getCustomerServicesByAuth($admin['id'], $this->session('auth'));
  104. if (!$customerServices) {
  105. throw new ShoproException(''); // 您还不是客服,后台不提示,留空
  106. }
  107. // 注册客服事件
  108. $this->customerServiceOn();
  109. $this->sender->successSocket($callback, '验证成功', [
  110. 'customer_services' => $customerServices
  111. ]);
  112. });
  113. }
  114. }