合并分支 'workorder' 到 'master'
ok 查看合并请求 !2369
正在显示
1 个修改的文件
包含
52 行增加
和
0 行删除
| @@ -3,7 +3,9 @@ | @@ -3,7 +3,9 @@ | ||
| 3 | namespace App\Console\Commands\WorkOrder; | 3 | namespace App\Console\Commands\WorkOrder; |
| 4 | 4 | ||
| 5 | use App\Models\Manage\Manage; | 5 | use App\Models\Manage\Manage; |
| 6 | +use App\Models\Manage\ManageHr; | ||
| 6 | use App\Models\WorkOrder\TicketChat; | 7 | use App\Models\WorkOrder\TicketChat; |
| 8 | +use App\Models\WorkOrder\TicketDing; | ||
| 7 | use App\Models\WorkOrder\TicketLog; | 9 | use App\Models\WorkOrder\TicketLog; |
| 8 | use App\Services\DingTalkService; | 10 | use App\Services\DingTalkService; |
| 9 | use Illuminate\Console\Command; | 11 | use Illuminate\Console\Command; |
| @@ -142,4 +144,54 @@ class WorkOrderDing extends Command | @@ -142,4 +144,54 @@ class WorkOrderDing extends Command | ||
| 142 | } | 144 | } |
| 143 | } | 145 | } |
| 144 | } | 146 | } |
| 147 | + | ||
| 148 | + /** | ||
| 149 | + * 消费 gl_ticket_dings 表的钉钉通知 | ||
| 150 | + */ | ||
| 151 | + public function dingSql() | ||
| 152 | + { | ||
| 153 | + while (true) { | ||
| 154 | + $tickDing = TicketDing::where('status', 0)->first(); | ||
| 155 | + if (!$tickDing) { | ||
| 156 | + echo now() . " | INFO | 没有通知任务\n"; | ||
| 157 | + sleep(3); | ||
| 158 | + continue; | ||
| 159 | + } | ||
| 160 | + try { | ||
| 161 | + $mobiles = ManageHr::whereIn('manage_id', json_decode($tickDing->userIds)) | ||
| 162 | + ->pluck('mobile') | ||
| 163 | + ->toArray(); | ||
| 164 | + | ||
| 165 | + $response = Http::withBasicAuth( | ||
| 166 | + env('DINGDING_BASIC_USER'), | ||
| 167 | + env('DINGDING_BASIC_PASS') | ||
| 168 | + )->get('https://oa.cmer.com/api/dingding/usersByMobiles', [ | ||
| 169 | + 'mobiles' => $mobiles, | ||
| 170 | + ]); | ||
| 171 | + if ($response->status() == 200) { | ||
| 172 | + $users = $response->json()['data']; | ||
| 173 | + $userIds = []; | ||
| 174 | + foreach ($users as $user) { | ||
| 175 | + $userIds[] = $user['userid']; | ||
| 176 | + } | ||
| 177 | + $ding = new DingTalkService(); | ||
| 178 | + $resp = $ding->danliao($tickDing->msgParam, $userIds, $tickDing->msgKey); | ||
| 179 | + $tickDing->status = 1; | ||
| 180 | + $tickDing->save(); | ||
| 181 | + echo now() . " | INFO | gl_ticket_dings ID: {$tickDing->id} 通知成功\n"; | ||
| 182 | + }else | ||
| 183 | + { | ||
| 184 | + $tickDing->status = 2; // 标记为失败 | ||
| 185 | + $tickDing->errorMsg = '钉钉用户查询失败'; | ||
| 186 | + $tickDing->save(); | ||
| 187 | + echo now() . " | ERROR | gl_ticket_dings ID: {$tickDing->id} 通知失败\n"; | ||
| 188 | + } | ||
| 189 | + }catch (\Exception $exception){ | ||
| 190 | + echo now() . " | ERROR | gl_ticket_dings ID {$tickDing->id} {$exception->getMessage()} {$exception->getTraceAsString()} \n"; | ||
| 191 | + $ding->status = 2; // 标记为失败 | ||
| 192 | + $ding->errorMsg = $exception->getMessage(); | ||
| 193 | + $ding->save(); | ||
| 194 | + } | ||
| 195 | + } | ||
| 196 | + } | ||
| 145 | } | 197 | } |
-
请 注册 或 登录 后发表评论