...
|
...
|
@@ -65,11 +65,45 @@ class Events |
|
|
echo "yanzhengshibai";
|
|
|
return ;
|
|
|
}
|
|
|
$str = ",".$number .",". $command_number .",". $date.",";
|
|
|
$arr = ["X", $number, $command_number, $date, self::crc16($str), "Y"];
|
|
|
$result = implode(',', $arr);
|
|
|
//回复
|
|
|
Gateway::sendToClient($client_id, $result);
|
|
|
//判断是否已有数板仪id
|
|
|
$row = self::$db->select('*')->from('gjr_equipment')->where("number = '$number'")->row();
|
|
|
$status = "A5";
|
|
|
if (!empty($row)) {
|
|
|
//判断状态
|
|
|
if($row['status'] != 'normal' || $row['end_time'] < time()){
|
|
|
$status = "B9";//禁用
|
|
|
}else {
|
|
|
$createtime = time();
|
|
|
$arr1 = [
|
|
|
'number' => $number,
|
|
|
'command_number' => $command_number,
|
|
|
];
|
|
|
//记录判断是否订阅
|
|
|
$api_subscrib = self::$db->select('*')->from('gjr_api_subscrib')->where("subscrib_ids like '%$row[id],%'")->row();
|
|
|
if(!empty($api_subscrib)){
|
|
|
$api = self::$db->select('*')->from('gjr_api')->where("id = '$api_subscrib[api_id]'")->row();
|
|
|
echo $api['callback']."\n";
|
|
|
//请求接口返回状态
|
|
|
$arr1['number'] = $number;
|
|
|
$result3 = json_decode(self::httpPost($api['callback'],$arr1),true);
|
|
|
if($result3['code'] == 1){
|
|
|
$is_success = 1;
|
|
|
if($result3['data']['status'] == 'normal'){
|
|
|
$status = "A5";//正常
|
|
|
}else{
|
|
|
$status = "B9";//非正常
|
|
|
}
|
|
|
}else{
|
|
|
$staus = "A5";//接口异常
|
|
|
}
|
|
|
}else {
|
|
|
$status = "A5";//未订阅返回正常
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
$str = ",".$number .",". $command_number.",".$status .",". $date.",";
|
|
|
$arr = ["X", $number, $command_number, $status, $date, self::crc16($str), "Y"];
|
|
|
$common = implode(',', $arr);
|
|
|
} else if ($command_number == "01") {
|
|
|
//数据同步以及状态同步
|
|
|
$time = $param[3];//时间
|
...
|
...
|
@@ -85,57 +119,79 @@ class Events |
|
|
$dianji_status = $param[12];//电机状态
|
|
|
$yejing_status = $param[13];//液晶状态
|
|
|
$wenshidu_status = $param[14];//湿度传感器状态
|
|
|
//判断是否已有数板仪id
|
|
|
$row = self::$db->select('*')->from('gjr_equipment_log')->where("number = '$number'")->row();
|
|
|
if (empty($row)) {
|
|
|
$arr = [
|
|
|
'number' => $number,
|
|
|
'command_number' => $command_number,
|
|
|
'time' => $time,
|
|
|
'position' => $position,
|
|
|
'address' => $address,
|
|
|
'quantity' => $quantity,
|
|
|
'wendu' => $wendu,
|
|
|
'shidu' => $shidu,
|
|
|
'papers' => $papers,
|
|
|
'papers_count' => $papers_count,
|
|
|
'times' => $times,
|
|
|
'sensor_status' => $sensor_status,
|
|
|
'dianji_status' => $dianji_status,
|
|
|
'yejing_status' => $yejing_status,
|
|
|
'wenshidu_status' => $wenshidu_status,
|
|
|
'socket_data' => json_encode($param),
|
|
|
'createtime' => time(),
|
|
|
];
|
|
|
//插入
|
|
|
self::$db->insert('gjr_equipment_log')->cols($arr)->query();
|
|
|
} else {
|
|
|
$arr = [
|
|
|
'command_number' => $command_number,
|
|
|
'time' => $time,
|
|
|
'position' => $position,
|
|
|
'address' => $address,
|
|
|
'quantity' => $quantity,
|
|
|
'wendu' => $wendu,
|
|
|
'shidu' => $shidu,
|
|
|
'papers' => $papers,
|
|
|
'papers_count' => $papers_count,
|
|
|
'times' => $times,
|
|
|
'sensor_status' => $sensor_status,
|
|
|
'dianji_status' => $dianji_status,
|
|
|
'yejing_status' => $yejing_status,
|
|
|
'wenshidu_status' => $wenshidu_status,
|
|
|
'socket_data' => json_encode($param),
|
|
|
];
|
|
|
//更新
|
|
|
self::$db->update('gjr_equipment_log')->cols($arr)->where("number = '$number'")->query();
|
|
|
//判断是否已数板仪id
|
|
|
$row = self::$db->select('*')->from('gjr_equipment')->where("number = '$number'")->row();
|
|
|
$status = "A5";
|
|
|
if (!empty($row)) {
|
|
|
//判断状态
|
|
|
if($row['status'] != 'normal' || $row['end_time'] < time()){
|
|
|
$status = "B9";//禁用
|
|
|
}else {
|
|
|
$createtime = time();
|
|
|
$arr1 = [
|
|
|
'number' => $number,
|
|
|
'command_number' => $command_number,
|
|
|
'time' => $time,
|
|
|
'position' => $position,
|
|
|
'address' => $address,
|
|
|
'quantity' => $quantity,
|
|
|
'wendu' => $wendu,
|
|
|
'shidu' => $shidu,
|
|
|
'papers' => $papers,
|
|
|
'papers_count' => $papers_count,
|
|
|
'times' => $times,
|
|
|
'sensor_status' => $sensor_status,
|
|
|
'dianji_status' => $dianji_status,
|
|
|
'yejing_status' => $yejing_status,
|
|
|
'wenshidu_status' => $wenshidu_status,
|
|
|
'socket_data' => json_encode($param),
|
|
|
'createtime' => $createtime,
|
|
|
];
|
|
|
// $db->beginTrans();
|
|
|
//数板仪器数据同步记录
|
|
|
$result1 = self::$db->insert('gjr_equipment_log')->cols($arr1)->query();
|
|
|
//记录判断是否订阅
|
|
|
$api_subscrib = self::$db->select('*')->from('gjr_api_subscrib')->where("subscrib_ids like '%$row[id],%'")->row();
|
|
|
if(!empty($api_subscrib)){
|
|
|
$api = self::$db->select('*')->from('gjr_api')->where("id = '$api_subscrib[api_id]'")->row();
|
|
|
//请求接口返回状态
|
|
|
unset($arr1['socket_data']);
|
|
|
unset($arr1['createtime']);
|
|
|
$arr1['number'] = $number;
|
|
|
$result3 = json_decode(self::httpPost($api['callback'],$arr1),true);
|
|
|
if($result3['code'] == 1){
|
|
|
$is_success = 1;
|
|
|
if($result3['data']['status'] == 'normal'){
|
|
|
$status = "A5";//正常
|
|
|
}else{
|
|
|
$status = "B9";//非正常
|
|
|
}
|
|
|
}else{
|
|
|
$staus = "A5";//接口异常
|
|
|
}
|
|
|
$arr2 = [
|
|
|
'api_id' => $api_subscrib['api_id'],
|
|
|
'type' => 1,
|
|
|
'subscrib_id' => $api_subscrib['id'],
|
|
|
'notice_url' => $api['callback'],
|
|
|
'times' => $api['times'],
|
|
|
'content' => json_encode($arr1),
|
|
|
'createtime' => time(),
|
|
|
'is_success' => empty($is_success) ? 0 : $is_success,
|
|
|
];
|
|
|
//记录订阅通知记录
|
|
|
$result2 = self::$db->insert('gjr_subscrib_log')->cols($arr2)->query();
|
|
|
}else {
|
|
|
$status = "A5";//未订阅返回正常
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
$str = $number . $command_number . $date;
|
|
|
$arr = ["X", $number, $command_number, $date, self::crc16($str), "Y"];
|
|
|
$result = implode(',',$arr);
|
|
|
//回复i
|
|
|
Gateway::sendToClient($client_id, $result);
|
|
|
$str = $number."," . $command_number."," . $status."," . $date;
|
|
|
$arr = ["X", $number, $command_number, $status, $date, self::crc16($str), "Y"];
|
|
|
$common = implode(',',$arr);
|
|
|
}
|
|
|
//回复i
|
|
|
Gateway::sendToClient($client_id, $common);
|
|
|
}
|
|
|
|
|
|
/**
|
...
|
...
|
@@ -291,4 +347,23 @@ class Events |
|
|
}
|
|
|
return $shu;
|
|
|
}
|
|
|
|
|
|
public static function httpPost($url,$data){ // 模拟提交数据函数
|
|
|
$curl = curl_init(); // 启动一个CURL会话
|
|
|
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
|
|
|
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 对认证证书来源的检查
|
|
|
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在
|
|
|
// curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
|
|
|
curl_setopt($curl, CURLOPT_POST, true); // 发送一个常规的Post请求
|
|
|
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
|
|
|
//curl_setopt($curl, CURLOPT_TIMEOUT, 120); // 设置超时限制防止死循环
|
|
|
curl_setopt($curl, CURLOPT_HEADER, false); // 显示返回的Header区域内容
|
|
|
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // 获取的信息以文件流的形式返回
|
|
|
$result = curl_exec($curl); // 执行操作
|
|
|
if (curl_errno($curl)) {
|
|
|
echo 'Error POST'.curl_error($curl);
|
|
|
}
|
|
|
curl_close($curl); // 关键CURL会话
|
|
|
return $result; // 返回数据
|
|
|
}
|
|
|
} |
...
|
...
|
|