SaveUserChatRecordJob.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?php
  2. namespace App\Jobs;
  3. use App\Model\Mongo\MessageModel;
  4. use App\Model\UserModel;
  5. use Carbon\Carbon;
  6. use Hyperf\AsyncQueue\Job;
  7. class SaveUserChatRecordJob extends Job
  8. {
  9. public $params;
  10. public function __construct($params)
  11. {
  12. // 这里最好是普通数据,不要使用携带 IO 的对象,比如 PDO 对象
  13. $this->params = $params;
  14. }
  15. public function handle()
  16. {
  17. try {
  18. $userModel = new UserModel();
  19. $fromUserInfo = $userModel->where('code', $this->params['from_uid'])->first(['nick', 'avatar']);
  20. $receiveUserInfo = $userModel->where('code', $this->params['receive_uid'])->first(['nick', 'avatar']);
  21. $date = date('Y-m-d H:i:s');
  22. $chatData = [
  23. 'subject' => '用户聊天',
  24. 'struct_type' => $this->params['msg_type'],
  25. 'receive_uid' => $this->params['receive_uid'],
  26. 'receive_nick' => $receiveUserInfo->nick,
  27. 'receive_avatar' => $receiveUserInfo->avatar,
  28. 'receive_type' => 'user',
  29. 'from_uid' => $this->params['from_uid'],
  30. 'from_nick' => $fromUserInfo->nick,
  31. 'from_avatar' => $fromUserInfo->avatar,
  32. 'from_type' => 'user',
  33. 'created_at' => toMongoIsoDate(Carbon::parse($date)),
  34. 'updated_at' => toMongoIsoDate(Carbon::parse($date)),
  35. 'read_at' => $this->params['read_at'],
  36. 'content' => json_encode(['message' => $this->params['message']], JSON_UNESCAPED_UNICODE),
  37. ];
  38. make(MessageModel::class)->db()->insertOne($chatData);
  39. } catch (\Exception $exception) {
  40. logger('SaveChatRecordJob', [$exception->getMessage(), json_encode($this->params, JSON_UNESCAPED_UNICODE)]);
  41. }
  42. }
  43. }