setName('xQueue:ChannelOrderStatusMonitor')->setDescription('[ 监控系统 ] 渠道订单问题监控预警'); } /** * @param Input $input * @param Output $output * @throws \think\admin\Exception */ protected function execute(Input $input, Output $output) { ini_set('memory_limit', '1024M'); $this->redis(); $channelService = ChannelService::instance(); $RobotService = new WxWorkBot($this->app); $channelList = $channelService->db()->where(['status'=>1])->whereLike('other_data','%Monitor_OrderStatus_status%')->select()->toArray(); if(!$channelList) $this->setQueueSuccess("未找到支持监控余额的渠道"); $channelList_num = count($channelList); $count_sum = 0; $day = date('Y-m-d', strtotime('-1 day')); $tip_info=[]; $key = '41b42bd4-c9f9-4617-9531-0a358dd97a82'; foreach($channelList as $channel) { $other_param = json_decode($channel['other_data'],true); if(!$other_param){ continue; } $Monitor_Balance = $other_param['Monitor_Balance'] ?? null; if(!$Monitor_Balance){ continue; } try{ $account_data = $channelService->call('account', $channel['id'], $day); if (is_array($account_data) && isset($account_data['account'])) { $balance = $account_data['account']; if( $balance <= $Monitor_Balance){ if(!$this->redis->get('Check_channel_account-'.$channel['id'])){ $count_sum ++; $this->redis->set('Check_channel_account-'.$channel['id'],1); $tip_info[] = $channel['name']."余额不足,只剩下:".$balance.""; } $Monitor_Balance_TOP = $other_param['Monitor_Balance_TOP'] ?? null; if($Monitor_Balance_TOP && $balance <= $Monitor_Balance_TOP){ if(!$this->redis->get('Check_channel_account_TOP-'.$channel['id'])){ $count_sum ++; $this->redis->set('Check_channel_account_TOP-'.$channel['id'],1); $tip_info[] = $channel['name']."余额不足,只剩下:".$balance.""; } } }else{ if($this->redis->get('Check_channel_account-'.$channel['id'])){ $count_sum ++; $this->redis->delete('Check_channel_account-'.$channel['id']); $tip_info[] = $channel['name']."余额已经恢复,现在余额为:".$balance.""; } if($this->redis->get('Check_channel_account_TOP-'.$channel['id'])){ $this->redis->delete('Check_channel_account_TOP-'.$channel['id']); } } } }catch (\Exception $e){ } } if(!empty($tip_info)){ $errorMsg = "渠道余额监控预警".$count_sum ."列,请相关同事注意。\n >"; $errorMsg .= implode(">", $tip_info); $RobotService->send_markdown($errorMsg,$key); } $this->setQueueSuccess("共处理 {$channelList_num} 个渠道, 完成{$count_sum} 个查询处理!"); } protected function redis() { if (!$this->redis) { $this->redis = RedisService::getInstance(); } } }