| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- <?php
- namespace App\Jobs;
- use App\Model\GoodsModel;
- use App\Model\Mongo\MessageModel;
- use App\Model\ShopsModel;
- use App\Model\UserModel;
- use App\Repositories\Service\QueueService;
- use Carbon\Carbon;
- use Hyperf\AsyncQueue\Job;
- class SaveChatRecordJob extends Job
- {
- public $params;
- public function __construct($params)
- {
- // 这里最好是普通数据,不要使用携带 IO 的对象,比如 PDO 对象
- $this->params = $params;
- }
- public function handle()
- {
- try {
- if ($this->params['is_admin'] == 1) {
- $receiveUser = UserModel::query()->where('code', $this->params['receive_uid'])->first(['nick as title']);
- $fromUser = ShopsModel::query()->where('uid', $this->params['from_uid'])->first(['title as nick']);
- } else {
- $receiveUser = ShopsModel::query()->where('uid', $this->params['receive_uid'])->first(['title']);
- $fromUser = UserModel::query()->where('code', $this->params['from_uid'])->first(['nick']);
- }
- $date = date('Y-m-d H:i:s');
- $data = [
- 'subject' => '购买商品聊天信息',
- 'struct_type' => $this->params['struct_type'],
- 'receive_uid' => $this->params['receive_uid'],
- 'shops_name' => $receiveUser->title,
- 'receive_type' => 'shops', //接收对象类型,user=单个用户;all_user=所有用户
- 'from_uid' => $this->params['from_uid'],
- 'from_nick' => $fromUser->nick,
- 'from_type' => 'shops',
- 'created_at' => toMongoIsoDate(Carbon::parse($date)),
- 'updated_at' => toMongoIsoDate(Carbon::parse($date)),
- 'read_at' => $this->params['read_at'],
- 'is_admin' => $this->params['is_admin']
- ];
- $content['message'] = $this->params['message'];
- $data['content'] = json_encode($content, JSON_UNESCAPED_UNICODE);
- $res = make(MessageModel::class)->db()->insertOne($data);
- if ($this->params['is_admin'] == 2) {
- $sendData = [
- 'routes' => 'api/tg/send/chat/message',
- 'content' => [
- 'dispatcher' => ($fromUser->nick ?? '') . '(' . $this->params['from_uid'] .')',
- 'recipient' => ($receiveUser->title ?? '') . '(' . $this->params['receive_uid'] .')',
- 'content' => $data['content'],
- ]
- ];
- make(QueueService::class)->publicSendTgMegJob($sendData);
- }
- if (!$res) {
- logger('聊天日志存储失败', [json_encode($data, JSON_UNESCAPED_UNICODE)]);
- }
- } catch (\Exception $exception) {
- logger('SaveChatRecordJob', [$exception->getMessage(), json_encode($this->params, JSON_UNESCAPED_UNICODE)]);
- }
- }
- }
|