作者 ZhengBing He

合并分支 'workorder' 到 'master'

ok



查看合并请求 !2369
@@ -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 }