WorkOrderDing.php 2.2 KB
<?php

namespace App\Console\Commands;

use App\Models\WorkOrder\WorkOrderLog;
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 = WorkOrderLog::where('ding', 0)->first();
                if (!$log) {
                    sleep(3);
                    continue;
                }
                $mobile = $log->manager->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->work_order_id}<br>";
                    $text .= "工单类型:{$log->workOrder->product}<br>";
                    $text .= "项目:{$log->workOrder->project->title}<br>";
                    $ding = new DingTalkService();
                    $resp = $ding->danliao(json_encode([
                        'text' => $text,
                        'title' => '售后工单通知',
                    ]), [$userid]);
                    $log->ding = 1;
                }else
                    $log->ding = 2;
                $log->save();
            }catch (\Exception $exception){
                echo date('Y-m-d H:i:s')." ".$exception->getMessage()."\n";
                break;
            }
        }
    }
}