|
@@ -0,0 +1,500 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+class ApiAction extends Action {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public function getEnableRandomPlates( ){
|
|
|
+ header('Access-Control-Allow-Origin:*');
|
|
|
+ $appid = I('get.AppId');
|
|
|
+ if(!$appid){
|
|
|
+ json_fail('AppId不存在!');
|
|
|
+ }
|
|
|
+ $appkey = I('get.AppKey');
|
|
|
+ if(!$appkey){
|
|
|
+ json_fail('AppKey不存在!');
|
|
|
+ }
|
|
|
+ $token = I('get.Token');
|
|
|
+ if(!$token){
|
|
|
+ json_fail('Token不存在!');
|
|
|
+ }
|
|
|
+ $timestamp = I('get.Timestamp');
|
|
|
+ if(!$timestamp){
|
|
|
+ json_fail('Timestamp不存在!');
|
|
|
+ }
|
|
|
+ $random = I('get.Random');
|
|
|
+ if(!$random){
|
|
|
+ json_fail('Random不存在!');
|
|
|
+ }
|
|
|
+ $this->token_verify($appkey,$timestamp,$random,$token);
|
|
|
+ $res = $this->getPlateFromRedis();
|
|
|
+ json_success('查询成功',$res);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public function getPlateFromRedis( ){
|
|
|
+ $config = parse_url(C('REDIS_DSN'));
|
|
|
+ $redis = new Redis();
|
|
|
+ $redis->connect($config["host"],$config["port"]?:6379);
|
|
|
+ $redis->auth($config["pass"]?: "");
|
|
|
+ $redis->select(trim($config['path'],'//') ? : 0);
|
|
|
+ /*
|
|
|
+ for($i=0;$i<10;$i++){
|
|
|
+ $redis->sRem('plate_preselect_pool' , 'TK'.$i);
|
|
|
+ }
|
|
|
+
|
|
|
+ echo 'start sAdd'.PHP_EOL;
|
|
|
+ $start = microtime(true);
|
|
|
+ for($i=0;$i<100000;$i++){
|
|
|
+ //向集合中添加元素
|
|
|
+ $redis->sAdd('plate_preselect_pool' , 'TK'.$i);
|
|
|
+ }
|
|
|
+ echo 'sAdd: '.(microtime(true)-$start)*1000 .' ms'.PHP_EOL;
|
|
|
+ */
|
|
|
+ /*
|
|
|
+ //显示所有元素
|
|
|
+ $res = $redis->sMembers('plate_preselect_pool');
|
|
|
+ var_dump($res);
|
|
|
+ //删除一个元素
|
|
|
+ $res = $redis->sRem('plate_preselect_pool','TK2');
|
|
|
+ var_dump($res);
|
|
|
+ $res = $redis->sMembers('plate_preselect_pool');
|
|
|
+ var_dump($res);
|
|
|
+ */
|
|
|
+ $start = microtime(true);
|
|
|
+ //获取随机元素的一个集合
|
|
|
+ $list = $redis->sRandMember('plate_preselect_pool',20);
|
|
|
+ //var_dump($list);
|
|
|
+ echo 'sRandMember: '.(microtime(true)-$start)*1000 .' ms'.PHP_EOL;
|
|
|
+
|
|
|
+ return $list;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public function token_verify( $appkey, $timestamp, $random, $token ){
|
|
|
+ $old_token = base64_encode(md5($appkey . C('APPSECREAT') . $timestamp . $random));
|
|
|
+ if($old_token != $token){
|
|
|
+ json_fail('token无效!');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public function reportPreSelectPlate( ){
|
|
|
+ header('Access-Control-Allow-Origin:*');
|
|
|
+ $data = json_decode( file_get_contents("php://input") ,true);
|
|
|
+ //验证需要字段是否存在
|
|
|
+ $appid = $data['AppId'];
|
|
|
+ if(!$appid){
|
|
|
+ json_fail('AppId不存在!');
|
|
|
+ }
|
|
|
+ $appkey = $data['AppKey'];
|
|
|
+ if(!$appkey){
|
|
|
+ json_fail('AppKey不存在!');
|
|
|
+ }
|
|
|
+ $token = $data['Token'];
|
|
|
+ if(!$token){
|
|
|
+ json_fail('Token不存在!');
|
|
|
+ }
|
|
|
+ $timestamp = $data['Timestamp'];
|
|
|
+ if(!$timestamp){
|
|
|
+ json_fail('Timestamp不存在!');
|
|
|
+ }
|
|
|
+ $random = $data['Random'];
|
|
|
+ if(!$random){
|
|
|
+ json_fail('Random不存在!');
|
|
|
+ }
|
|
|
+ //检验token
|
|
|
+ $this->token_verify($appkey,$timestamp,$random,$token);
|
|
|
+ $licenseplate = $data['LicensePlate'];
|
|
|
+ if(!$licenseplate){
|
|
|
+ json_fail('LicensePlate不存在!');
|
|
|
+ }
|
|
|
+ $openid = $data['Openid'];
|
|
|
+ if(!$openid){
|
|
|
+ json_fail('Openid不存在!');
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //从redis获取车牌
|
|
|
+ $key = strtoupper($licenseplate);
|
|
|
+ $p = Redis("wjw_plate","hash");
|
|
|
+ $val = $p->get($key);
|
|
|
+ if(!$val){
|
|
|
+ //车牌信息不存在,添加到redis
|
|
|
+ $info = array(
|
|
|
+ 'ExpireIn' => C('EXPIREIN'),
|
|
|
+ 'Timestamp' => time(),
|
|
|
+ 'OpenId' => $openid
|
|
|
+ );
|
|
|
+ $new_val = json_encode($info,JSON_UNESCAPED_UNICODE);
|
|
|
+ $hash = array($key =>$new_val);
|
|
|
+ $redis_res = $p->add($hash);
|
|
|
+ if(!$redis_res){
|
|
|
+ json_fail('推送redis失败');
|
|
|
+ }
|
|
|
+ //返回成功信息
|
|
|
+ $response = array(
|
|
|
+ 'LicensePlate' => $licenseplate,
|
|
|
+ 'ExpireIn' => C('EXPIREIN'),
|
|
|
+ 'Timestamp' => time()
|
|
|
+ );
|
|
|
+ //删除未选车牌库中的该车牌
|
|
|
+ $this->deletePlateFromRedis($licenseplate);
|
|
|
+ json_success('上报预选车牌成功',$response);
|
|
|
+ }else{
|
|
|
+ $info = json_decode($val,true);
|
|
|
+ //检测openid是否是本人
|
|
|
+ if($info['OpenId'] == $openid){
|
|
|
+ //是否过期
|
|
|
+ $time = time() - (C('EXPIREIN')*60);
|
|
|
+ if($time > $info['Timestamp']){
|
|
|
+ json_fail('该车牌已经过期');
|
|
|
+ }else{
|
|
|
+ $response = array(
|
|
|
+ 'LicensePlate' => $licenseplate,
|
|
|
+ 'ExpireIn' => C('EXPIREIN'),
|
|
|
+ 'Timestamp' => $info['Timestamp']
|
|
|
+ );
|
|
|
+ json_success('上报预选车牌成功',$response);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ json_fail('该车牌已经被占用');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public function getEnablePlaces( ){
|
|
|
+ header('Access-Control-Allow-Origin:*');
|
|
|
+ $appid = I('get.AppId');
|
|
|
+ if(!$appid){
|
|
|
+ json_fail('AppId不存在!');
|
|
|
+ }
|
|
|
+ $appkey = I('get.AppKey');
|
|
|
+ if(!$appkey){
|
|
|
+ json_fail('AppKey不存在!');
|
|
|
+ }
|
|
|
+ $token = I('get.Token');
|
|
|
+ if(!$token){
|
|
|
+ json_fail('Token不存在!');
|
|
|
+ }
|
|
|
+ $timestamp = I('get.Timestamp');
|
|
|
+ if(!$timestamp){
|
|
|
+ json_fail('Timestamp不存在!');
|
|
|
+ }
|
|
|
+ $random = I('get.Random');
|
|
|
+ if(!$random){
|
|
|
+ json_fail('Random不存在!');
|
|
|
+ }
|
|
|
+ $this->token_verify($appkey,$timestamp,$random,$token);
|
|
|
+ $res = M('yhgl_kh_places')->field('ID as PlaceId, RegPointName as PlaceName')->select();
|
|
|
+ if(!$res){
|
|
|
+ json_fail('备案点不存在!');
|
|
|
+ }
|
|
|
+ json_success('查询成功',$res);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public function reportPersonalOrderInfo( ){
|
|
|
+ header('Access-Control-Allow-Origin:*');
|
|
|
+ $data = json_decode( file_get_contents("php://input") ,true);
|
|
|
+ $appid = $data['AppId'];
|
|
|
+ if(!$appid){
|
|
|
+ json_fail('AppId不存在!');
|
|
|
+ }
|
|
|
+ $appkey = $data['AppKey'];
|
|
|
+ if(!$appkey){
|
|
|
+ json_fail('AppKey不存在!');
|
|
|
+ }
|
|
|
+ $token = $data['Token'];
|
|
|
+ if(!$token){
|
|
|
+ json_fail('Token不存在!');
|
|
|
+ }
|
|
|
+ $timestamp = $data['Timestamp'];
|
|
|
+ if(!$timestamp){
|
|
|
+ json_fail('Timestamp不存在!');
|
|
|
+ }
|
|
|
+ $random = $data['Random'];
|
|
|
+ if(!$random){
|
|
|
+ json_fail('Random不存在!');
|
|
|
+ }
|
|
|
+ $this->token_verify($appkey,$timestamp,$random,$token);
|
|
|
+ if(!$data['FullName']){
|
|
|
+ json_fail('用户名不存在!');
|
|
|
+ }
|
|
|
+ if(!$data['Sex']){
|
|
|
+ json_fail('用户性别不存在!');
|
|
|
+ }
|
|
|
+ if(!$data['UserPhone']){
|
|
|
+ json_fail('用户手机号不存在!');
|
|
|
+ }
|
|
|
+ if(!$data['IdCard']){
|
|
|
+ json_fail('用户身份证不存在!');
|
|
|
+ }
|
|
|
+ if(!$data['DetailedAdd']){
|
|
|
+ json_fail('用户地址不存在!');
|
|
|
+ }
|
|
|
+ if(!$data['PlaceId']){
|
|
|
+ json_fail('备案点不存在!');
|
|
|
+ }
|
|
|
+ if(!$data['InstallDate']){
|
|
|
+ json_fail('安装日期不存在!');
|
|
|
+ }
|
|
|
+ if(!$data['OrderType']){
|
|
|
+ json_fail('订单类型不存在!');
|
|
|
+ }
|
|
|
+ if(!$data['OpenId']){
|
|
|
+ json_fail('用户ID不存在!');
|
|
|
+ }
|
|
|
+ //获取备案点信息
|
|
|
+ $place_message = M('yhgl_kh_places')->where(array('ID'=>$data['PlaceId']))->field('RegPointName,PersonInCharge,ResPhone,Address,Latitude,Longitude')->find();
|
|
|
+ //获取订单号
|
|
|
+ $ordernumber = $this->setOrderNumber();
|
|
|
+ //检测车牌是否存在
|
|
|
+ if(!$data['LicensePlate']){
|
|
|
+ $data = array(
|
|
|
+ 'ID' => create_guid(),
|
|
|
+ 'FullName' => $data['FullName'],
|
|
|
+ 'Sex' => $data['Sex'],
|
|
|
+ 'UserPhone' => $data['UserPhone'],
|
|
|
+ 'IdCard' => $data['IdCard'],
|
|
|
+ 'DetailedAdd' => $data['DetailedAdd'],
|
|
|
+ 'PlaceId' => $data['PlaceId'],
|
|
|
+ 'InstallDate' => $data['InstallDate'],
|
|
|
+ 'OrderType' => $data['OrderType'],
|
|
|
+ 'OpenId' => $data['OpenId'],
|
|
|
+ 'OrderNumber' => $ordernumber,
|
|
|
+ 'OrderStatus' => 0,
|
|
|
+ 'AddTime' => date('Y-m-d H:i:s'),
|
|
|
+ 'EffectiveDate' => date("Y-m-d",strtotime("+".C('WJW.DELIVERY_TIME')." day")),
|
|
|
+ 'ExpireDate' => date("Y-m-d",strtotime("+".(C('WJW.DELIVERY_TIME')+C('WJW.EXPIRATION_DATE'))." day")),
|
|
|
+ );
|
|
|
+ $res = M('jms_order')->createAdd($data);
|
|
|
+ if(!$res){
|
|
|
+ json_fail('订单信息添加失败!');
|
|
|
+ }
|
|
|
+ $place_message['OrderNumber'] = $ordernumber;
|
|
|
+ json_success('操作成功',$place_message);
|
|
|
+ }else{
|
|
|
+ $order_num = M('jms_order')->where(array('LicensePlate'=>$data['LicensePlate'],'OrderStatus'=>array('neq','2')))->count();
|
|
|
+ //判断订单状态,过期重新开户
|
|
|
+ if(!$order_num){
|
|
|
+ $data = array(
|
|
|
+ 'ID' => create_guid(),
|
|
|
+ 'FullName' => $data['FullName'],
|
|
|
+ 'Sex' => $data['Sex'],
|
|
|
+ 'UserPhone' => $data['UserPhone'],
|
|
|
+ 'IdCard' => $data['IdCard'],
|
|
|
+ 'DetailedAdd' => $data['DetailedAdd'],
|
|
|
+ 'PlaceId' => $data['PlaceId'],
|
|
|
+ 'InstallDate' => $data['InstallDate'],
|
|
|
+ 'OrderType' => $data['OrderType'],
|
|
|
+ 'OpenId' => $data['OpenId'],
|
|
|
+ 'OrderNumber' => $ordernumber,
|
|
|
+ 'OrderStatus' => 0,
|
|
|
+ 'AddTime' => date('Y-m-d H:i:s'),
|
|
|
+ 'LicensePlate' => $data['LicensePlate'],
|
|
|
+ 'EffectiveDate' => date("Y-m-d",strtotime("+".C('WJW.DELIVERY_TIME')." day")),
|
|
|
+ 'ExpireDate' => date("Y-m-d",strtotime("+".(C('WJW.DELIVERY_TIME')+C('WJW.EXPIRATION_DATE'))." day")),
|
|
|
+ );
|
|
|
+ $res = M('jms_order')->createAdd($data);
|
|
|
+ if(!$res){
|
|
|
+ json_fail('订单信息保存失败!');
|
|
|
+ }
|
|
|
+ $place_message['OrderNumber'] = $ordernumber;
|
|
|
+ json_success('操作成功',$place_message);
|
|
|
+ }else{
|
|
|
+ json_fail('订单信息已经存在');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public function getCompanyList( ){
|
|
|
+ header('Access-Control-Allow-Origin:*');
|
|
|
+ $appid = I('get.AppId');
|
|
|
+ if(!$appid){
|
|
|
+ json_fail('AppId不存在!');
|
|
|
+ }
|
|
|
+ $appkey = I('get.AppKey');
|
|
|
+ if(!$appkey){
|
|
|
+ json_fail('AppKey不存在!');
|
|
|
+ }
|
|
|
+ $token = I('get.Token');
|
|
|
+ if(!$token){
|
|
|
+ json_fail('Token不存在!');
|
|
|
+ }
|
|
|
+ $timestamp = I('get.Timestamp');
|
|
|
+ if(!$timestamp){
|
|
|
+ json_fail('Timestamp不存在!');
|
|
|
+ }
|
|
|
+ $random = I('get.Random');
|
|
|
+ if(!$random){
|
|
|
+ json_fail('Random不存在!');
|
|
|
+ }
|
|
|
+ $this->token_verify($appkey,$timestamp,$random,$token);
|
|
|
+ $res = M('jms_company')->field('ID as CompanyId,Name as CompanyName')->select();
|
|
|
+ if(!$res){
|
|
|
+ json_fail('公司不存在!');
|
|
|
+ }
|
|
|
+ json_success('查询成功',$res);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public function reportCompanyOrderInfo( ){
|
|
|
+ header('Access-Control-Allow-Origin:*');
|
|
|
+ $data = json_decode( file_get_contents("php://input") ,true);
|
|
|
+ $appid = $data['AppId'];
|
|
|
+ if(!$appid){
|
|
|
+ json_fail('AppId不存在!');
|
|
|
+ }
|
|
|
+ $appkey = $data['AppKey'];
|
|
|
+ if(!$appkey){
|
|
|
+ json_fail('AppKey不存在!');
|
|
|
+ }
|
|
|
+ $token = $data['Token'];
|
|
|
+ if(!$token){
|
|
|
+ json_fail('Token不存在!');
|
|
|
+ }
|
|
|
+ $timestamp = $data['Timestamp'];
|
|
|
+ if(!$timestamp){
|
|
|
+ json_fail('Timestamp不存在!');
|
|
|
+ }
|
|
|
+ $random = $data['Random'];
|
|
|
+ if(!$random){
|
|
|
+ json_fail('Random不存在!');
|
|
|
+ }
|
|
|
+ $this->token_verify($appkey,$timestamp,$random,$token);
|
|
|
+ if(!$data['FullName']){
|
|
|
+ json_fail('用户名不存在!');
|
|
|
+ }
|
|
|
+ if(!$data['Sex']){
|
|
|
+ json_fail('用户性别不存在!');
|
|
|
+ }
|
|
|
+ if(!$data['UserPhone']){
|
|
|
+ json_fail('用户手机号不存在!');
|
|
|
+ }
|
|
|
+ if(!$data['IdCard']){
|
|
|
+ json_fail('用户身份证不存在!');
|
|
|
+ }
|
|
|
+ if(!$data['DetailedAdd']){
|
|
|
+ json_fail('用户地址不存在!');
|
|
|
+ }
|
|
|
+ if(!$data['PlaceId']){
|
|
|
+ json_fail('备案点不存在!');
|
|
|
+ }
|
|
|
+ if(!$data['CompanyId']){
|
|
|
+ json_fail('公司ID不存在!');
|
|
|
+ }
|
|
|
+ //获取备案点信息
|
|
|
+ $place_message = M('yhgl_kh_places')->where(array('ID'=>$data['PlaceId']))->field('RegPointName,PersonInCharge,ResPhone,Address,Latitude,Longitude')->find();
|
|
|
+ //获取订单号
|
|
|
+ $ordernumber = $this->setOrderNumber();
|
|
|
+ //检测车牌是否存在
|
|
|
+ if(!$data['LicensePlate']){
|
|
|
+ $data = array(
|
|
|
+ 'ID' => create_guid(),
|
|
|
+ 'FullName' => $data['FullName'],
|
|
|
+ 'Sex' => $data['Sex'],
|
|
|
+ 'UserPhone' => $data['UserPhone'],
|
|
|
+ 'IdCard' => $data['IdCard'],
|
|
|
+ 'DetailedAdd' => $data['DetailedAdd'],
|
|
|
+ 'PlaceId' => $data['PlaceId'],
|
|
|
+ 'InstallDate' => date('Y-m-d'),
|
|
|
+ 'OrderType' => 2,
|
|
|
+ 'CompanyId' => $data['CompanyId'],
|
|
|
+ 'OrderNumber' => $ordernumber,
|
|
|
+ 'OrderStatus' => 0,
|
|
|
+ 'AddTime' => date('Y-m-d H:i:s'),
|
|
|
+ 'EffectiveDate' => date("Y-m-d",strtotime("+".C('WJW.DELIVERY_TIME')." day")),
|
|
|
+ 'ExpireDate' => date("Y-m-d",strtotime("+".(C('WJW.DELIVERY_TIME')+C('WJW.EXPIRATION_DATE'))." day")),
|
|
|
+ );
|
|
|
+ $res = M('jms_order')->createAdd($data);
|
|
|
+ if(!$res){
|
|
|
+ json_fail('订单信息添加失败!');
|
|
|
+ }
|
|
|
+ $place_message['OrderNumber'] = $ordernumber;
|
|
|
+ json_success('操作成功',$place_message);
|
|
|
+ }else{
|
|
|
+ $order_num = M('jms_order')->where(array('LicensePlate'=>$data['LicensePlate'],'OrderStatus'=>array('neq','2')))->count();
|
|
|
+ //判断订单状态,过期重新开户
|
|
|
+ if(!$order_num){
|
|
|
+ $data = array(
|
|
|
+ 'ID' => create_guid(),
|
|
|
+ 'FullName' => $data['FullName'],
|
|
|
+ 'Sex' => $data['Sex'],
|
|
|
+ 'UserPhone' => $data['UserPhone'],
|
|
|
+ 'IdCard' => $data['IdCard'],
|
|
|
+ 'DetailedAdd' => $data['DetailedAdd'],
|
|
|
+ 'PlaceId' => $data['PlaceId'],
|
|
|
+ 'InstallDate' => date('Y-m-d'),
|
|
|
+ 'OrderType' => 2,
|
|
|
+ 'CompanyId' => $data['CompanyId'],
|
|
|
+ 'OrderNumber' => $ordernumber,
|
|
|
+ 'OrderStatus' => 0,
|
|
|
+ 'AddTime' => date('Y-m-d H:i:s'),
|
|
|
+ 'LicensePlate' => $data['LicensePlate'],
|
|
|
+ 'EffectiveDate' => date("Y-m-d",strtotime("+".C('WJW.DELIVERY_TIME')." day")),
|
|
|
+ 'ExpireDate' => date("Y-m-d",strtotime("+".(C('WJW.DELIVERY_TIME')+C('WJW.EXPIRATION_DATE'))." day")),
|
|
|
+ );
|
|
|
+ $res = M('jms_order')->createAdd($data);
|
|
|
+ if(!$res){
|
|
|
+ json_fail('订单信息保存失败!');
|
|
|
+ }
|
|
|
+ $place_message['OrderNumber'] = $ordernumber;
|
|
|
+ json_success('操作成功',$place_message);
|
|
|
+ }else{
|
|
|
+ json_fail('订单信息已经存在');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public function deletePlateFromRedis( $plate ){
|
|
|
+ $config = parse_url(C('REDIS_DSN'));
|
|
|
+ $redis = new Redis();
|
|
|
+ $redis->connect($config["host"],$config["port"]?:6379);
|
|
|
+ $redis->auth($config["pass"]?: "");
|
|
|
+ $redis->select(trim($config['path'],'//') ? : 0);
|
|
|
+
|
|
|
+ //删除一个元素
|
|
|
+ $res = $redis->sRem('plate_preselect_pool',$plate);
|
|
|
+ if(!$res){
|
|
|
+ json_fail('车牌库删除车牌失败');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public function setOrderNumber( ){
|
|
|
+ $order_id = rand(10000000,99999999);
|
|
|
+ $res = M('jms_order')->where(array('OrderNumber'=>$order_id_main))->find();
|
|
|
+ if($res){
|
|
|
+ json_fail('订单号生成失败');
|
|
|
+ }
|
|
|
+ return $order_id;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public function releaseRedisExpiredLicenseplate( ){
|
|
|
+
|
|
|
+ $redis = Redis("wjw_plate","hash");
|
|
|
+ $all = $redis->tables('*');
|
|
|
+
|
|
|
+ exit;
|
|
|
+ $it = NULL;
|
|
|
+ $pattern = '*';
|
|
|
+ $count = 50; // 每次遍历50条,注意是遍历50条,遍历出来的50条key还要去匹配你的模式,所以并不等于就能够取出50条key
|
|
|
+ $keysArr = $redis->scan($it, $pattern, $count);
|
|
|
+
|
|
|
+ var_dump($keysArr);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|