From 88e46b09982c2b2c70db143f6e75eaac2cbc8ce0 Mon Sep 17 00:00:00 2001 From: "altob.rd" Date: Mon, 13 Nov 2017 17:59:16 +0800 Subject: [PATCH] restore ..test gg.. --- controllers/Carpark.php | 45 +++++----------- controllers/Cars.php | 64 ++++------------------ controllers/Pks.php | 10 +--- models/Cars_model.php | 132 +++++++++++++++++---------------------------- models/Pks_model.php | 24 --------- models/Sync_data_model.php | 26 --------- 6 files changed, 76 insertions(+), 225 deletions(-) diff --git a/controllers/Carpark.php b/controllers/Carpark.php index e103b60..d082054 100644 --- a/controllers/Carpark.php +++ b/controllers/Carpark.php @@ -4,6 +4,8 @@ file: carpark.php 停車管理 */ if ( ! defined('BASEPATH')) exit('No direct script access allowed'); +require_once(MQ_CLASS_FILE); + // ----- 定義常數(路徑, cache秒數) ----- define('APP_VERSION', '100'); // 版本號 define('MAX_AGE', 604800); // cache秒數, 此定義1個月 @@ -17,8 +19,6 @@ define('WEB_LIB', SERVER_URL.'libs/'); // 網頁lib define('BOOTSTRAPS', WEB_LIB.'bootstrap_sb/'); // bootstrap lib define('LOG_PATH', FILE_BASE.APP_NAME.'/logs/'); // log path -require_once(MQ_CLASS_FILE); - class Carpark extends CI_Controller { var $vars = array(); // 共用變數 @@ -53,15 +53,15 @@ class Carpark extends CI_Controller $this->load->model('sync_data_model'); $this->sync_data_model->init($this->vars); // for memcache - // mqtt + // mqtt subscribe $station_setting = $this->sync_data_model->station_setting_query(); $mqtt_ip = isset($station_setting['mqtt_ip']) ? $station_setting['mqtt_ip'] : MQ_HOST; $mqtt_port = isset($station_setting['mqtt_port']) ? $station_setting['mqtt_port'] : MQ_PORT; - $this->vars['mqtt_ip'] = $mqtt_ip; - $this->vars['mqtt_port'] = $mqtt_port; + $this->vars['mqtt'] = new phpMQTT($mqtt_ip, $mqtt_port, uniqid()); + $this->vars['mqtt']->connect(); - // init sync model - $this->sync_data_model->init($this->vars); + // init again + $this->sync_data_model->init($this->vars); // for mqtt // 產生 excel 報表 $this->load->model('excel_model'); @@ -201,7 +201,7 @@ class Carpark extends CI_Controller $this->load->model('cars_model'); $this->cars_model->init($this->vars); $this->cars_model->lprio($parms); - $this->cars_model->stop(); + echo 'ok'; exit; } @@ -227,7 +227,7 @@ class Carpark extends CI_Controller $this->load->model('cars_model'); $this->cars_model->init($this->vars); $this->cars_model->opendoor_lprio($parms); - $this->cars_model->stop(); + echo 'ok'; exit; } @@ -256,20 +256,15 @@ class Carpark extends CI_Controller // 判斷會員身份 $rows = $this->cars_model->get_member($lpr); - // 取得 ck - $parms['ck'] = $this->cars_model->gen_opendoor_ck($parms); - if ($rows['member_no'] == 0) { - //$this->cars_model->mq_send_opendoor(MQ_TOPIC_OPEN_DOOR, "DO{$parms['ivsno']},TICKET,{$parms['lpr']}"); - $this->cars_model->temp_opendoors($parms); // 臨停訊號 + $this->cars_model->mq_send(MQ_TOPIC_OPEN_DOOR, "DO{$parms['ivsno']},TICKET,{$parms['lpr']}"); // 臨停訊號 } else { - //$this->cars_model->mq_send_opendoor(MQ_TOPIC_OPEN_DOOR, "DO{$parms['ivsno']},OPEN,{$parms['lpr']}"); - $this->cars_model->member_opendoors($parms); // 月租訊號 + $this->cars_model->mq_send(MQ_TOPIC_OPEN_DOOR, "DO{$parms['ivsno']},OPEN,{$parms['lpr']}"); // 月租訊號 } - $this->cars_model->stop(); + echo 'ok'; exit; } @@ -307,7 +302,6 @@ class Carpark extends CI_Controller if(sizeof($msg_arr) != 4) { - $this->sync_data_model->stop(); trigger_error($LOG_FLAG . __FUNCTION__ . "..error_size.." . print_r($msg_arr, true)); echo 'error_size'; exit; @@ -315,7 +309,6 @@ class Carpark extends CI_Controller if($msg_arr[0] != 'N888' || $msg_arr[3] != 'altob') { - $this->sync_data_model->stop(); trigger_error($LOG_FLAG . __FUNCTION__ . "..unknown_msg.." . print_r($msg_arr, true)); echo 'unknown_msg'; exit; @@ -326,9 +319,8 @@ class Carpark extends CI_Controller $value = isset($msg_arr[2]) ? $msg_arr[2] : 0; $result = $this->sync_data_model->force_sync_888($first_station_no, $group_id, $value); trigger_error($LOG_FLAG . __FUNCTION__ . "..{$first_station_no}|{$group_id}|{$value}..result..{$result}.."); - } + } - $this->sync_data_model->stop(); echo 'ok'; exit; } @@ -345,7 +337,6 @@ class Carpark extends CI_Controller if(!$station_setting) { - $this->sync_data_model->stop(); echo json_encode('fail', JSON_UNESCAPED_UNICODE); exit; // 中斷 } @@ -376,15 +367,11 @@ class Carpark extends CI_Controller if(!$station_setting) { - $this->sync_data_model->stop(); echo json_encode('fail', JSON_UNESCAPED_UNICODE); exit; // 中斷 } } - - $this->sync_data_model->stop(); echo json_encode($station_setting, JSON_UNESCAPED_UNICODE); - exit; } // [排程 or 強制] 同步場站資訊 @@ -431,7 +418,6 @@ class Carpark extends CI_Controller $this->sync_data_model->sync_switch_lpr($switch_lpr_arr); } - $this->sync_data_model->stop(); } // [API] 取得最新未結清 @@ -452,7 +438,6 @@ class Carpark extends CI_Controller } $data = $this->sync_data_model->get_last_unbalanced_cario($lpr, $station_no); - $this->sync_data_model->stop(); echo json_encode($data, JSON_UNESCAPED_UNICODE); } @@ -516,7 +501,6 @@ class Carpark extends CI_Controller public function sync_minutely() { $this->sync_data_model->sync_pks_groups(); // 同步在席現況 - $this->sync_data_model->stop(); } // 20170816 手動新增入場資料 @@ -981,10 +965,7 @@ class Carpark extends CI_Controller $group_id = $this->uri->segment(3); // id $value = $this->uri->segment(4, 0); // value $station_no = $this->uri->segment(5); // station_no - - // 重新載入 $data = $this->sync_data_model->pks_availables_update($group_id, $value, true, $station_no); - $this->sync_data_model->stop(); echo json_encode($data, JSON_UNESCAPED_UNICODE); } diff --git a/controllers/Cars.php b/controllers/Cars.php index 486f29d..48823c5 100644 --- a/controllers/Cars.php +++ b/controllers/Cars.php @@ -31,7 +31,7 @@ var ip='66.249.82.183';var clientid='565162cb67dfb';var mqtt_ip='192.168.51.11'; define('LOG_FILE', FILE_BASE.APP_NAME.'/logs/cario.'); // log file name require_once(MQ_CLASS_FILE); - + class Cars extends CI_Controller { var $vars = array(); @@ -103,13 +103,18 @@ class Cars extends CI_Controller $this->load->model('sync_data_model'); $this->sync_data_model->init($this->vars); // for memcache - // mqtt + // mqtt subscribe $station_setting = $this->sync_data_model->station_setting_query(); $mqtt_ip = isset($station_setting['mqtt_ip']) ? $station_setting['mqtt_ip'] : MQ_HOST; $mqtt_port = isset($station_setting['mqtt_port']) ? $station_setting['mqtt_port'] : MQ_PORT; - $this->vars['mqtt_ip'] = $mqtt_ip; - $this->vars['mqtt_port'] = $mqtt_port; - trigger_error(__FUNCTION__ . "..init mqtt..{$this->vars['mqtt_ip']}:{$this->vars['mqtt_port']}"); + $this->vars['mqtt'] = new phpMQTT($mqtt_ip, $mqtt_port, uniqid()); + $this->vars['mqtt']->connect(); + + // init again + $this->sync_data_model->init($this->vars); // for mqtt + + $this->load->model('cars_model'); + $this->cars_model->init($this->vars); } @@ -155,12 +160,7 @@ class Cars extends CI_Controller { $parms = $this->uri->uri_to_assoc(3); $parms['lpr'] = urldecode($parms['lpr']); // 中文車牌 - - // 載入 - $this->load->model('cars_model'); - $this->cars_model->init($this->vars); $this->cars_model->opendoor_lprio($parms); - $this->cars_model->stop(); } // IVS -> 車號, 影像 @@ -189,9 +189,7 @@ http://192.168.10.201/cars.html/ipcam/sno/12119/ivsno/0/io/O/type/C/lpr/4750YC/c $parms['lpr'] = urldecode($parms['lpr']); // 中文車牌 // 同步並送出一次出入口 888 - $this->sync_data_model->init($this->vars); $this->sync_data_model->sync_888($parms); - $this->sync_data_model->stop(); $pic_folder = CAR_PIC.$this->vars['date_num'].'/'; // 今日資料夾名(yyyymmdd) if (!file_exists($pic_folder)) mkdir($pic_folder); // 如果資料夾不存在, 建立日期資料夾 @@ -227,11 +225,7 @@ http://192.168.10.201/cars.html/ipcam/sno/12119/ivsno/0/io/O/type/C/lpr/4750YC/c $parms['curr_time_str'] = $this->vars['date_time']; // 現在時間, 例2015-09-21 15:36:47 $parms['pic_name'] = $config['file_name']; // 圖片檔名 - // 載入 - $this->load->model('cars_model'); - $this->cars_model->init($this->vars); $this->cars_model->lprio($parms); // 測試eTag - $this->cars_model->stop(); } // 用車牌與eTag, 檢查資料庫 @@ -240,45 +234,9 @@ http://192.168.10.201/cars.html/ipcam/sno/12119/ivsno/0/io/O/type/C/lpr/4750YC/c $lpr = $this->uri->segment(3); $etag = $this->uri->segment(4); - // 載入 - $this->load->model('cars_model'); - $this->cars_model->init($this->vars); - $this->cars_model->check_lpr_etag($lpr, $etag); - $this->cars_model->stop(); + $this->cars_model->check_lpr_etag($lpr, $etag); exit; } - - // 開門 (臨停) - public function temp_opendoors() - { - $parms['ivsno'] = $this->uri->segment(3); - $parms['lpr'] = $this->uri->segment(4); - $parms['ck'] = $this->uri->segment(5); - - // 載入 - $this->load->model('cars_model'); - $this->cars_model->init($this->vars); - $this->cars_model->do_temp_opendoor($parms); - $this->cars_model->stop(); - exit; - } - - // 開門 (臨停) - public function member_opendoors() - { - $parms['ivsno'] = $this->uri->segment(3); - $parms['lpr'] = $this->uri->segment(4); - $parms['ck'] = $this->uri->segment(5); - - // 載入 - $this->load->model('cars_model'); - $this->cars_model->init($this->vars); - $this->cars_model->do_member_opendoor($parms); - $this->cars_model->stop(); - exit; - } - - public function test_now() { diff --git a/controllers/Pks.php b/controllers/Pks.php index 1f762e1..230dea8 100644 --- a/controllers/Pks.php +++ b/controllers/Pks.php @@ -93,10 +93,8 @@ class Pks extends CI_Controller $station_setting = $this->sync_data_model->station_setting_query(); $mqtt_ip = isset($station_setting['mqtt_ip']) ? $station_setting['mqtt_ip'] : MQ_HOST; $mqtt_port = isset($station_setting['mqtt_port']) ? $station_setting['mqtt_port'] : MQ_PORT; - //$this->vars['mqtt'] = new phpMQTT($mqtt_ip, $mqtt_port, uniqid()); - //$this->vars['mqtt']->connect(); - $this->vars['mqtt_ip'] = $mqtt_ip; - $this->vars['mqtt_port'] = $mqtt_port; + $this->vars['mqtt'] = new phpMQTT($mqtt_ip, $mqtt_port, uniqid()); + $this->vars['mqtt']->connect(); // init sync model $this->sync_data_model->init($this->vars); @@ -256,7 +254,6 @@ class Pks extends CI_Controller */ $this->pks_model->pksio($parms); // 車輛進出車格資料庫處理 - $this->pks_model->stop(); exit; } @@ -266,7 +263,6 @@ class Pks extends CI_Controller public function reculc() { $this->pks_model->reculc(); - $this->pks_model->stop(); } @@ -277,7 +273,6 @@ class Pks extends CI_Controller { $station_no = $this->uri->segment(3); $data = $this->pks_model->query_station_status($station_no); - $this->pks_model->stop(); echo json_encode($data, JSON_UNESCAPED_UNICODE); } @@ -287,7 +282,6 @@ class Pks extends CI_Controller $station_no = $this->uri->segment(3); $pksno = $this->uri->segment(4); $data = $this->pks_model->query_station_pks($station_no, $pksno); - $this->pks_model->stop(); echo json_encode($data, JSON_UNESCAPED_UNICODE); } diff --git a/models/Cars_model.php b/models/Cars_model.php index f10bee5..49a0d69 100644 --- a/models/Cars_model.php +++ b/models/Cars_model.php @@ -23,66 +23,67 @@ class Cars_model extends CI_Model public function init($vars) { $this->vars = $vars; - - if(isset($this->vars['mqtt_ip']) && isset($this->vars['mqtt_port'])) - { - $this->vars['mqtt'] = new phpMQTT($this->vars['mqtt_ip'], $this->vars['mqtt_port'], uniqid()); - - if(!$this->vars['mqtt']->connect()) - { - trigger_error(__FUNCTION__ . '..mqtt fail..' . "{$this->vars['mqtt_ip']}:{$this->vars['mqtt_port']}"); - } - } - else - { - trigger_error(__FUNCTION__ . '..mqtt ip, port not found..'); - } } - - // 結束 - public function stop() - { - if(isset($this->vars['mqtt'])) - { - $this->vars['mqtt']->close(); - } - } - // 開門, 字幕 + // 車輛進出傳入車牌號碼 (2016/07/27) public function opendoor_lprio($parms) { $parms['lpr'] = urldecode($parms['lpr']); - trigger_error(__FUNCTION__ . '|車牌傳入 [開門]:' . print_r($parms, true)); + $rows = array(); + // $parms['ts'] = date('Y-m-d H:i:s', $parms['ts']); + trigger_error(__FUNCTION__ . '|車牌傳入:' . print_r($parms, true)); + + if ($parms['etag'] != 'NONE') + { + if ($parms['lpr'] != 'NONE') + { + // do nothing + } + else // 車辨失敗但有eTag, 查詢是否有車號 + { + //$parms['lpr'] = $this->etag2lpr_2($parms['etag']); // 2017/01/10 預設都不用 ETAG 找車牌 + } + } + $rows = $this->get_member($parms['lpr']); - $this->save_db_io($parms, $rows, true); // 開門, 字幕 + $this->save_db_io($parms, $rows, true); return true; } - - // 資料 + + // 車輛進出傳入車牌號碼 public function lprio($parms) { - $parms['lpr'] = urldecode($parms['lpr']); + //$parms['lpr'] = urldecode($parms['lpr']); - trigger_error(__FUNCTION__ . '車牌傳入 [資料]:' . print_r($parms, true)); + $rows = array(); + // $parms['ts'] = date('Y-m-d H:i:s', $parms['ts']); + trigger_error('車牌傳入:' . print_r($parms, true)); if ($parms['etag'] != 'NONE') { if ($parms['lpr'] != 'NONE') { - get_headers("http://localhost/cars.html/check_lpr_etag/{$parms['lpr']}/{$parms['etag']}"); + // 有車牌有eTag, 檢查資料庫是否double驗證 + //get_headers("http://192.168.10.201/cars.html/check_lpr_etag/{$parms['lpr']}/{$parms['etag']}"); + get_headers("http://localhost/cars.html/check_lpr_etag/{$parms['lpr']}/{$parms['etag']}"); // update 2016/07/26 + } + else // 車辨失敗但有eTag, 查詢是否有車號 + { + // $parms['lpr'] = $this->etag2lpr_2($parms['etag']); // 2017/01/10 預設都不用 ETAG 找車牌 } } $rows = $this->get_member($parms['lpr']); - $this->save_db_io($parms, $rows); // 資料 + $this->save_db_io($parms, $rows); return true; } + // 入出口異動cario - function save_db_io($parms, $rows, $opendoor=false) + public function save_db_io($parms, $rows, $opendoor=false) { if (!empty($rows['lpr_correct'])) $parms['lpr'] = $rows['lpr_correct']; @@ -844,6 +845,21 @@ class Cars_model extends CI_Model return $rows; } + // 開門 (月租) + public function member_opendoors($parms) + { + $this->mq_send(MQ_TOPIC_OPEN_DOOR, "DO{$parms['ivsno']},OPEN,{$parms['lpr']}"); + return true; + } + + // 開門 (臨停) + public function temp_opendoors($parms) + { + $this->mq_send(MQ_TOPIC_OPEN_DOOR, "DO{$parms['ivsno']},TICKET,{$parms['lpr']}"); + return true; + } + + // 用eTag讀出車號 public function etag2lpr_2($etag) { @@ -1147,59 +1163,11 @@ class Cars_model extends CI_Model // 送出至message queue(目前用mqtt) - function mq_send($topic, $msg) + public function mq_send($topic, $msg) { $this->vars['mqtt']->publish($topic, $msg, 0); trigger_error("mqtt:{$topic}|{$msg}"); } - - // 產生 CK - public function gen_opendoor_ck($parms) - { - return md5($parms['ivsno']. 'alt' . date('dmh') . 'ob' . $parms['lpr']); - } - - // 開門 (月租) - public function member_opendoors($parms) - { - //$this->mq_send_opendoor(MQ_TOPIC_OPEN_DOOR, "DO{$parms['ivsno']},OPEN,{$parms['lpr']}"); - $ck = $this->gen_opendoor_ck($parms); - get_headers("http://localhost/cars.html/member_opendoors/{$parms['ivsno']}/{$parms['lpr']}/{$ck}"); - return true; - } - - // 開門 (臨停) - public function temp_opendoors($parms) - { - //$this->mq_send_opendoor(MQ_TOPIC_OPEN_DOOR, "DO{$parms['ivsno']},TICKET,{$parms['lpr']}"); - $ck = $this->gen_opendoor_ck($parms); - get_headers("http://localhost/cars.html/temp_opendoors/{$parms['ivsno']}/{$parms['lpr']}/{$ck}"); - return true; - } - - // 開門 (月租) - public function do_member_opendoor($parms) - { - if($parms['ck'] != $this->cars_model->gen_opendoor_ck($parms)) - { - return 'ck_error'; // 中斷 - } - - $this->mq_send(MQ_TOPIC_OPEN_DOOR, "DO{$parms['ivsno']},OPEN,{$parms['lpr']}"); - return 'ok'; - } - - // 開門 (臨停) - public function do_temp_opendoor($parms) - { - if($parms['ck'] != $this->cars_model->gen_opendoor_ck($parms)) - { - return 'ck_error'; // 中斷 - } - - $this->mq_send(MQ_TOPIC_OPEN_DOOR, "DO{$parms['ivsno']},TICKET,{$parms['lpr']}"); - return 'ok'; - } // 指派車位 diff --git a/models/Pks_model.php b/models/Pks_model.php index 83b442d..f545c89 100644 --- a/models/Pks_model.php +++ b/models/Pks_model.php @@ -16,31 +16,7 @@ class Pks_model extends CI_Model public function init($vars) { $this->vars = $vars; - - if(isset($this->vars['mqtt_ip']) && isset($this->vars['mqtt_port'])) - { - // 一般 - $this->vars['mqtt'] = new phpMQTT($this->vars['mqtt_ip'], $this->vars['mqtt_port'], uniqid(). 'mqtt'); - - if(!$this->vars['mqtt']->connect()) - { - trigger_error(__FUNCTION__ . '..mqtt connect fail..' . "{$this->vars['mqtt_ip']}:{$this->vars['mqtt_port']}"); - } - } - else - { - trigger_error(__FUNCTION__ . '..mqtt ip, port not found..'); - } } - - // 結束 - public function stop() - { - if(isset($this->vars['mqtt'])) - { - $this->vars['mqtt']->close(); - } - } // 車輛進出傳入車牌號碼 diff --git a/models/Sync_data_model.php b/models/Sync_data_model.php index eaccf57..fc92207 100644 --- a/models/Sync_data_model.php +++ b/models/Sync_data_model.php @@ -23,34 +23,8 @@ class Sync_data_model extends CI_Model public function init($vars) { $this->vars = $vars; - - // 一般 - if(isset($this->vars['mqtt_ip']) && isset($this->vars['mqtt_port'])) - { - $this->vars['mqtt'] = new phpMQTT($this->vars['mqtt_ip'], $this->vars['mqtt_port'], uniqid(). 'mqtt'); - - if(!$this->vars['mqtt']->connect()) - { - trigger_error(__FUNCTION__ . '..mqtt connect fail..' . "{$this->vars['mqtt_ip']}:{$this->vars['mqtt_port']}"); - } - } - else - { - trigger_error(__FUNCTION__ . '..mqtt ip, port not found..'); - } - } - // 結束 - public function stop() - { - if(isset($this->vars['mqtt'])) - { - $this->vars['mqtt']->close(); - trigger_error(__FUNCTION__ . '..mqtt close..' . "{$this->vars['mqtt_ip']}:{$this->vars['mqtt_port']}"); - } - } - // 送出至message queue(目前用mqtt) public function mq_send($topic, $msg) {