Commit f3957f24 by banice

fix:逻辑号错误的问题,更换口子后的第二次开始充电脱落则将order改为waiting

parent dde7700a
......@@ -2,16 +2,16 @@
<project version="4">
<component name="PhpIncludePathManager">
<include_path>
<path value="$PROJECT_DIR$/vendor/psr/log" />
<path value="$PROJECT_DIR$/vendor/psr/http-message" />
<path value="$PROJECT_DIR$/vendor/guzzlehttp/psr7" />
<path value="$PROJECT_DIR$/vendor/guzzlehttp/guzzle" />
<path value="$PROJECT_DIR$/vendor/composer" />
<path value="$PROJECT_DIR$/vendor/vlucas/phpdotenv" />
<path value="$PROJECT_DIR$/vendor/workerman/workerman" />
<path value="$PROJECT_DIR$/vendor/monolog/monolog" />
<path value="$PROJECT_DIR$/vendor/composer" />
<path value="$PROJECT_DIR$/vendor/workerman/mysql" />
<path value="$PROJECT_DIR$/vendor/workerman/workerman" />
<path value="$PROJECT_DIR$/vendor/workerman/gateway-worker" />
<path value="$PROJECT_DIR$/vendor/psr/log" />
<path value="$PROJECT_DIR$/vendor/monolog/monolog" />
<path value="$PROJECT_DIR$/vendor/guzzlehttp/psr7" />
<path value="$PROJECT_DIR$/vendor/guzzlehttp/guzzle" />
<path value="$PROJECT_DIR$/vendor/guzzlehttp/promises" />
</include_path>
</component>
......
......@@ -22,13 +22,13 @@ RABBIT_VHOST=cdz_gateway
REDIS_PORT=6379
LOG_LEVEL=debug
MESSAGE_API_URL=https://cdzback2.staging.senthink.com
MESSAGE_START=W-MxqrGTUD9K3FiP5WsZvOOam5LZdeCmFq7TqrZwoM4
MESSAGE_START=W-MxqrGTUD9K3FiP5WsZvooam5LZdeCmFq7TqrZwoM4
MESSAGE_FAIL=b9Q6ZeQ6qDpuxymHcvlh0tX1GFV1Pzc_o0DOLIsnRNg
MESSAGE_POWER_EXCEED=euUQrXFejUeyyxJbfaZQaRQfnXSqi05XMFLNfIsC0vA
MESSAGE_FINISH_USER=mHD4sJPOYpYLcqWhQnRpJ-PQ99i_69tEZCK_w0NCI_c
MESSAGE_PORT_SHED=C0LvfETe-1rCR_IhOydDGPTUwwYkrWZxgfwMsETrhw8
MESSAGE_CHARGER_TIMEOUT=mHD4sJPOYpYLcqWhQnRpJ-PQ99i_69tEZCK_w0NCI_c
MESSAGE_RELOAD=sCtztz8xYzsgR1IpZ5GohMuG9DScY500cI4VVEEwtg8
MESSAGE_RELOAD=sCtztz8xYzsgR1IpZ5GohMuG9DScY5OOcI4VVEEwtg8
MESSAGE_SHED_TIMEOUT=euUQrXFejUeyyxJbfaZQaRQfnXSqi05XMFLNfIsC0vA
MESSAGE_CHARGER_SHED=MZH_wTlwMq1_GguqIRnldSbHEuyFZcqmC3Wtk7ylMD0
LOW_POWER_LIMIT=30
......
......@@ -81,6 +81,8 @@ class AccessController extends Controller
$_SESSION['gateway_name'] = $gatewayModelResult['name'];
$_SESSION['gateway_id'] = $gatewayModelResult['id'];
//日志记录
$this->logRecord->setGatewayId($gatewayId);
......@@ -171,16 +173,16 @@ class AccessController extends Controller
$portMacState = [];
if (strlen($this->message) < (12 * 2 + 9 * 2 * $count)) {
return;
}
for ($i = 0; $i < $count; $i++) {
$mac = substr($this->message, $this->plc, 8 * 2);
$state = substr($this->message, $this->plc + ($count * 16 - 16 * $i + $i * 2), 2);
$this->plc += 16;
$portMacState[$mac] = hexdec($state);
// $portMacState[$mac] = StateCode::PORT_OFFLINE;
}
if (isset($_SESSION['port_mac_id']) == false) {
......@@ -219,7 +221,7 @@ class AccessController extends Controller
$port->setStationId($_SESSION['station_id']);
$port->updatePortState();
$portsLogicId[$logicStartTmp] = $portId;
$portsLogicId[$logicStartTmp++] = $portId;
}
\Events::exec();
......@@ -261,8 +263,6 @@ class AccessController extends Controller
$order->setOnlineTime(time());
if ($offlineReason == 1) {
$orderState = new OfflinePowerState($order);
} else {
$orderState = new OfflineNetState($order);
......@@ -277,6 +277,12 @@ class AccessController extends Controller
array_push($responseOrder, $logicNum . $orderId . $time);
}
$port->setPortId($portId);
$port->setGatewayId($_SESSION['gateway_id']);
$port->setStationId($_SESSION['station_id']);
$port->setState(StateCode::PORT_CHARGER);
$port->updatePortState();
unset($order);
......
......@@ -11,6 +11,7 @@ namespace Application\controller\business\charger;
use Application\controller\Controller;
use Lib\cdz\order\Order;
use Lib\cdz\order\state\ChargerState;
use Lib\cdz\order\state\WaitingState;
use Lib\Gateway;
use Lib\log\Log;
......@@ -54,16 +55,23 @@ class StartController extends Controller
$order = new Order($orderId);
if ($order->getOrderCache(\Events::getRedis()) == false) {
$this->response->send('04', sprintf('%012x', $orderId));
$this->response->send('14', sprintf('%012x', $orderId));
return;
} else {
$orderLogicId = $order->getPortLogicId();
//logicId 与订单中的实际不相同则已更换口子
if ($orderLogicId != hexdec($logic)) {
$this->response->send('14', sprintf('%012x', $orderId));
return;
}
}
$order->setStartCapacity($capacity);
if (Gateway::isUidOnline($order->getUserId()) === 1) {
Gateway::sendToUid($order->getUserId(), json_encode(['code' => 10000]));
}
if (isset($_SESSION['agent_id'])) {
Log::debug('agent_id' . $_SESSION['agent_id']);
Log::debug(Gateway::isUidOnline($_SESSION['agent_id']));
......@@ -78,24 +86,34 @@ class StartController extends Controller
Log::debug('agent is offline');
}
}
$waitingState = new WaitingState($order);
$portId = $waitingState->getOrder()->getPortId();
$lastState = $order->getStateCode();
// switch ($lastState) {
// case StateCode::WAITING:
$orderState = new WaitingState($order);
// break;
// case StateCode::PORT_CHARGER;
// $orderState = new ChargerState($order);
// break;
//
// }
$portId = $orderState->getOrder()->getPortId();
$this->logRecord->setPortId($portId);
switch ($state) {
case StateCode::PORT_CHARGER:
$waitingState->toChargerState();
$orderState->toChargerState();
break;
case StateCode::PORT_EXCEPTION:
$waitingState->toExceptionState();
$orderState->toExceptionState();
break;
case StateCode::PORT_SHED:
$waitingState->toShedState();
$orderState->toShedState();
break;
case StateCode::FINISH_EXCEED:
$waitingState->toPowerExceedState();
$orderState->toPowerExceedState();
break;
default:
......
......@@ -10,6 +10,7 @@ namespace Application\controller\business\port;
use Application\controller\Controller;
use Application\model\DeviceModel;
use Lib\cdz\order\Order;
use Lib\cdz\order\state\ChargerState;
use Lib\cdz\order\state\ExceptionState;
......@@ -44,12 +45,24 @@ class StateController extends Controller
$mac = $this->request->get('mac');
$state = hexdec($this->request->get('state'));
$portsMacId = $_SESSION['port_mac_id'];
if (isset($_SESSION['port_mac_id']) !== true) {
$deviceModel = new DeviceModel();
$portId = $deviceModel->getColumn('id', 'mac = ' . $mac);
if (isset($portsMacId[$mac]) === false) {
return;
if (isset($portId) === false || $portId == '') {
return;
}
} else {
$portsMacId = $_SESSION['port_mac_id'];
if (isset($portsMacId[$mac]) === false) {
return;
}
$portId = $portsMacId[$mac];
}
$portId = $portsMacId[$mac];
$port = new Port($portId);
......
......@@ -72,9 +72,14 @@ class PowerController extends Controller
if ($order->getOrderCache(\Events::getRedis()) != false) {
if ($order->getStartCapacity() === -1) {
$orderModel = new OrderModel();
$orderModel->update(['start_capacity' => $capacity], 'id = ' . $orderId);
$saveOrderRedis = new OrderSaveRedis($order);
$saveOrderRedis->save(['startCapacity']);
$startCapacity = $orderModel->getColumn('start_capacity', 'id = ' . $orderId);
if ($startCapacity == -1) {
$orderModel->update(['start_capacity' => $capacity], 'id = ' . $orderId);
$saveOrderRedis = new OrderSaveRedis($order);
$saveOrderRedis->save(['startCapacity']);
}
} else {
$orderModel = new OrderModel();
......
<?php
/**
* Created by PhpStorm.
* User: banice
* Date: 2018/9/9
* Time: 下午5:01
*/
namespace Application\controller\setting;
use Application\controller\Controller;
use Application\model\DeviceModel;
use Application\model\GatewayModel;
use Lib\Gateway;
class DeviceMacController extends Controller
{
protected $parameterMap = [
'0E' => [
]
];
public function getAll()
{
if (isset($_SESSION['gateway_id']) === true) {
$gatewayId = $_SESSION['gateway_id'];
$deviceModel = new DeviceModel();
$devicesMac = $deviceModel->getAllColumns(['device_mac'], 'gateway_id = ' . $gatewayId);
$count = count($devicesMac);
$tmp = [];
foreach ($devicesMac as $deviceMac) {
array_push($tmp, $deviceMac['device_mac']);
}
$devicesMacStr = implode('', $tmp);
$this->response->send('0e', sprintf('%02x', $count) . $devicesMacStr);
}
}
}
\ No newline at end of file
......@@ -42,6 +42,9 @@ class Api
$this->add('34', 'card\charger\StartController@start');
$this->add('35', 'card\charger\OverController@over');
$this->add('0E', 'setting\DeviceMacController@getAll');
}
......
......@@ -15,14 +15,14 @@ $worker->count = 1;
$worker->registerAddress = getenv('REGISTER_IP') . ':' . getenv('REGISTER_PORT');
$logs = fopen('./storage/logs/business.log','w');
//$logs = fopen('./storage/logs/business.log','w');
fclose($logs);
//fclose($logs);
\GatewayWorker\BusinessWorker::$stdoutFile = './storage/stdout.log';
//\GatewayWorker\BusinessWorker::$stdoutFile = './storage/stdout.log';
\GatewayWorker\BusinessWorker::$logFile = './storage/logs/business.log';
//\GatewayWorker\BusinessWorker::$logFile = './storage/logs/business.log';
if (!defined('GLOBAL_START')) {
......
......@@ -2,20 +2,21 @@
namespace Lib;
class Aes{
class Aes
{
public static function encrypt($data,$key)
public static function encrypt($data, $key)
{
return openssl_encrypt(hex2bin($data),'aes-128-ecb',hex2bin($key),1);
return openssl_encrypt(hex2bin($data), 'aes-128-ecb', hex2bin($key), 1);
}
public static function decrypt($data,$key)
public static function decrypt($data, $key)
{
return openssl_decrypt(hex2bin($data),'aes-128-ecb',hex2bin($key),1);
return openssl_decrypt(hex2bin($data), 'aes-128-ecb', hex2bin($key), 1);
}
}
\ No newline at end of file
......@@ -54,6 +54,9 @@ class OrderSaveRedis
}
/**
*
*/
public function saveAll()
{
$update = [];
......@@ -82,5 +85,15 @@ class OrderSaveRedis
}
/**
* @param array $keys
*/
public function deleteHashKey(array $keys)
{
call_user_func_array([$this->redis, 'hDel'], $keys);
}
}
\ No newline at end of file
......@@ -210,6 +210,7 @@ class ChargerState extends State
$chargerFullMessage->setEndTime($this->nowDate);
$chargerFullMessage->setStartTime($this->order->getStartTime());
$chargerFullMessage->setPurchaseTime($this->order->getPurchaseTime());
$chargerFullMessage->setUserId($this->order->getUserId());
$chargerFullMessage->setRemark($chargerFullMessage->getRemark() . '\n' . sprintf('%012x', $this->order->getId()));
$sendMessage = new SendMessage();
if ($sendMessage->request($chargerFullMessage) === false) {
......
......@@ -223,6 +223,13 @@ class WaitingState extends State
public function toShedState()
{
$this->order->setStateCode(-1);
$orderSave = new OrderSaveRedis($this->order);
$orderSave->save(['stateCode']);
$orderSave->deleteHashKey(['startTime', 'startCapacity']);
Log::error('waiting state can not change to shed state');
}
......
......@@ -65,7 +65,7 @@ class Log
$gatewayMac = isset($_SESSION['gateway_mac']) ? $_SESSION['gateway_mac'] : 'null mac';
$handle = new RotatingFileHandler(self::LOG_NAME);
$handle = new RotatingFileHandler(self::LOG_NAME, 30);
$output = "[%datetime%] [%$gatewayMac%].%level_name%: %message% %context% %extra%\n";
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment