REAPI/app/robot/controller/api/Qqbot.php.bak

283 lines
7.4 KiB
PHP
Raw Normal View History

2024-09-29 15:43:18 +08:00
<?php
namespace app\robot\controller\api;
set_time_limit(0);
ini_set('memory_limit','512M');
ini_set('default_socket_timeout', -1); //不超时
use app\merchant\service\OrderService;
use app\merchant\service\MerchantService;
use app\gateway\service\RedisService;
use dever\Log;
use think\exception\HttpResponseException;
class Qqbot extends Core
{
# 是否检测数据
protected bool $check = false;
protected $redis = false;
# 查询接口 一般用于查询数据,同步执行
/**
* @return array|bool
*/
public function getNeedOrder($where,$field)
{
$orderService = OrderService::instance();
$data = $orderService->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';
}
}