作者 ZhengBing He

ok

... ... @@ -3,7 +3,9 @@
namespace App\Console\Commands\WorkOrder;
use App\Models\Manage\Manage;
use App\Models\Manage\ManageHr;
use App\Models\WorkOrder\TicketChat;
use App\Models\WorkOrder\TicketDing;
use App\Models\WorkOrder\TicketLog;
use App\Services\DingTalkService;
use Illuminate\Console\Command;
... ... @@ -142,4 +144,54 @@ class WorkOrderDing extends Command
}
}
}
/**
* 消费 gl_ticket_dings 表的钉钉通知
*/
public function dingSql()
{
while (true) {
$tickDing = TicketDing::where('status', 0)->first();
if (!$tickDing) {
echo now() . " | INFO | 没有通知任务\n";
sleep(3);
continue;
}
try {
$mobiles = ManageHr::whereIn('manage_id', json_decode($tickDing->userIds))
->pluck('mobile')
->toArray();
$response = Http::withBasicAuth(
env('DINGDING_BASIC_USER'),
env('DINGDING_BASIC_PASS')
)->get('https://oa.cmer.com/api/dingding/usersByMobiles', [
'mobiles' => $mobiles,
]);
if ($response->status() == 200) {
$users = $response->json()['data'];
$userIds = [];
foreach ($users as $user) {
$userIds[] = $user['userid'];
}
$ding = new DingTalkService();
$resp = $ding->danliao($tickDing->msgParam, $userIds, $tickDing->msgKey);
$tickDing->status = 1;
$tickDing->save();
echo now() . " | INFO | gl_ticket_dings ID: {$tickDing->id} 通知成功\n";
}else
{
$tickDing->status = 2; // 标记为失败
$tickDing->errorMsg = '钉钉用户查询失败';
$tickDing->save();
echo now() . " | ERROR | gl_ticket_dings ID: {$tickDing->id} 通知失败\n";
}
}catch (\Exception $exception){
echo now() . " | ERROR | gl_ticket_dings ID {$tickDing->id} {$exception->getMessage()} {$exception->getTraceAsString()} \n";
$ding->status = 2; // 标记为失败
$ding->errorMsg = $exception->getMessage();
$ding->save();
}
}
}
}
... ...