Sfoglia il codice sorgente

allpa upd

station_14109
altob.rd 8 anni fa
parent
commit
498af8440b
5 ha cambiato i file con 187 aggiunte e 49 eliminazioni
  1. +44
    -4
      controllers/Allpa_service.php
  2. +6
    -1
      controllers/Carpark.php
  3. +53
    -41
      models/Cars_model.php
  4. +32
    -0
      models/Sync_data_model.php
  5. +52
    -3
      phplibs/Altob.Sync.Integration.php

+ 44
- 4
controllers/Allpa_service.php Vedi File

@@ -522,6 +522,44 @@ class Allpa_service extends CI_Controller
file_get_contents(APP_URL."allpa_consume_handler/{$data["order_no"]}");
}
}
// 遠端歐PA卡流程
public function allpa_go_remote()
{
$in_time = $this->uri->segment(3); // 進場時間
$lpr = $this->uri->segment(4); // 車牌號碼
$station_no = $this->uri->segment(5); // 場站編號
$check_mac = $this->uri->segment(6); // 驗証欄位
// 驗証欄位
if($check_mac != md5($in_time. $lpr . $station_no))
{
echo 'ck_error';
exit;
}
// 先檢查本地端是否為歐PA會員
$valid_user_ck = md5($lpr);
$valid_user_result = $this->allpa_service_model->get_allpa_valid_user($lpr, $valid_user_ck); // check user
if(!isset($valid_user_result['result_code']) || $valid_user_result['result_code'] != 0)
{
echo json_encode($valid_user_result, JSON_UNESCAPED_UNICODE);
}
else
{
$out_time = strtotime(date('Y-m-d H:i:s')); // 結帳時間
require_once(ALTOB_SYNC_FILE);
$sync_agent = new AltobSyncAgent();
$sync_agent->init($station_no, $out_time);
$sync_agent->in_time = $in_time; // 入場時間
$allpa_go_result = $sync_agent->allpa_go($lpr);
trigger_error(__FUNCTION__ . "..$lpr|$in_time|$out_time.." . print_r($allpa_go_result, true));
echo $allpa_go_result;
}
}
// L.2 歐Pa卡 - 非同步扣款 (限制存取)
public function allpa_consume_handler()
@@ -555,13 +593,15 @@ class Allpa_service extends CI_Controller
// only test
public function gen_test_link()
{
$in_time = strtotime("2016-03-29 16:50:00");
$lpr = "SAYLXXX";
$station_no = "12112";
$in_time = strtotime("2017-11-14 16:50:00");
$lpr = "TEST123";
$station_no = "12302";
echo "TEST: ".APP_URL."allpa_go/{$in_time}/{$lpr}/{$station_no}/".md5($in_time.$lpr.$station_no);
echo "<br/>";
echo "\n";
echo "TEST: ".APP_URL."get_allpa_valid_user/{$lpr}/".md5($lpr);
echo "\n";
echo "TEST: ".APP_URL."allpa_go_remote/{$in_time}/{$lpr}/{$station_no}/".md5($in_time.$lpr.$station_no);
header('Connection: close');
header('Content-Length: ' . ob_get_length());


+ 6
- 1
controllers/Carpark.php Vedi File

@@ -365,6 +365,12 @@ class Carpark extends CI_Controller
usleep(300000); // 0.3 sec delay
// 歐pa卡同步
$result = $this->sync_data_model->sync_allpa_user($info);
trigger_error(__FUNCTION__ . '..sync_allpa_user: '. $result);
usleep(300000); // 0.3 sec delay
// 在席資料同步
$result = $this->sync_data_model->sync_pks_groups_reload($station_setting);
trigger_error(__FUNCTION__ . '..sync_pks_groups_reload: '. $result);
@@ -425,7 +431,6 @@ class Carpark extends CI_Controller
{
$this->sync_data_model->sync_switch_lpr($switch_lpr_arr);
}
}
// [API] 取得最新未結清


+ 53
- 41
models/Cars_model.php Vedi File

@@ -560,50 +560,62 @@ class Cars_model extends CI_Model
{
$in_time = strtotime($rows_cario['out_before_time']);
$ck = md5($in_time. $parms['lpr'] . $parms['sno']);
$jdata = file_get_contents("http://localhost/allpa_service.html/allpa_go/{$in_time}/{$parms['lpr']}/{$parms['sno']}/{$ck}");
//$jdata = file_get_contents("http://localhost/allpa_service.html/allpa_go/{$in_time}/{$parms['lpr']}/{$parms['sno']}/{$ck}");
$jdata = file_get_contents("http://localhost/allpa_service.html/allpa_go_remote/{$in_time}/{$parms['lpr']}/{$parms['sno']}/{$ck}");
trigger_error("allpa回傳:{$jdata}|{$in_time}/{$parms['lpr']}/{$parms['sno']}/{$ck}");
$results = json_decode($jdata, true);
trigger_error("+++".print_r($results, true));
if ($results['result_code'] == 0) // 歐pa卡, 點數足夠扣
if (isset($results['result_code'])) // 歐pa卡, 點數足夠扣
{
// 臨停開門
$this->temp_opendoors($parms);
// 歐pa卡, 字幕
$this->mq_send(MQ_TOPIC_ALTOB, MQ_ALTOB_MSG.",7,{$parms['ivsno']},{$parms['lpr']},{$results['amt']}".MQ_ALTOB_MSG_END_TAG);
// // $this->mq_send(MQ_TOPIC_SUBTEXT, "{$parms['ivsno']},{$msg}扣{$results['amt']}點請離場");
// $this->mq_send(MQ_TOPIC_SUBTEXT, "{$parms['ivsno']},{$msg}請離場歐pa卡扣:{$results['amt']}點謝謝光臨");
// updated 2016/09/01
$data = array(
'out_before_time' => date('Y-m-d H:i:s', strtotime(" + 15 minutes")),
'pay_time' => $this->now_str,
'pay_type' => 9, // 歐pa卡
'payed' => 1
);
$this->db->update('cario', $data, array('cario_no' => $rows_cario['cario_no'])); // 記錄出場
// [acer] cmd:102 離場車辨成功流程 START
$this->call_acer('102', array('cario_no' => $rows_cario['cario_no'], 'ivs_no' => $parms['ivsno'], 'msg_code' => 7));
// [acer] cmd:102 離場車辨成功流程 END
}
else if ($results['result_code'] == 12) // 歐pa卡, 餘額不足
{
// 臨停字幕
$this->mq_send(MQ_TOPIC_ALTOB, MQ_ALTOB_MSG.",12,{$parms['ivsno']},{$parms['lpr']}".MQ_ALTOB_MSG_END_TAG);
// [acer] cmd:102 離場車辨成功流程 START
$this->call_acer('102', array('cario_no' => $rows_cario['cario_no'], 'ivs_no' => $parms['ivsno'], 'msg_code' => 12));
// [acer] cmd:102 離場車辨成功流程 END
}
else if ($results['result_code'] == 11) // 歐pa卡, 查無會員
{
// 臨停字幕
$this->mq_send(MQ_TOPIC_ALTOB, MQ_ALTOB_MSG.",9,{$parms['ivsno']},{$parms['lpr']}".MQ_ALTOB_MSG_END_TAG);
//// $this->mq_send(MQ_TOPIC_SUBTEXT, "{$parms['ivsno']},{$msg}其它付款方式");
// $this->mq_send(MQ_TOPIC_SUBTEXT, "{$parms['ivsno']},{$msg}臨時車請投票卡或刷卡出場");
// [acer] cmd:102 離場車辨成功流程 START
$this->call_acer('102', array('cario_no' => $rows_cario['cario_no'], 'ivs_no' => $parms['ivsno'], 'msg_code' => 9));
// [acer] cmd:102 離場車辨成功流程 END
if($results['result_code'] == 0)
{
// 臨停開門
$this->temp_opendoors($parms);
// 歐pa卡, 字幕
$this->mq_send(MQ_TOPIC_ALTOB, MQ_ALTOB_MSG.",7,{$parms['ivsno']},{$parms['lpr']},{$results['amt']}".MQ_ALTOB_MSG_END_TAG);
// // $this->mq_send(MQ_TOPIC_SUBTEXT, "{$parms['ivsno']},{$msg}扣{$results['amt']}點請離場");
// $this->mq_send(MQ_TOPIC_SUBTEXT, "{$parms['ivsno']},{$msg}請離場歐pa卡扣:{$results['amt']}點謝謝光臨");
// updated 2016/09/01
$data = array(
'out_before_time' => date('Y-m-d H:i:s', strtotime(" + 15 minutes")),
'pay_time' => $this->now_str,
'pay_type' => 9, // 歐pa卡
'payed' => 1
);
$this->db->update('cario', $data, array('cario_no' => $rows_cario['cario_no'])); // 記錄出場
// [acer] cmd:102 離場車辨成功流程 START
$this->call_acer('102', array('cario_no' => $rows_cario['cario_no'], 'ivs_no' => $parms['ivsno'], 'msg_code' => 7));
// [acer] cmd:102 離場車辨成功流程 END
}
else if ($results['result_code'] == 12) // 歐pa卡, 餘額不足
{
// 臨停字幕
$this->mq_send(MQ_TOPIC_ALTOB, MQ_ALTOB_MSG.",12,{$parms['ivsno']},{$parms['lpr']}".MQ_ALTOB_MSG_END_TAG);
// [acer] cmd:102 離場車辨成功流程 START
$this->call_acer('102', array('cario_no' => $rows_cario['cario_no'], 'ivs_no' => $parms['ivsno'], 'msg_code' => 12));
// [acer] cmd:102 離場車辨成功流程 END
}
else if ($results['result_code'] == 11) // 歐pa卡, 查無會員
{
// 臨停字幕
$this->mq_send(MQ_TOPIC_ALTOB, MQ_ALTOB_MSG.",9,{$parms['ivsno']},{$parms['lpr']}".MQ_ALTOB_MSG_END_TAG);
//// $this->mq_send(MQ_TOPIC_SUBTEXT, "{$parms['ivsno']},{$msg}其它付款方式");
// $this->mq_send(MQ_TOPIC_SUBTEXT, "{$parms['ivsno']},{$msg}臨時車請投票卡或刷卡出場");
// [acer] cmd:102 離場車辨成功流程 START
$this->call_acer('102', array('cario_no' => $rows_cario['cario_no'], 'ivs_no' => $parms['ivsno'], 'msg_code' => 9));
// [acer] cmd:102 離場車辨成功流程 END
}
else
{
// 臨停字幕
$this->mq_send(MQ_TOPIC_ALTOB, MQ_ALTOB_MSG.",9,{$parms['ivsno']},{$parms['lpr']}".MQ_ALTOB_MSG_END_TAG);
// [acer] cmd:102 離場車辨成功流程 START
$this->call_acer('102', array('cario_no' => $rows_cario['cario_no'], 'ivs_no' => $parms['ivsno'], 'msg_code' => 9));
// [acer] cmd:102 離場車辨成功流程 END
}
}
else
{


+ 32
- 0
models/Sync_data_model.php Vedi File

@@ -286,6 +286,37 @@ class Sync_data_model extends CI_Model
//
// ------------------------------------------------
// 同步歐pa卡 (功能: 歐pa卡同步)
public function sync_allpa_user($info_arr=array('station_no_arr' => STATION_NO))
{
require_once(ALTOB_SYNC_FILE);
$sync_agent = new AltobSyncAgent();
$data = $sync_agent->query_allpa_users();
$data_allpa_user_arr = json_decode($data, true);
if (sizeof($data_allpa_user_arr) <= 0)
{
trigger_error(SYNC_DATA_LOG_TITLE . '.. allpa_user empty ..'); // 忽略完全沒會員的情況
return 'empty';
}
$this->db->trans_start();
// 清空
$this->db->empty_table('allpa_user');
// 建立 members
$this->db->insert_batch('allpa_user', $data_allpa_user_arr);
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE)
{
trigger_error(SYNC_DATA_LOG_TITLE . '.. sync allpa_user fail ..'. '| last_query: ' . $this->db->last_query());
return 'fail';
}
trigger_error(SYNC_DATA_LOG_TITLE . '.. sync allpa_user completed ..');
return 'ok';
}
// 同步場站會員 (功能: 會員同步)
public function sync_members($info_arr=array('station_no_arr' => STATION_NO))
{
@@ -580,6 +611,7 @@ class Sync_data_model extends CI_Model
$sync_agent->init(STATION_NO); // 已帶上的資料場站編號為主
$sync_result = $sync_agent->upd_pks_groups(json_encode($pks_group_query_data, JSON_UNESCAPED_UNICODE));
trigger_error( SYNC_DATA_LOG_TITLE . '..'. __FUNCTION__ . "..upd_pks_groups.." . $sync_result);
return $sync_result;
}
// 重新載入場站設定


+ 52
- 3
phplibs/Altob.Sync.Integration.php Vedi File

@@ -12,6 +12,7 @@ class AltobSyncAgent
const SYNC_CARS_URL = 'http://61.219.172.12/parkings/cars.html/'; // 進出記錄
const SYNC_ST_URL = 'http://61.219.172.11:60123/admins_station.html/'; // 場站記錄
const API_URL = 'http://parks.altob.com.tw:60123/parkingquery.html/'; // 場站 API
const ALLPA_URL = 'http://61.219.172.11:60123/allpa_service.html/'; // 歐pa卡
public $io = '';
public $etag = '';
@@ -188,7 +189,7 @@ class AltobSyncAgent
// 初始化網路服務物件。
$oService = new AltobSyncService();
$oService->ServiceURL = AltobSyncAgent::API_URL;
$oService->ServiceCMD = "sync_security_action/{$lpr}/{$pswd}/{$action}/{$ck}/{$station_no}";
$oService->ServiceCMD = __FUNCTION__ . "/{$lpr}/{$pswd}/{$action}/{$ck}/{$station_no}";
// 傳遞參數至遠端。
return $oService->ServerPost($this->post_parms);
@@ -206,7 +207,7 @@ class AltobSyncAgent
// 初始化網路服務物件。
$oService = new AltobSyncService();
$oService->ServiceURL = AltobSyncAgent::API_URL;
$oService->ServiceCMD = "sync_change_pwd/{$lpr}/{$pswd}/{$new_pwd}/{$ck}/{$station_no}";
$oService->ServiceCMD = __FUNCTION__ . "/{$lpr}/{$pswd}/{$new_pwd}/{$ck}/{$station_no}";
// 傳遞參數至遠端。
return $oService->ServerPost($this->post_parms);
@@ -227,7 +228,55 @@ class AltobSyncAgent
// 初始化網路服務物件。
$oService = new AltobSyncService();
$oService->ServiceURL = AltobSyncAgent::SYNC_PKS_URL;
$oService->ServiceCMD = 'upd_pks_groups';
$oService->ServiceCMD = __FUNCTION__;
// 傳遞參數至遠端。
return $oService->ServerPost($this->post_parms);
}
// ===============================================
// 歐Pa卡
// ===============================================
// 歐Pa卡 - 開門
public function allpa_go($lpr)
{
$error_parms_msg = $this->check_init_parms();
if(!empty($error_parms_msg)) { return $error_parms_msg; }
if(empty($this->in_time))
return 'in_time not found'; // 需設定
if(empty($lpr))
return 'lpr not found'; // 需設定
$this->post_parms['in_time'] = $this->in_time;
$this->post_parms['lpr'] = $lpr;
$this->post_parms['ck'] = md5(
$this->post_parms['lpr']. 'a' . date('dmh') . 'lt' .
$this->post_parms['in_time'] . 'o' . // timestamp
$this->post_parms['station_no'] . 'b' . __FUNCTION__ .
$this->post_parms['io_time'] // timestamp
);
// 初始化網路服務物件。
$oService = new AltobSyncService();
$oService->ServiceURL = AltobSyncAgent::ALLPA_URL;
$oService->ServiceCMD = __FUNCTION__;
// 傳遞參數至遠端。
return $oService->ServerPost($this->post_parms);
}
// 歐Pa卡 - 取得場站會員
public function query_allpa_users()
{
$this->post_parms['ck'] = md5('a' . date('dmh') . 'lt' . __FUNCTION__ . 'ob');
// 初始化網路服務物件。
$oService = new AltobSyncService();
$oService->ServiceURL = AltobSyncAgent::ALLPA_URL;
$oService->ServiceCMD = __FUNCTION__;
// 傳遞參數至遠端。
return $oService->ServerPost($this->post_parms);


Loading…
Annulla
Salva