...
|
...
|
@@ -28,10 +28,10 @@ class AesController extends HomeBaseController{ |
|
|
dump("解密密2857153e26d8dda190834c3a1a3f8f3c:".$aes->decryption('2857153e26d8dda190834c3a1a3f8f3c'));
|
|
|
}
|
|
|
/**
|
|
|
* @title 开锁
|
|
|
* @title 开锁(加密)
|
|
|
* @description 获取加密后的“开锁”命令
|
|
|
* @author 董瑞恩
|
|
|
* @url /portal/Aes/lock
|
|
|
* @url /portal/Aes/secretLock
|
|
|
* @method GET
|
|
|
*
|
|
|
* @param name:MACAddress type:String require:1 default:无 other: desc:设备MAC地址
|
...
|
...
|
@@ -39,7 +39,7 @@ class AesController extends HomeBaseController{ |
|
|
*
|
|
|
* @return lockKey:加密的开锁指令(数组)
|
|
|
*/
|
|
|
public function lock(){
|
|
|
public function secretLock(){
|
|
|
$MACAddress=$this->request->param('MACAddress');
|
|
|
$strKey=Db::name('equipment')->where('mac_address',$MACAddress)->find();
|
|
|
if (!empty($strKey)){
|
...
|
...
|
@@ -54,10 +54,37 @@ class AesController extends HomeBaseController{ |
|
|
}
|
|
|
|
|
|
/**
|
|
|
* @title 获取电压、开关状态
|
|
|
* @title 开锁(不加密)
|
|
|
* @description 获取“开锁”命令
|
|
|
* @author 董瑞恩
|
|
|
* @url /portal/Aes/lock
|
|
|
* @method GET
|
|
|
*
|
|
|
* @param name:MACAddress type:String require:1 default:无 other: desc:设备MAC地址
|
|
|
*
|
|
|
*
|
|
|
* @return lockKey:加密的开锁指令(数组)
|
|
|
*/
|
|
|
public function lock(){
|
|
|
$MACAddress=$this->request->param('MACAddress');
|
|
|
$strKey=Db::name('equipment')->where('mac_address',$MACAddress)->find();
|
|
|
if (!empty($strKey)){
|
|
|
$key="ff0ca2".$MACAddress."5500ef";
|
|
|
$lockKey=$this->ToArray($key);
|
|
|
$this->apiResponse(200,'success',$lockKey);
|
|
|
}else{
|
|
|
$this->apiResponse(301,'MAC地址未认证');
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
* @title 获取电压、开关状态(加密)
|
|
|
* @description 获得加密后“获取电压、开关状态”的命令
|
|
|
* @author 董瑞恩
|
|
|
* @url /portal/Aes/getState
|
|
|
* @url /portal/Aes/getSecretState
|
|
|
* @method GET
|
|
|
*
|
|
|
* @param name:MACAddress type:String require:1 default:无 other: desc:设备MAC地址
|
...
|
...
|
@@ -66,7 +93,7 @@ class AesController extends HomeBaseController{ |
|
|
* @return lockKey:获取电压、开关状态的指令(数组)
|
|
|
*/
|
|
|
|
|
|
public function getState(){
|
|
|
public function getSecretState(){
|
|
|
$MACAddress=$this->request->param('MACAddress');
|
|
|
$strKey=Db::name('equipment')->where('mac_address',$MACAddress)->find();
|
|
|
if (!empty($strKey)){
|
...
|
...
|
@@ -80,6 +107,32 @@ class AesController extends HomeBaseController{ |
|
|
}
|
|
|
|
|
|
/**
|
|
|
* @title 获取电压、开关状态(不加密)
|
|
|
* @description 获得加密后“获取电压、开关状态”的命令
|
|
|
* @author 董瑞恩
|
|
|
* @url /portal/Aes/getState
|
|
|
* @method GET
|
|
|
*
|
|
|
* @param name:MACAddress type:String require:1 default:无 other: desc:设备MAC地址
|
|
|
*
|
|
|
*
|
|
|
* @return lockKey:获取电压、开关状态的指令(数组)
|
|
|
*/
|
|
|
|
|
|
public function getState(){
|
|
|
$MACAddress=$this->request->param('MACAddress');
|
|
|
$strKey=Db::name('equipment')->where('mac_address',$MACAddress)->find();
|
|
|
if (!empty($strKey)){
|
|
|
$key="ff05a301ef";
|
|
|
$StateKey=$this->ToArray($key);
|
|
|
$this->apiResponse(200,'success',$StateKey);
|
|
|
}else{
|
|
|
$this->apiResponse(301,'MAC地址未认证');
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* @title 命令解密
|
|
|
* @description 将设备的十六进制码进行解码,获得设备的返回信息
|
|
|
* @author 董瑞恩
|
...
|
...
|
@@ -88,45 +141,67 @@ class AesController extends HomeBaseController{ |
|
|
*
|
|
|
* @param name:decryKey type:String require:1 default:无 other: desc:加密命令
|
|
|
* @param name:MACAddress type:String require:1 default:无 other: desc:设备MAC地址
|
|
|
* @param name:type type:String require:1 default:无 other: desc:命令类型 (1 开锁返回指令 2 状态返回指令)
|
|
|
*
|
|
|
* @return key:解密后的指令(数组)
|
|
|
* @return :code:1为锁已开,0位锁已关,2为数据异常
|
|
|
*/
|
|
|
public function decryption(){
|
|
|
$MACAddress=$this->request->param('MACAddress');
|
|
|
$decryKey=$this->request->param('decryKey');
|
|
|
$type=$this->request->param('type');
|
|
|
$strKey=Db::name('equipment')->where('mac_address',$MACAddress)->find();
|
|
|
if (!empty($strKey)){
|
|
|
$aes=new AESUtil($strKey['key']);
|
|
|
$key=$aes->decryption($decryKey);
|
|
|
$this->apiResponse(200,'success',$key);
|
|
|
$this->state($key,$type);
|
|
|
}else{
|
|
|
$this->apiResponse(301,'MAC地址未认证');
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* @title 状态验证
|
|
|
* @description 开锁前判断是否有未支付订单与是否提交押金
|
|
|
* @title 设备状态判断
|
|
|
* @description 解析设备返回值,获取设备状态
|
|
|
* @author 董瑞恩
|
|
|
* @url /portal/Aes/lock_check
|
|
|
* @url /portal/Aes/decryption
|
|
|
* @method GET
|
|
|
*
|
|
|
* @param name:users_id type:String require:1 default:无 other: desc:用户id
|
|
|
* @param name:key type:String require:1 default:无 other: desc:设备返回状态(未加密)
|
|
|
* @param name:type type:String require:1 default:无 other: desc:命令类型 (1 开锁返回指令 2 状态返回指令)
|
|
|
*
|
|
|
* @return :code:1为锁已开,0位锁已关,2为数据异常
|
|
|
*/
|
|
|
public function lock_check(){
|
|
|
$users_id=$this->request->param('users_id');
|
|
|
//获取提交押金的状态
|
|
|
$users=Db::name('users')->where('id',$users_id)->find();
|
|
|
if ($users['is_deposit']===1){
|
|
|
$order=Db::name('order')->where(['users_id'=>$users_id,'state'=>1])->find();
|
|
|
if (empty($order)){
|
|
|
$this->apiResponse(200,'验证通过');
|
|
|
public function state($key,$type){
|
|
|
if ($type==1){
|
|
|
if($key[0]=='0xff' && $key[4]=='0xef'){
|
|
|
if ($key[3]=='0x01'){
|
|
|
$this->apiResponse(1,'锁已开');
|
|
|
}else if($key[3]=='0x00'){
|
|
|
$this->apiResponse(0,'开锁失败');
|
|
|
}
|
|
|
}else{
|
|
|
$this->apiResponse(302,'有未支付订单');
|
|
|
$this->apiResponse(2,'返回指令错误');
|
|
|
}
|
|
|
}else{
|
|
|
$this->apiResponse(301,'未支付押金');
|
|
|
}else if($type==2){
|
|
|
if($key[0]=='0xff' && $key[7]=='0xef'){
|
|
|
if ($key[6]=='0x01'){
|
|
|
$this->apiResponse(1,'状态为开锁');//开着
|
|
|
}else if($key[6]=='0x00'){
|
|
|
$this->apiResponse(0,'状态为关锁');//关了
|
|
|
}
|
|
|
}else{
|
|
|
$this->apiResponse(2,'返回指令错误');
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//转成数组
|
|
|
private function ToArray($data){
|
|
|
$array = array();
|
|
|
for ($i = 0; $i < strlen($data); $i += 2) {
|
|
|
$array[]='0x'.substr($data, $i, 2);
|
|
|
}
|
|
|
return $array;
|
|
|
}
|
|
|
|
|
|
} |
|
|
\ No newline at end of file |
...
|
...
|
|