SaveChatRecordJob.php 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. namespace App\Jobs;
  3. use App\Model\GoodsModel;
  4. use App\Model\Mongo\MessageModel;
  5. use App\Model\ShopsModel;
  6. use App\Model\UserModel;
  7. use App\Repositories\Service\QueueService;
  8. use Carbon\Carbon;
  9. use Hyperf\AsyncQueue\Job;
  10. class SaveChatRecordJob extends Job
  11. {
  12. public $params;
  13. public function __construct($params)
  14. {
  15. // 这里最好是普通数据,不要使用携带 IO 的对象,比如 PDO 对象
  16. $this->params = $params;
  17. }
  18. public function handle()
  19. {
  20. try {
  21. if ($this->params['is_admin'] == 1) {
  22. $receiveUser = UserModel::query()->where('code', $this->params['receive_uid'])->first(['nick as title']);
  23. $fromUser = ShopsModel::query()->where('uid', $this->params['from_uid'])->first(['title as nick']);
  24. } else {
  25. $receiveUser = ShopsModel::query()->where('uid', $this->params['receive_uid'])->first(['title']);
  26. $fromUser = UserModel::query()->where('code', $this->params['from_uid'])->first(['nick']);
  27. }
  28. $date = date('Y-m-d H:i:s');
  29. $data = [
  30. 'subject' => '购买商品聊天信息',
  31. 'struct_type' => $this->params['struct_type'],
  32. 'receive_uid' => $this->params['receive_uid'],
  33. 'shops_name' => $receiveUser->title,
  34. 'receive_type' => 'shops', //接收对象类型,user=单个用户;all_user=所有用户
  35. 'from_uid' => $this->params['from_uid'],
  36. 'from_nick' => $fromUser->nick,
  37. 'from_type' => 'shops',
  38. 'created_at' => toMongoIsoDate(Carbon::parse($date)),
  39. 'updated_at' => toMongoIsoDate(Carbon::parse($date)),
  40. 'read_at' => $this->params['read_at'],
  41. 'is_admin' => $this->params['is_admin']
  42. ];
  43. $content['message'] = $this->params['message'];
  44. $data['content'] = json_encode($content, JSON_UNESCAPED_UNICODE);
  45. $res = make(MessageModel::class)->db()->insertOne($data);
  46. if ($this->params['is_admin'] == 2) {
  47. $sendData = [
  48. 'routes' => 'api/tg/send/chat/message',
  49. 'content' => [
  50. 'dispatcher' => ($fromUser->nick ?? '') . '(' . $this->params['from_uid'] .')',
  51. 'recipient' => ($receiveUser->title ?? '') . '(' . $this->params['receive_uid'] .')',
  52. 'content' => $data['content'],
  53. ]
  54. ];
  55. make(QueueService::class)->publicSendTgMegJob($sendData);
  56. }
  57. if (!$res) {
  58. logger('聊天日志存储失败', [json_encode($data, JSON_UNESCAPED_UNICODE)]);
  59. }
  60. } catch (\Exception $exception) {
  61. logger('SaveChatRecordJob', [$exception->getMessage(), json_encode($this->params, JSON_UNESCAPED_UNICODE)]);
  62. }
  63. }
  64. }