WorkOrderDing.php 2.9 KB
<?php

namespace App\Console\Commands\WorkOrder;

use App\Models\WorkOrder\TicketLog;
use App\Services\DingTalkService;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Http;

class WorkOrderDing extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'workorder:ding';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = '售后工单钉钉通知';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        while (true) {
            try {
                $log = TicketLog::where('ding', 0)->first();
                if (!$log) {
                    echo now() . " | INFO | 没有通知任务\n";
                    sleep(3);
                    continue;
                }
                $mobile = $log->engineer->mobile;
                $response = Http::withBasicAuth(
                    env('DINGDING_BASIC_USER'),
                    env('DINGDING_BASIC_PASS')
                )->get('https://oa.cmer.com/api/dingding/user/' . $mobile);
                if ($response->status() == 200) {
                    $userid = $response->json()['data']['userid'];
//                    $text = "**您有新的售后工单**<br>";
//                    $text .= "工单ID:{$log->ticket_id}<br>";
//                    $text .= "工单类型:<font color='red'>{$log->ticket->title}</font><br>";
//                    $text .= "项目:{$log->ticket->project->title}<br>";
//                    $text .= "时间:{$log->created_at}<br>";
                    $ding = new DingTalkService();
                    $resp = $ding->danliao(json_encode([
                        'text' => "您有新的工单(ID: {$log->ticket_id}),请及时处理!",
                        'title' => 'AI协同工单 - ' . $log->ticket->project->title,
                        'picUrl' => 'https://hub.globalso.com/logocm.png',
                        'messageUrl' => 'https://oa.quanqiusou.cn/afterorder?project_id=' . $log->ticket->project->uuid,
                    ]), [$userid], 'sampleLink');
                    $log->ding = 1;
                    echo now() . " | INFO | 工单ID: {$log->ticket_id} 通知成功\n";
                }else
                    echo now() . " | ERROR | 工单ID: {$log->ticket_id} 通知失败\n";
                    $log->ding = 2;
                $log->save();
            }catch (\Exception $exception){
                echo now() . " | ERROR | log ID {$log->id} {$exception->getMessage()} {$exception->getTraceAsString()} \n";
                $log->ding = 2;
                $log->save();
            }
        }
    }
}