love_php/app/Jobs/App/SendAttachMsg.php
2026-04-02 09:20:51 +08:00

101 lines
2.9 KiB
PHP

<?php
namespace App\Jobs\App;
use App\Models\App\Team;
use App\Services\IMService;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
class SendAttachMsg implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public $tries = 1;
protected $user_id;
protected $type_id;
protected $type;
protected $content;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($user_id, $type, $type_id, $content)
{
$this->user_id = $user_id;
$this->type = $type;
$this->type_id = $type_id;
$this->content = $content;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
switch ($this->type){
case 'team':
$team = Team::with('owner:id,nickname')->where('id', $this->type_id)->first();
break;
default:
break;
}
foreach ($this->user_id as $user_id){
$result = $this->sendAttachMsg($this->type_id, 'team', $this->content, $team->owner, $user_id, $team->icon);
}
return true;
}
//发送系统通知
public function sendAttachMsg($type_id, $type, $content, $from, $to, $image)
{
$body = "点击查看>>";
//发送评论自定义系统消息
$im_service = new IMService();
$attach = ["myattach"=>$content, $type.'_id'=>$type_id];
$payload = [
"apsField"=>[
"alert"=>[
"title"=>$content,
"body"=> $body,
],
"mutable-content"=>1
],
"hwField"=>[
"click_action"=>[
"type"=>1,
"intent"=>"intent://com.huawei.codelabpush/deeplink?id=".$type_id."&customType=".$type."#Intent;scheme=pushscheme;launchFlags=0x4000000;end",
],
"title"=>$content,
"body"=>$body,
],
"oppoField"=>[
"click_action_type"=>1,
"click_action_activity"=>"com.oppo.codelabpush.intent.action.test",
"action_parameters"=>[
"id"=>$type_id,
"customType"=>"moment",
],
],
"apnsText"=>$body,
"pushTitle"=>$content,
"customType"=>$type,
"content"=>$body,
"media_image"=>$image,
"media_type"=>'image',
"id"=>$type_id,
"type"=>$type,
'passThrough'=>1,
];
$result = $im_service->sendAttachMsg($from,0,$to,json_encode($attach),$content,$payload);
return true;
}
}