db()->field($field)->where($where)->select()->toArray(); return $data; } public function upOrderExpireTime() { $orderService = OrderService::instance(); $field="order_id,param";//需要数据库返回的字段 $data = $orderService->db()->field($field)->whereNull('expire_time')->select()->toArray(); // print_r($data);die; if($data){ foreach($data as $key=>$value){ $value['param'] = json_decode($value['param'], true); // $timeout = $value['param']['expireTime']; $timeout = date('Y-m-d H:i:s', $value['param']['expireTime']/1000); $where= array('order_id' =>$value['order_id']); $data = array('expire_time' =>$timeout); $orderService->db()->where($where)->update($data); // print_r($data);die; // array_push($redisData,$orders[$key]['account']); } } return 'ok'; } /** *$params:发给的机器人字段数组格式;$type=true判断是否在缓存中,false不判断全部返回 * */ public function transOrder($time){ $this->redis(); $where=[['status','=',4],['cid','=','2'],['expire_time','<=',date('Y-m-d H:i:s',time()+$time*60*60)]]; $field="order_id,account";//需要数据库返回的字段 $orders=$this->getNeedOrder($where,$field); $redisData=[]; if($orders){ foreach($orders as $key=>$value){ if(!$this->redis->get('rediskey-'.$orders[$key]['order_id'])){ array_push($redisData,$orders[$key]['account']); $this->redis->set('rediskey-'.$orders[$key]['order_id'],'1',30*60); } if(!$this->redis->get('rediskey-1H-'.$orders[$key]['order_id']) && $time == '1'){ array_push($redisData,$orders[$key]['account']); $this->redis->set('rediskey-1H-'.$orders[$key]['order_id'],'1',30*60); } if(!$this->redis->get('rediskey-TOP-'.$orders[$key]['order_id']) && $time == '0.5'){ array_push($redisData,$orders[$key]['order_id']); $this->redis->set('rediskey-TOP-'.$orders[$key]['order_id'],'1',30*60); } } } return $redisData?implode("\n",$redisData):''; } protected function redis() { if (!$this->redis) { $this->redis = RedisService::getInstance(); } } /** * */ public function send($url,$param) { $geturl = 'http://124.70.52.119:7374/'.$url; $header['Content-Type'] = 'application/x-www-form-urlencoded'; return $this->curl('post', $geturl, http_build_query($param), false, $header); } public function timeout_order() { #发送群聊消息 $url = 'send_group_msg'; # $param = array(); $param['group_id'] = '248553382';#群组号 $needField = ['account']; $atqq = '389839316';#需要艾特的qq $time = '6'; #超时拦截时间 $get_timeout_order = $this->transOrder($time); if(!$get_timeout_order){ // Log::write('robot', 'qqbot', '无'); // Log::write($key, $name, $content) die; } $param['message'] = "[CQ:at,qq=".$atqq."] 以下为超过42小时订单 \r ".$get_timeout_order; $send = $this->send($url, $param); Log::write('robot', 'qqbot', $send); return $send; } public function timeout_order1() { #发送群聊消息 $url = 'send_group_msg'; # $param = array(); $param['group_id'] = '248553382';#群组号 $needField = ['account']; $atqq = '389839316';#需要艾特的qq $time = '1'; #超时拦截时间 $atqq1 = '530979976';#需要艾特的qq1 $get_timeout_order = $this->transOrder($time); if(!$get_timeout_order){ // Log::write('robot', 'qqbot', '无'); // Log::write($key, $name, $content) die; } $param['message'] = "[CQ:at,qq=".$atqq."][CQ:at,qq=".$atqq1."] 以下为1小时内超时订单,请第一时间处理 \r ".$get_timeout_order; $send = $this->send($url, $param); Log::write('robot', 'qqbot', $send); return $send; } public function timeout_order2() { #发送群聊消息 $url = 'send_group_msg'; # $param = array(); $param['group_id'] = '248553382';#群组号 $needField = ['account']; $atqq = '389839316';#需要艾特的qq $time = '0.5'; #超时拦截时间 $atqq1 = '530979976';#需要艾特的qq1 $atqq2 = '1438565523';#技术核实 $get_timeout_order = $this->transOrder($time); // $get_timeout_order ='测试'; if(!$get_timeout_order){ // Log::write('robot', 'qqbot', '无'); // Log::write($key, $name, $content) die; } $param['message'] = "[CQ:at,qq=".$atqq."][CQ:at,qq=".$atqq1."][CQ:at,qq=".$atqq2."] 以下为半小时内超时订单,异常订单,请核实 \r ".$get_timeout_order; $send = $this->send($url, $param); Log::write('robot', 'qqbot', $send); return $send; } #回调消息处理 public function notify() { $input = input(); var_dump($input);die; Log::write('robot', 'qqbot', $input); if(isset($input['group_id'])&&$input['group_id']='300904161'&&isset($input['message']['0']['data']['qq'])&&$input['message']['0']['qq']='3093978570'){ $sju = $input['message']['1']['data']['text']; if(strlen($phone)!=11){ return false; } if(preg_match("/^1[3456789]{1}[0-9]{9}$/",$phone)){ return true; }else{ return false; } $reply = array( 'reply' => '已经登记拦截' ); // print_r(json_encode($ksorderfk));exit; throw new HttpResponseException(json($reply)); } } #手机状态监控 public function phoneInfo() { #发送群聊消息 $url = 'get_device_battery'; # $param = array(); $send = $this->send($url, $param); $data = json_decode($send,true); if($data['status'] =='ok'){ #更新电池状态 #TODO if($data['data']['battery'] <= '20'){ #判断如果电池电量小于20,则发送钉钉机器人提醒。 } }else{ #状态不为ok,发送钉钉机器人预警,并且记录日志 } return 'ok'; } }