diff --git a/controllers/Carpayment.php b/controllers/Carpayment.php index 42a0bd4..5d185db 100644 --- a/controllers/Carpayment.php +++ b/controllers/Carpayment.php @@ -101,7 +101,19 @@ class Carpayment extends CI_Controller } - + // http://localhost/carpayment.html/parktron001/ (post method) + // 博辰進場通知 + public function parktron001() + { + $parms['devno'] = $this->input->post('devno', true); + $parms['token'] = $this->input->post('token', true); + $parms['lpr'] = trim($this->input->post('lpr', true)); + $parms['in_time'] = $this->input->post('in_time', true); + $parms['type'] = $this->input->post('type', true); + trigger_error('博辰進場參數:' . print_r($parms, true)); + + $this->carpayment_model->parktron001($parms); + } // http://localhost/carpayment.html/p2payed/ (post method) diff --git a/coworker/parktron2server_fuzzy.php b/coworker/parktron2server_fuzzy.php index eee21f1..4ab928c 100644 --- a/coworker/parktron2server_fuzzy.php +++ b/coworker/parktron2server_fuzzy.php @@ -45,9 +45,25 @@ $tcp_worker->onMessage = function($connection, $tcp_in) list($devno, $token, $lpr, $in_time, $last_field) = explode(chr(31), $data); // 0x1F data欄位分隔 $type = substr($last_field, 0, -2); echo "{$devno}|{$token}|{$lpr}|{$in_time}|{$type}|\n"; - $connection->send('OK'); - break; - + $connection->send('OK'); + + // 傳送入場資料 + $data = array + ( + 'devno' => $devno, // 設備編號 + 'token' => $token, // 票卡號碼 + 'lpr' => $lpr, // 車號 + 'in_time' => $in_time, // 入場時間 + 'type' => $type // 票卡種類 (0:臨停票卡進場, 1:臨停無票卡進場, 2:月票, 3:多卡通進場) + ); + + curl_setopt($ch, CURLOPT_URL, 'http://localhost/carpayment.html/parktron001/'); + curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); + $results = curl_exec($ch); + + //file_put_contents('/tmp/aps.log.txt', date('Y-m-d H:i:s').":{$err_lpr}\n".print_r($data, true)."\n\n", FILE_APPEND); + file_put_contents('/tmp/aps.log.txt', date('Y-m-d H:i:s').":{$lpr}\n".print_r($data, true)."\n\n", FILE_APPEND); + break; case '002': // APS詢問車牌入場時間 list($token, $lpr, $last_field) = explode(chr(31), $data); // 0x1F data欄位分隔 $lpr = str_replace('%', '', $lpr); diff --git a/models/Carpayment_model.php b/models/Carpayment_model.php index 32b2c54..e36fae3 100644 --- a/models/Carpayment_model.php +++ b/models/Carpayment_model.php @@ -211,7 +211,8 @@ class Carpayment_model extends CI_Model trigger_error( "..sync_st_pay.." . $sync_result); return 'ok'; } - + + // 行動支付, 手機告知已付款 // http://203.75.167.89/carpayment.html/m2payed/ABC1234/120/12112/12345/1f3870be274f6c49b3e31a0c6728957f @@ -253,7 +254,63 @@ class Carpayment_model extends CI_Model // //////////////////////////////////////// + // 博辰票卡進場通知 (UPDATED 2016/08/23) + public function parktron001($parms) + { + // 車道與裝置對應關係 + $lanes = array + ( + 11 => array ('in_lane' => '0'), // 入口 1 + 12 => array ('in_lane' => '1') // 入口 2 + ); + + if(!array_key_exists($parms['devno'], $lanes)) + { + trigger_error("[ERROR] 未知的裝置 | {$parms['devno']}"); + return false; + } + + if($parms['token'] == '000000000') + { + trigger_error("[ERROR] 無卡號 | {$parms['devno']}"); + return false; + } + // 由設備編號對應攝影機編號, 再對應進場記錄 + $result = $this->db->select("cario_no, in_time, obj_id as lpr") + ->from('cario') + ->where(array( + 'in_out' => 'CI', 'finished' => 0, 'err' => 0, 'obj_type' => 1, 'member_no' => 0, + 'in_time > ' => date("Y-m-d H:i:s", strtotime('- 1 minutes')), // 限時 + 'ticket_no' => '', + 'in_lane' => $lanes[$parms['devno']]['in_lane'] + )) + ->order_by('cario_no', 'desc') + ->limit(1) + ->get() + ->row_array(); + + //trigger_error("[test] 車道 {$lanes[$parms['devno']]['in_lane']} test|".print_r($result, true)); + + if (empty($result['cario_no'])) + { + trigger_error("[ERROR] 車道 {$lanes[$parms['devno']]['in_lane']} 查無進場記錄|".print_r($parms, true)); + return false; + } + + $data = array + ( + 'ticket_dev' => $parms['devno'], + 'ticket_no' => $parms['token'], + 'ticket_type' => $parms['type'] + ); + + $this->db + ->where(array('cario_no' => $result['cario_no'])) + ->update('cario', $data); + + trigger_error("博辰票卡進場更新記錄|{$result['lpr']}|{$result['in_time']}|{$result['cario_no']}|{$parms['token']}|rows:{$this->db->affected_rows()}"); + } // 模糊比對 function getLevenshteinSQLStatement($word, $target)