Commit 2abe7fc5 by banice

将response也写入日志当中

parent 354ef632
......@@ -2,7 +2,7 @@ REDIS_HOST=redis.test.senthink.com
REGISTER_IP=127.0.0.1
REGISTER_PORT=1239
GATEWAY_PORT=8282
GATEWAY_PORT=8283
GATEWAY_IP=127.0.0.1
GATEWAY_COUNT=1
GATEWAY_START_PORT=2130
......@@ -25,6 +25,9 @@ MESSAGE_API_URL=https://cdzback2.test.senthink.com
MESSAGE_START=L9SEWl3X73v3PBYHtFBZlTlJeBMdO9DDNIwRgHX6SrY
MESSAGE_FAIL=0al-a6kkNsdqFyXPEe97m4jjtbfOXjEC3eCjEsMHJdw
MESSAGE_POWER_EXCEED=rdzTNQ7t4uRXkP0SkuwW10WH77A_CIgYFiJykXJ0utU
MESSAGE_FINISH_USER=f0DDXSxvRTbHyzkCnwnYijtgteFTdfdUR7J8REwTYJ8
MESSAGE_PORT_SHED=C0LvfETe-1rCR_IhOydDGPTUwwYkrWZxgfwMsETrhw8
MESSAGE_CHARGER_TIMEOUT=f0DDXSxvRTbHyzkCnwnYijtgteFTdfdUR7J8REwTYJ8
LOW_POWER_LIMIT=30
......@@ -26,5 +26,4 @@ MESSAGE_START=L9SEWl3X73v3PBYHtFBZlTlJeBMdO9DDNIwRgHX6SrY
MESSAGE_FAIL=0al-a6kkNsdqFyXPEe97m4jjtbfOXjEC3eCjEsMHJdw
MESSAGE_POWER_EXCEED=rdzTNQ7t4uRXkP0SkuwW10WH77A_CIgYFiJykXJ0utU
LOW_POWER_LIMIT=30
......@@ -17,95 +17,105 @@
</component>
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="Route.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/route/Route.php">
<file leaf-file-name="Controller.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/application/controller/Controller.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="384">
<caret line="168" column="9" lean-forward="true" selection-start-line="168" selection-start-column="9" selection-end-line="168" selection-end-column="9" />
<folding>
<element signature="e#126#152#0#PHP" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="StateController.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/application/controller/business/port/StateController.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="380">
<caret line="55" column="0" lean-forward="false" selection-start-line="55" selection-start-column="0" selection-end-line="55" selection-end-column="0" />
<state relative-caret-position="-474">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Events.php" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/application/Events.php">
<file leaf-file-name="CapacityController.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/application/controller/business/power/CapacityController.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="419">
<caret line="101" column="17" lean-forward="false" selection-start-line="101" selection-start-column="17" selection-end-line="101" selection-end-column="17" />
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Api.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/application/route/Api.php">
<file leaf-file-name="PowerController.php" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/application/controller/business/power/PowerController.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-468">
<caret line="13" column="27" lean-forward="true" selection-start-line="13" selection-start-column="27" selection-end-line="13" selection-end-column="27" />
<state relative-caret-position="624">
<caret line="74" column="22" lean-forward="false" selection-start-line="74" selection-start-column="22" selection-end-line="74" selection-end-column="22" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="CertifyController.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/application/controller/accept/CertifyController.php">
<file leaf-file-name="OrderSaveRedis.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/lib/cdz/order/save/OrderSaveRedis.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="299">
<caret line="38" column="1" lean-forward="false" selection-start-line="38" selection-start-column="1" selection-end-line="38" selection-end-column="1" />
<state relative-caret-position="330">
<caret line="27" column="35" lean-forward="false" selection-start-line="27" selection-start-column="35" selection-end-line="27" selection-end-column="35" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Request.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/request/Request.php">
<file leaf-file-name="Order.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/lib/cdz/order/Order.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<state relative-caret-position="-980">
<caret line="13" column="6" lean-forward="false" selection-start-line="13" selection-start-column="6" selection-end-line="13" selection-end-column="6" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Response.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/response/Response.php">
<file leaf-file-name="OnlineController.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/application/controller/business/port/OnlineController.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="188">
<caret line="65" column="0" lean-forward="false" selection-start-line="65" selection-start-column="0" selection-end-line="65" selection-end-column="0" />
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="AccessController.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/application/controller/accept/AccessController.php">
<file leaf-file-name="OfflineController.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/application/controller/business/port/OfflineController.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="304">
<caret line="100" column="0" lean-forward="false" selection-start-line="100" selection-start-column="0" selection-end-line="100" selection-end-column="0" />
<folding>
<element signature="e#978#1032#0#PHP" expanded="false" />
</folding>
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Controller.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/application/controller/Controller.php">
<file leaf-file-name="AccessController.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/application/controller/accept/AccessController.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="773">
<caret line="186" column="0" lean-forward="false" selection-start-line="186" selection-start-column="0" selection-end-line="186" selection-end-column="0" />
<state relative-caret-position="-1608">
<caret line="121" column="0" lean-forward="false" selection-start-line="121" selection-start-column="0" selection-end-line="121" selection-end-column="0" />
<folding>
<element signature="e#126#152#0#PHP" expanded="true" />
<element signature="e#978#1032#0#PHP" expanded="false" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Record.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/log/record/Record.php">
<file leaf-file-name="Response.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/response/Response.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="410">
<caret line="60" column="0" lean-forward="true" selection-start-line="60" selection-start-column="0" selection-end-line="60" selection-end-column="0" />
<state relative-caret-position="319">
<caret line="113" column="20" lean-forward="false" selection-start-line="113" selection-start-column="20" selection-end-line="113" selection-end-column="20" />
<folding />
</state>
</provider>
......@@ -122,8 +132,9 @@
<find>spl_</find>
<find>var_dump</find>
<find>static::add</find>
<find>var_dum</find>
<find>var_du</find>
<find>var_dum</find>
<find>unset(resp</find>
</findStrings>
<replaceStrings>
<replace>$this-&gt;nowDate</replace>
......@@ -138,35 +149,8 @@
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/src/request/Request.php" />
<option value="$PROJECT_DIR$/application/controller/HeartController.php" />
<option value="$PROJECT_DIR$/application/model/Model.php" />
<option value="$PROJECT_DIR$/src/command/Command.php" />
<option value="$PROJECT_DIR$/src/command/SendCommand.php" />
<option value="$PROJECT_DIR$/src/command/StopChargerCommand.php" />
<option value="$PROJECT_DIR$/lib/cdz/order/state/WaitingState.php" />
<option value="$PROJECT_DIR$/application/start_gateway.php" />
<option value="$PROJECT_DIR$/lib/cdz/order/state/OfflineState.php" />
<option value="$PROJECT_DIR$/lib/cdz/order/StopCharger.php" />
<option value="$PROJECT_DIR$/lib/rabbitmq/MyRabbitMq.php" />
<option value="$PROJECT_DIR$/.env" />
<option value="$PROJECT_DIR$/lib/rabbitmq/PublishPortShed.php" />
<option value="$PROJECT_DIR$/lib/cdz/order/state/OfflineNetState.php" />
<option value="$PROJECT_DIR$/lib/cdz/order/state/OfflinePowerState.php" />
<option value="$PROJECT_DIR$/lib/station/gateway/port/Port.php" />
<option value="$PROJECT_DIR$/lib/cdz/order/state/ShedState.php" />
<option value="$PROJECT_DIR$/lib/cdz/order/state/PowerExceedState.php" />
<option value="$PROJECT_DIR$/lib/cdz/order/state/ExceptionState.php" />
<option value="$PROJECT_DIR$/lib/station/gateway/Gateway.php" />
<option value="$PROJECT_DIR$/lib/station/Station.php" />
<option value="$PROJECT_DIR$/lib/cdz/order/Order.php" />
<option value="$PROJECT_DIR$/application/model/OrderPower.php" />
<option value="$PROJECT_DIR$/.example" />
<option value="$PROJECT_DIR$/gitignore" />
<option value="$PROJECT_DIR$/src/exception/order/Exception.php" />
<option value="$PROJECT_DIR$/src/exception/order/OrderException.php" />
<option value="$PROJECT_DIR$/application/model/GatewayLogModel.php" />
<option value="$PROJECT_DIR$/src/log/GatewayLogWriter.php" />
<option value="$PROJECT_DIR$/lib/cdz/order/NoticePortShed.php" />
<option value="$PROJECT_DIR$/src/Test.php" />
<option value="$PROJECT_DIR$/application/controller/TestController.php" />
......@@ -174,21 +158,48 @@
<option value="$PROJECT_DIR$/start.php" />
<option value="$PROJECT_DIR$/test/test.php" />
<option value="$PROJECT_DIR$/src/Container.php" />
<option value="$PROJECT_DIR$/application/controller/business/charger/OverController.php" />
<option value="$PROJECT_DIR$/application/controller/business/charger/StartController.php" />
<option value="$PROJECT_DIR$/application/controller/business/port/OfflineController.php" />
<option value="$PROJECT_DIR$/application/controller/business/port/OnlineController.php" />
<option value="$PROJECT_DIR$/application/controller/business/port/StateController.php" />
<option value="$PROJECT_DIR$/application/controller/business/power/CapacityController.php" />
<option value="$PROJECT_DIR$/application/controller/business/power/PowerController.php" />
<option value="$PROJECT_DIR$/src/response/Response.php" />
<option value="$PROJECT_DIR$/src/route/Route.php" />
<option value="$PROJECT_DIR$/application/model/ConfigModel.php" />
<option value="$PROJECT_DIR$/application/model/StationModel.php" />
<option value="$PROJECT_DIR$/.example" />
<option value="$PROJECT_DIR$/application/controller/business/power/ShutDownController.php" />
<option value="$PROJECT_DIR$/application/controller/business/power/ShutdownController.php" />
<option value="$PROJECT_DIR$/application/route/Api.php" />
<option value="$PROJECT_DIR$/application/controller/setting/SettingController.php" />
<option value="$PROJECT_DIR$/lib/cdz/order/state/State.php" />
<option value="$PROJECT_DIR$/lib/cdz/order/state/OfflineNetState.php" />
<option value="$PROJECT_DIR$/lib/cdz/order/state/ExceptionState.php" />
<option value="$PROJECT_DIR$/lib/cdz/order/state/OfflinePowerState.php" />
<option value="$PROJECT_DIR$/lib/cdz/order/state/PowerExceedState.php" />
<option value="$PROJECT_DIR$/lib/cdz/order/state/PowerFullState.php" />
<option value="$PROJECT_DIR$/lib/cdz/order/state/ShedState.php" />
<option value="$PROJECT_DIR$/lib/cdz/order/state/ShedTimeoutState.php" />
<option value="$PROJECT_DIR$/lib/cdz/order/state/TimeoutState.php" />
<option value="$PROJECT_DIR$/lib/cdz/order/state/WaitingState.php" />
<option value="$PROJECT_DIR$/lib/cdz/order/Order.php" />
<option value="$PROJECT_DIR$/application/controller/business/charger/OverController.php" />
<option value="$PROJECT_DIR$/lib/remote/api/message/Message.php" />
<option value="$PROJECT_DIR$/lib/remote/api/message/FinishByUserMessage.php" />
<option value="$PROJECT_DIR$/lib/remote/api/message/ShedMessage.php" />
<option value="$PROJECT_DIR$/lib/remote/api/message/ChargerTimeoutMessage.php" />
<option value="$PROJECT_DIR$/lib/cdz/order/state/ChargerState.php" />
<option value="$PROJECT_DIR$/.env" />
<option value="$PROJECT_DIR$/application/controller/HeartController.php" />
<option value="$PROJECT_DIR$/application/start_gateway.php" />
<option value="$PROJECT_DIR$/application/Events.php" />
<option value="$PROJECT_DIR$/vendor/workerman/workerman/Protocols/Bintohex.php" />
<option value="$PROJECT_DIR$/application/controller/accept/CertifyController.php" />
<option value="$PROJECT_DIR$/application/controller/Controller.php" />
<option value="$PROJECT_DIR$/application/controller/accept/AccessController.php" />
<option value="$PROJECT_DIR$/src/response/Response.php" />
<option value="$PROJECT_DIR$/src/log/record/Record.php" />
<option value="$PROJECT_DIR$/application/Events.php" />
<option value="$PROJECT_DIR$/src/log/GatewayLogWriter.php" />
<option value="$PROJECT_DIR$/application/controller/accept/AccessController.php" />
<option value="$PROJECT_DIR$/application/controller/Controller.php" />
<option value="$PROJECT_DIR$/application/controller/business/power/PowerController.php" />
</list>
</option>
</component>
......@@ -220,10 +231,8 @@
</include_path>
</component>
<component name="ProjectFrameBounds" fullScreen="true">
<option name="x" value="103" />
<option name="y" value="51" />
<option name="width" value="1752" />
<option name="height" value="1057" />
<option name="width" value="1920" />
<option name="height" value="1080" />
</component>
<component name="ProjectLevelVcsManager" settingsEditedManually="true">
<ConfirmationsSetting value="2" id="Add" />
......@@ -259,6 +268,42 @@
</path>
<path>
<item name="cdz_gateway_v2" type="b2602c69:ProjectViewProjectNode" />
<item name="cdz_gateway_v2" type="2a2b976b:PhpTreeStructureProvider$1" />
<item name="application" type="2a2b976b:PhpTreeStructureProvider$1" />
<item name="controller" type="2a2b976b:PhpTreeStructureProvider$1" />
</path>
<path>
<item name="cdz_gateway_v2" type="b2602c69:ProjectViewProjectNode" />
<item name="cdz_gateway_v2" type="2a2b976b:PhpTreeStructureProvider$1" />
<item name="application" type="2a2b976b:PhpTreeStructureProvider$1" />
<item name="controller" type="2a2b976b:PhpTreeStructureProvider$1" />
<item name="accept" type="2a2b976b:PhpTreeStructureProvider$1" />
</path>
<path>
<item name="cdz_gateway_v2" type="b2602c69:ProjectViewProjectNode" />
<item name="cdz_gateway_v2" type="2a2b976b:PhpTreeStructureProvider$1" />
<item name="application" type="2a2b976b:PhpTreeStructureProvider$1" />
<item name="controller" type="2a2b976b:PhpTreeStructureProvider$1" />
<item name="business" type="2a2b976b:PhpTreeStructureProvider$1" />
</path>
<path>
<item name="cdz_gateway_v2" type="b2602c69:ProjectViewProjectNode" />
<item name="cdz_gateway_v2" type="2a2b976b:PhpTreeStructureProvider$1" />
<item name="application" type="2a2b976b:PhpTreeStructureProvider$1" />
<item name="controller" type="2a2b976b:PhpTreeStructureProvider$1" />
<item name="business" type="2a2b976b:PhpTreeStructureProvider$1" />
<item name="port" type="2a2b976b:PhpTreeStructureProvider$1" />
</path>
<path>
<item name="cdz_gateway_v2" type="b2602c69:ProjectViewProjectNode" />
<item name="cdz_gateway_v2" type="2a2b976b:PhpTreeStructureProvider$1" />
<item name="application" type="2a2b976b:PhpTreeStructureProvider$1" />
<item name="controller" type="2a2b976b:PhpTreeStructureProvider$1" />
<item name="business" type="2a2b976b:PhpTreeStructureProvider$1" />
<item name="power" type="2a2b976b:PhpTreeStructureProvider$1" />
</path>
<path>
<item name="cdz_gateway_v2" type="b2602c69:ProjectViewProjectNode" />
<item name="External Libraries" type="bcb0276e:PhpExternalLibrariesNodePatcher$PatchedExternalLibrariesNode" />
</path>
</expand>
......@@ -312,15 +357,16 @@
<workItem from="1533865958021" duration="13063000" />
<workItem from="1533890909526" duration="33446000" />
<workItem from="1534736026759" duration="2486000" />
<workItem from="1534745314460" duration="52200000" />
<workItem from="1534745314460" duration="73568000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="104057000" />
<option name="totallyTimeSpent" value="125425000" />
</component>
<component name="ToolWindowManager">
<frame x="0" y="0" width="1920" height="1080" extended-state="0" />
<editor active="true" />
<layout>
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
......@@ -328,7 +374,7 @@
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32969216" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Thumbnails" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32969216" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.23535253" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.23535253" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.2513312" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="Docker" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
......@@ -356,431 +402,421 @@
<watches-manager />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/lib/rabbitmq/MyRabbitMq.php">
<entry file="file://$PROJECT_DIR$/src/Message.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="496">
<caret line="59" column="44" lean-forward="true" selection-start-line="59" selection-start-column="44" selection-end-line="59" selection-end-column="44" />
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/rabbitmq/PublishPortShed.php">
<entry file="file://$PROJECT_DIR$/src/request/Request.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="480">
<caret line="37" column="41" lean-forward="true" selection-start-line="37" selection-start-column="41" selection-end-line="37" selection-end-column="41" />
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/cdz/order/state/State.php">
<entry file="file://$PROJECT_DIR$/src/route/Route.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="465">
<caret line="36" column="20" lean-forward="false" selection-start-line="36" selection-start-column="20" selection-end-line="36" selection-end-column="20" />
<state relative-caret-position="380">
<caret line="55" column="0" lean-forward="false" selection-start-line="55" selection-start-column="0" selection-end-line="55" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/cdz/order/state/OfflineNetState.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="501">
<caret line="68" column="42" lean-forward="true" selection-start-line="68" selection-start-column="42" selection-end-line="68" selection-end-column="42" />
<folding>
<element signature="e#123#156#0#PHP" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/cdz/order/state/OfflinePowerState.php">
<entry file="file://$PROJECT_DIR$/test/test.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="355">
<caret line="38" column="19" lean-forward="false" selection-start-line="38" selection-start-column="19" selection-end-line="38" selection-end-column="19" />
<state relative-caret-position="195">
<caret line="18" column="8" lean-forward="false" selection-start-line="18" selection-start-column="8" selection-end-line="18" selection-end-column="8" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/cdz/order/state/WaitingState.php">
<entry file="file://$PROJECT_DIR$/application/model/ConfigModel.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="411">
<caret line="63" column="20" lean-forward="false" selection-start-line="63" selection-start-column="20" selection-end-line="63" selection-end-column="20" />
<state relative-caret-position="300">
<caret line="25" column="0" lean-forward="true" selection-start-line="25" selection-start-column="0" selection-end-line="25" selection-end-column="0" />
<folding>
<element signature="e#124#166#0#PHP" expanded="false" />
<marker date="1534903681000" expanded="true" signature="270:299" ph="SELECT id , " />
<marker date="1534903681000" expanded="true" signature="270:300" ph="SELECT id , ${$this-&gt;table}" />
</folding>
</state>
</provider>
</entry>
<entry file="jar://$APPLICATION_HOME_DIR$/plugins/php/lib/php.jar!/stubs/redis/Redis.php">
<entry file="file://$PROJECT_DIR$/application/model/StationModel.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="326">
<caret line="2762" column="20" lean-forward="false" selection-start-line="2762" selection-start-column="20" selection-end-line="2762" selection-end-column="20" />
<state relative-caret-position="135">
<caret line="14" column="0" lean-forward="false" selection-start-line="14" selection-start-column="0" selection-end-line="14" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/cdz/order/state/ShedState.php">
<entry file="file://$PROJECT_DIR$/.example">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="210">
<caret line="19" column="5" lean-forward="false" selection-start-line="19" selection-start-column="5" selection-end-line="19" selection-end-column="5" />
<state relative-caret-position="420">
<caret line="28" column="0" lean-forward="false" selection-start-line="28" selection-start-column="0" selection-end-line="28" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/cdz/order/state/PowerExceedState.php">
<entry file="file://$PROJECT_DIR$/application/route/Api.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="195">
<caret line="18" column="5" lean-forward="false" selection-start-line="18" selection-start-column="5" selection-end-line="18" selection-end-column="5" />
<state relative-caret-position="375">
<caret line="37" column="0" lean-forward="false" selection-start-line="37" selection-start-column="0" selection-end-line="37" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/cdz/order/state/ExceptionState.php">
<entry file="file://$PROJECT_DIR$/application/controller/business/power/ShutdownController.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="795">
<caret line="58" column="5" lean-forward="false" selection-start-line="58" selection-start-column="5" selection-end-line="58" selection-end-column="5" />
<state relative-caret-position="270">
<caret line="23" column="32" lean-forward="false" selection-start-line="23" selection-start-column="32" selection-end-line="23" selection-end-column="32" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/station/gateway/Gateway.php">
<entry file="file://$PROJECT_DIR$/lib/StateCode.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="120">
<caret line="13" column="58" lean-forward="false" selection-start-line="13" selection-start-column="58" selection-end-line="13" selection-end-column="58" />
<state relative-caret-position="615">
<caret line="46" column="26" lean-forward="false" selection-start-line="46" selection-start-column="26" selection-end-line="46" selection-end-column="26" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/station/Station.php">
<entry file="file://$PROJECT_DIR$/lib/cdz/order/state/ExceptionState.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="120">
<caret line="13" column="58" lean-forward="false" selection-start-line="13" selection-start-column="58" selection-end-line="13" selection-end-column="58" />
<state relative-caret-position="237">
<caret line="21" column="4" lean-forward="false" selection-start-line="21" selection-start-column="4" selection-end-line="21" selection-end-column="4" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/cdz/order/Order.php">
<entry file="file://$PROJECT_DIR$/lib/cdz/order/state/OfflineNetState.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="594">
<caret line="122" column="31" lean-forward="false" selection-start-line="122" selection-start-column="31" selection-end-line="122" selection-end-column="31" />
<state relative-caret-position="480">
<caret line="41" column="5" lean-forward="false" selection-start-line="41" selection-start-column="5" selection-end-line="41" selection-end-column="5" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/model/Model.php">
<entry file="file://$PROJECT_DIR$/lib/cdz/order/state/OfflinePowerState.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="460">
<caret line="62" column="28" lean-forward="false" selection-start-line="62" selection-start-column="28" selection-end-line="62" selection-end-column="28" />
<folding>
<marker date="1534755589000" expanded="true" signature="594:633" ph="SELECT ${$co... ${$this-&gt;table}" />
<marker date="1534755589000" expanded="true" signature="921:961" ph="SELECT ${$co... ${$this-&gt;table}" />
<marker date="1534755589000" expanded="true" signature="1253:1293" ph="SELECT ${$co... ${$this-&gt;table}" />
<marker date="1534755589000" expanded="true" signature="1443:1476" ph="SELECT * FRO... ${$this-&gt;table}" />
</folding>
<state relative-caret-position="225">
<caret line="23" column="5" lean-forward="false" selection-start-line="23" selection-start-column="5" selection-end-line="23" selection-end-column="5" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/model/OrderPowerModel.php">
<entry file="file://$PROJECT_DIR$/lib/cdz/order/state/PowerExceedState.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="165">
<caret line="16" column="0" lean-forward="false" selection-start-line="16" selection-start-column="0" selection-end-line="16" selection-end-column="0" />
<state relative-caret-position="225">
<caret line="23" column="5" lean-forward="false" selection-start-line="23" selection-start-column="5" selection-end-line="23" selection-end-column="5" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.example">
<entry file="file://$PROJECT_DIR$/lib/cdz/order/state/PowerFullState.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="450">
<caret line="30" column="0" lean-forward="false" selection-start-line="30" selection-start-column="0" selection-end-line="30" selection-end-column="0" />
<state relative-caret-position="162">
<caret line="19" column="5" lean-forward="false" selection-start-line="19" selection-start-column="5" selection-end-line="19" selection-end-column="5" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.env">
<entry file="file://$PROJECT_DIR$/lib/cdz/order/state/ShedTimeoutState.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="270">
<caret line="18" column="12" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="30" selection-end-column="0" />
<state relative-caret-position="177">
<caret line="19" column="0" lean-forward="true" selection-start-line="19" selection-start-column="0" selection-end-line="19" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gitignore">
<entry file="file://$PROJECT_DIR$/lib/cdz/order/state/TimeoutState.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="15">
<caret line="1" column="6" lean-forward="false" selection-start-line="1" selection-start-column="6" selection-end-line="1" selection-end-column="6" />
<state relative-caret-position="162">
<caret line="19" column="5" lean-forward="false" selection-start-line="19" selection-start-column="5" selection-end-line="19" selection-end-column="5" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/exception/order/OrderException.php">
<entry file="file://$PROJECT_DIR$/lib/cdz/order/state/WaitingState.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="645">
<caret line="48" column="7" lean-forward="true" selection-start-line="48" selection-start-column="7" selection-end-line="48" selection-end-column="7" />
<state relative-caret-position="345">
<caret line="40" column="6" lean-forward="false" selection-start-line="40" selection-start-column="6" selection-end-line="40" selection-end-column="6" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/log/GatewayLogWriter.php">
<entry file="file://$PROJECT_DIR$/lib/station/gateway/port/Port.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="345">
<caret line="28" column="20" lean-forward="false" selection-start-line="28" selection-start-column="20" selection-end-line="28" selection-end-column="20" />
<folding>
<element signature="e#112#150#0#PHP" expanded="false" />
</folding>
<state relative-caret-position="521">
<caret line="116" column="0" lean-forward="true" selection-start-line="116" selection-start-column="0" selection-end-line="116" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/cdz/order/NoticePortShed.php">
<entry file="file://$PROJECT_DIR$/lib/remote/api/message/PowerExceedMessage.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="420">
<caret line="33" column="1" lean-forward="false" selection-start-line="33" selection-start-column="1" selection-end-line="33" selection-end-column="1" />
<state relative-caret-position="-1316">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/cdz/order/StopCharger.php">
<entry file="file://$PROJECT_DIR$/lib/remote/api/message/Message.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="420">
<caret line="34" column="0" lean-forward="false" selection-start-line="34" selection-start-column="0" selection-end-line="34" selection-end-column="0" />
<state relative-caret-position="822">
<caret line="78" column="0" lean-forward="false" selection-start-line="78" selection-start-column="0" selection-end-line="78" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/station/gateway/port/Port.php">
<entry file="file://$PROJECT_DIR$/lib/remote/api/message/FailMessage.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="270">
<caret line="25" column="55" lean-forward="false" selection-start-line="25" selection-start-column="55" selection-end-line="25" selection-end-column="55" />
<state relative-caret-position="-273">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/model/GatewayLogModel.php">
<entry file="file://$PROJECT_DIR$/lib/remote/api/message/FinishByUserMessage.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="180">
<caret line="17" column="0" lean-forward="false" selection-start-line="17" selection-start-column="0" selection-end-line="17" selection-end-column="0" />
<state relative-caret-position="15">
<caret line="12" column="15" lean-forward="false" selection-start-line="12" selection-start-column="15" selection-end-line="12" selection-end-column="15" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/Test.php">
<entry file="file://$PROJECT_DIR$/lib/remote/api/message/SendMessage.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="90">
<caret line="11" column="6" lean-forward="false" selection-start-line="11" selection-start-column="6" selection-end-line="11" selection-end-column="6" />
<state relative-caret-position="435">
<caret line="35" column="20" lean-forward="false" selection-start-line="35" selection-start-column="20" selection-end-line="35" selection-end-column="20" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/controller/TestController.php">
<entry file="file://$PROJECT_DIR$/application/controller/business/charger/OverController.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="385">
<caret line="44" column="13" lean-forward="false" selection-start-line="44" selection-start-column="13" selection-end-line="44" selection-end-column="13" />
<folding>
<element signature="e#143#181#0#PHP" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/cdz/order/state/State.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="45">
<caret line="8" column="32" lean-forward="false" selection-start-line="8" selection-start-column="32" selection-end-line="8" selection-end-column="32" />
<state relative-caret-position="109">
<caret line="13" column="15" lean-forward="false" selection-start-line="13" selection-start-column="15" selection-end-line="13" selection-end-column="15" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/composer.json">
<entry file="file://$PROJECT_DIR$/lib/remote/api/message/ShedMessage.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="180">
<caret line="12" column="23" lean-forward="false" selection-start-line="12" selection-start-column="23" selection-end-line="12" selection-end-column="23" />
<state relative-caret-position="1726">
<caret line="149" column="0" lean-forward="false" selection-start-line="149" selection-start-column="0" selection-end-line="149" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/start_businessworker.php">
<entry file="file://$PROJECT_DIR$/lib/rabbitmq/PublishPortShed.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="120">
<caret line="13" column="19" lean-forward="false" selection-start-line="13" selection-start-column="19" selection-end-line="13" selection-end-column="19" />
<state relative-caret-position="630">
<caret line="47" column="20" lean-forward="false" selection-start-line="47" selection-start-column="20" selection-end-line="47" selection-end-column="20" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/start.php">
<entry file="file://$PROJECT_DIR$/lib/remote/api/message/ChargerTimeoutMessage.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="600">
<caret line="40" column="0" lean-forward="false" selection-start-line="40" selection-start-column="0" selection-end-line="40" selection-end-column="0" />
<state relative-caret-position="424">
<caret line="51" column="62" lean-forward="false" selection-start-line="51" selection-start-column="62" selection-end-line="51" selection-end-column="62" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/controller/business/charger/OverController.php">
<entry file="file://$PROJECT_DIR$/lib/cdz/order/state/ChargerState.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="225">
<caret line="20" column="5" lean-forward="false" selection-start-line="20" selection-start-column="5" selection-end-line="20" selection-end-column="5" />
<folding>
<element signature="e#143#181#0#PHP" expanded="true" />
</folding>
<state relative-caret-position="-59">
<caret line="98" column="25" lean-forward="true" selection-start-line="98" selection-start-column="25" selection-end-line="98" selection-end-column="25" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/controller/business/charger/StartController.php">
<entry file="file://$PROJECT_DIR$/lib/cdz/order/state/ShedState.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="315">
<caret line="34" column="5" lean-forward="false" selection-start-line="34" selection-start-column="5" selection-end-line="34" selection-end-column="5" />
<state relative-caret-position="240">
<caret line="24" column="5" lean-forward="false" selection-start-line="24" selection-start-column="5" selection-end-line="24" selection-end-column="5" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/controller/business/port/OfflineController.php">
<entry file="file://$PROJECT_DIR$/.env">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="300">
<caret line="28" column="5" lean-forward="false" selection-start-line="28" selection-start-column="5" selection-end-line="28" selection-end-column="5" />
<folding>
<element signature="e#140#178#0#PHP" expanded="true" />
</folding>
<state relative-caret-position="60">
<caret line="4" column="17" lean-forward="false" selection-start-line="4" selection-start-column="17" selection-end-line="4" selection-end-column="17" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/controller/business/port/OnlineController.php">
<entry file="file://$PROJECT_DIR$/application/controller/setting/SettingController.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="285">
<caret line="27" column="5" lean-forward="false" selection-start-line="27" selection-start-column="5" selection-end-line="27" selection-end-column="5" />
<state relative-caret-position="360">
<caret line="32" column="4" lean-forward="false" selection-start-line="32" selection-start-column="4" selection-end-line="32" selection-end-column="4" />
<folding>
<element signature="e#140#178#0#PHP" expanded="true" />
<element signature="e#135#173#0#PHP" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/controller/business/port/StateController.php">
<entry file="file://$PROJECT_DIR$/vendor/workerman/workerman/Protocols/Frame.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="300">
<caret line="35" column="5" lean-forward="false" selection-start-line="35" selection-start-column="5" selection-end-line="35" selection-end-column="5" />
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/controller/business/power/CapacityController.php">
<entry file="file://$PROJECT_DIR$/application/Events.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="300">
<caret line="25" column="5" lean-forward="false" selection-start-line="25" selection-start-column="5" selection-end-line="25" selection-end-column="5" />
<state relative-caret-position="0">
<caret line="74" column="27" lean-forward="false" selection-start-line="74" selection-start-column="27" selection-end-line="74" selection-end-column="27" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/controller/business/power/PowerController.php">
<entry file="file://$PROJECT_DIR$/vendor/workerman/workerman/Protocols/Bintohex.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="405">
<caret line="39" column="5" lean-forward="false" selection-start-line="39" selection-start-column="5" selection-end-line="39" selection-end-column="5" />
<state relative-caret-position="540">
<caret line="41" column="12" lean-forward="false" selection-start-line="41" selection-start-column="12" selection-end-line="41" selection-end-column="12" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/log/Log.php">
<entry file="file://$PROJECT_DIR$/application/controller/HeartController.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="770">
<caret line="72" column="0" lean-forward="false" selection-start-line="72" selection-start-column="0" selection-end-line="72" selection-end-column="0" />
<state relative-caret-position="375">
<caret line="30" column="5" lean-forward="false" selection-start-line="30" selection-start-column="5" selection-end-line="30" selection-end-column="5" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/log/Record.php">
<entry file="file://$PROJECT_DIR$/application/start_gateway.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="180">
<caret line="17" column="17" lean-forward="false" selection-start-line="17" selection-start-column="17" selection-end-line="17" selection-end-column="17" />
<state relative-caret-position="240">
<caret line="21" column="28" lean-forward="false" selection-start-line="21" selection-start-column="28" selection-end-line="21" selection-end-column="28" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/Application.php">
<entry file="file://$PROJECT_DIR$/application/controller/accept/CertifyController.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<state relative-caret-position="687">
<caret line="65" column="0" lean-forward="false" selection-start-line="65" selection-start-column="0" selection-end-line="65" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/Container.php">
<entry file="file://$PROJECT_DIR$/src/log/GatewayLogWriter.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="165">
<caret line="16" column="0" lean-forward="false" selection-start-line="16" selection-start-column="0" selection-end-line="16" selection-end-column="0" />
<state relative-caret-position="570">
<caret line="44" column="27" lean-forward="false" selection-start-line="44" selection-start-column="27" selection-end-line="44" selection-end-column="27" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/Message.php">
<entry file="file://$PROJECT_DIR$/src/log/record/Record.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<state relative-caret-position="657">
<caret line="223" column="5" lean-forward="true" selection-start-line="223" selection-start-column="5" selection-end-line="223" selection-end-column="5" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/request/Request.php">
<entry file="file://$PROJECT_DIR$/src/response/Response.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<state relative-caret-position="319">
<caret line="113" column="20" lean-forward="false" selection-start-line="113" selection-start-column="20" selection-end-line="113" selection-end-column="20" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/response/Response.php">
<entry file="file://$PROJECT_DIR$/application/controller/accept/AccessController.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="188">
<caret line="65" column="0" lean-forward="false" selection-start-line="65" selection-start-column="0" selection-end-line="65" selection-end-column="0" />
<folding />
<state relative-caret-position="-1608">
<caret line="121" column="0" lean-forward="false" selection-start-line="121" selection-start-column="0" selection-end-line="121" selection-end-column="0" />
<folding>
<element signature="e#978#1032#0#PHP" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/route/Route.php">
<entry file="file://$PROJECT_DIR$/application/controller/Controller.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="380">
<caret line="55" column="0" lean-forward="false" selection-start-line="55" selection-start-column="0" selection-end-line="55" selection-end-column="0" />
<folding />
<state relative-caret-position="384">
<caret line="168" column="9" lean-forward="true" selection-start-line="168" selection-start-column="9" selection-end-line="168" selection-end-column="9" />
<folding>
<element signature="e#126#152#0#PHP" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/route/Api.php">
<entry file="file://$PROJECT_DIR$/application/controller/business/port/OnlineController.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-468">
<caret line="13" column="27" lean-forward="true" selection-start-line="13" selection-start-column="27" selection-end-line="13" selection-end-column="27" />
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/controller/accept/CertifyController.php">
<entry file="file://$PROJECT_DIR$/application/controller/business/port/OfflineController.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="299">
<caret line="38" column="1" lean-forward="false" selection-start-line="38" selection-start-column="1" selection-end-line="38" selection-end-column="1" />
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/controller/Controller.php">
<entry file="file://$PROJECT_DIR$/application/controller/business/port/StateController.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="773">
<caret line="186" column="0" lean-forward="false" selection-start-line="186" selection-start-column="0" selection-end-line="186" selection-end-column="0" />
<folding>
<element signature="e#126#152#0#PHP" expanded="true" />
</folding>
<state relative-caret-position="-474">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/controller/accept/AccessController.php">
<entry file="file://$PROJECT_DIR$/application/controller/business/power/CapacityController.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="304">
<caret line="100" column="0" lean-forward="false" selection-start-line="100" selection-start-column="0" selection-end-line="100" selection-end-column="0" />
<folding>
<element signature="e#978#1032#0#PHP" expanded="false" />
</folding>
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/test/test.php">
<entry file="file://$PROJECT_DIR$/lib/cdz/order/Order.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="195">
<caret line="18" column="8" lean-forward="false" selection-start-line="18" selection-start-column="8" selection-end-line="18" selection-end-column="8" />
<state relative-caret-position="-980">
<caret line="13" column="6" lean-forward="false" selection-start-line="13" selection-start-column="6" selection-end-line="13" selection-end-column="6" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/log/record/Record.php">
<entry file="file://$PROJECT_DIR$/lib/cdz/order/save/OrderSaveRedis.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="410">
<caret line="60" column="0" lean-forward="true" selection-start-line="60" selection-start-column="0" selection-end-line="60" selection-end-column="0" />
<state relative-caret-position="330">
<caret line="27" column="35" lean-forward="false" selection-start-line="27" selection-start-column="35" selection-end-line="27" selection-end-column="35" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/Events.php">
<entry file="file://$PROJECT_DIR$/application/controller/business/power/PowerController.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="419">
<caret line="101" column="17" lean-forward="false" selection-start-line="101" selection-start-column="17" selection-end-line="101" selection-end-column="17" />
<state relative-caret-position="624">
<caret line="74" column="22" lean-forward="false" selection-start-line="74" selection-start-column="22" selection-end-line="74" selection-end-column="22" />
<folding />
</state>
</provider>
......
......@@ -72,6 +72,7 @@ class Events
$crc = substr($message, -2);
var_dump($message);
$crcConfirm = sprintf('%08x', Crc::crc(substr($message, 0, strlen($message) - 2)));
if ($crc != mb_strtoupper(substr($crcConfirm, 0, 2))) {
......@@ -79,6 +80,7 @@ class Events
return;
}
$command = substr($message, 6, 2);
$api = new Api();
$api->boot();
......@@ -110,6 +112,8 @@ class Events
public static function onClose($clientId)
{
var_dump('close');
Events::pipe();
$gatewayId = $_SESSION['gateway_id'];
$gateway = new Gateway();
......
......@@ -171,11 +171,17 @@ class Controller
}
public function __destruct()
{
$logWriter = new GatewayLogWriter();
if($this->response->getResponseMessage() !== '')
{
$this->logRecord->setResponse($this->response->getResponseMessage());
}
$logWriter->write($this->logRecord);
}
/**
......@@ -493,4 +499,6 @@ class Controller
return $this;
}
}
\ No newline at end of file
......@@ -25,9 +25,9 @@ class HeartController extends Controller
]
];
public function __construct(string $clientId, string $message, Route $route)
public function __construct(string $clientId, string $message, string $command)
{
parent::__construct($clientId, $message, $route);
parent::__construct($clientId, $message, $command);
}
public function break()
......
......@@ -67,10 +67,12 @@ class AccessController extends Controller
'id',
], 'mac_address = ' . "'$mac'");
if (count($gatewayModelResult) === 0) {
var_dump($gatewayModelResult);
if($gatewayModelResult == false)
{
Gateway::closeClient($this->clientId);
return;
}
$stationId = $gatewayModelResult['station_id'];
$gatewayId = $gatewayModelResult['id'];
......@@ -114,12 +116,10 @@ class AccessController extends Controller
$gateway = new \Lib\station\gateway\Gateway();
$gateway->setState($gatewayId,1);
$gateway->setState($gatewayId, 1);
$this->response->send('02', $sessionId);
unset($this->response);
}
}
......@@ -152,6 +152,11 @@ class AccessController extends Controller
}
if(isset($_SESSION['port_mac_id']) == false)
{
return ;
}
$portsMacId = $_SESSION['port_mac_id'];
......@@ -186,9 +191,8 @@ class AccessController extends Controller
$_SESSION['port_logic_id'] = $portsLogicId;
//更新逻辑地址
foreach ($portsLogicId as $portId => $logicId)
{
$deviceModel->update(['logic_num' => $logicId],'id = '.$portId);
foreach ($portsLogicId as $portId => $logicId) {
$deviceModel->update(['logic_num' => $logicId], 'id = ' . $portId);
}
$order = new Order();
......@@ -196,28 +200,27 @@ class AccessController extends Controller
$offlineReason = hexdec(substr($this->message, $this->plc, 2));
$orderCount = '00';
foreach ($portsId as $portId) {
$port->setPortId($portId);
$orderId = $port->getPortUsingOrderId();
if($orderId == false || $orderId == '')
{
if ($orderId == false || $orderId == '') {
continue;
}
$order->setId($orderId);
if($order->getOrderCache(\Events::getRedis()) ==false)
{
if ($order->getOrderCache(\Events::getRedis()) == false) {
continue;
}
if($offlineReason === 1)
{
if ($offlineReason === 1) {
$orderState = new OfflinePowerState($order);
}else{
} else {
$orderState = new OfflineNetState($order);
}
......@@ -226,33 +229,27 @@ class AccessController extends Controller
$remainTime = $orderState->getRemainChargerTime();
if($remainTime > 0)
{
$logicNum = sprintf('%02x',$order->getPortLogicId());
$orderId = sprintf('%012x',$order->getId());
$time = sprintf('%04x',$remainTime);
if ($remainTime > 0) {
$logicNum = sprintf('%02x', $order->getPortLogicId());
$orderId = sprintf('%012x', $order->getId());
$time = sprintf('%04x', $remainTime);
array_push($responseOrder,$logicNum.$orderId.$time);
array_push($responseOrder, $logicNum . $orderId . $time);
}
$logicStart = sprintf('%02x',$logicStart);
$count = sprintf('%02x',$count);
$totalCount = sprintf('%02x',$totalCount);
$orderCount = sprintf('%02x',count($responseOrder));
$this->response->send('03',$logicStart.$count.$totalCount.$orderCount.implode('',$responseOrder));;
}
$logicStart = sprintf('%02x', $logicStart);
$count = sprintf('%02x', $count);
$totalCount = sprintf('%02x', $totalCount);
$orderCount = sprintf('%02x', count($responseOrder));
var_dump($logicStart);
$this->response->send('03', $logicStart . $count . $totalCount . $orderCount . implode('', $responseOrder));;
}
......
......@@ -62,6 +62,8 @@ class CertifyController extends Controller
$clients = Gateway::getclientIdByUid($mac);
foreach ($clients as $client) {
var_dump('hello');
Gateway::closeClient($client);
}
......
......@@ -10,19 +10,141 @@ namespace Application\controller\business\charger;
use Application\controller\Controller;
use Application\model\OrderModel;
use Lib\cdz\order\Order;
use Lib\cdz\order\state\ChargerState;
use Lib\cdz\order\state\ShedState;
use Lib\cdz\order\state\WaitingState;
use Lib\StateCode;
use Src\route\Route;
class OverController extends Controller
{
protected $parameterMap = [
'05' => [
'type' => 1,
'logic_id' => 1,
'state' => 1,
'order_id' => 6,
'capacity' => 4,
]
];
public function __construct(string $clientId, string $message, string $command)
{
parent::__construct($clientId, $message, $command);
}
/**
* 订单结束
* 更新数据库中的订单结束状态和结束电量等信息
* 释放口子,删除订单的redis缓存
* 推送必要的微信通知
* 订单记录异常
*/
public function over()
{
$type = $this->request->get('type');
$logicId = $this->request->get('logic_id');
$state = hexdec($this->request->get('state'));
$orderId = hexdec($this->request->get('order_id'));
$capacity = hexdec($this->request->get('capacity'));
$this->logRecord->setOrderId($orderId);
$order = new Order();
if ($order->getOrderCache(\Events::getRedis()) != false) {
$orderStateCode = $order->getStateCode();
$order->setEndCapacity($capacity);
$order->setEndCode($state);
switch ($orderStateCode) {
case StateCode::WAITING:
$orderState = new WaitingState($order);
break;
case StateCode::PORT_CHARGER:
$orderState = new ChargerState($order);
break;
case StateCode::CHARGER_SHED:
$orderState = new ShedState($order);
break;
default:
break;
}
if (isset($orderState)) {
switch ($state) {
case StateCode::FINISH_USER: //用户主动结束
$orderState->toUserFinish();
break;
case StateCode::FINISH_SHED_TIMEOUT: //端口脱落超时
$orderState->toShedTimeoutState();
break;
case StateCode::FINISH_REFUND: //充电失败退款
$orderState->toRefundFinish();
break;
case StateCode::FINISH_EXCEED: //功率超限
$orderState->toPowerExceedState();
break;
case StateCode::FINISH_FULL: //充满自停
$orderState->toPowerFullState();
break;
case StateCode::FINISH_TIME_END: //充电时间结束
$orderState->toTimeoutState();
break;
default:
break;
}
} else {
$this->logRecord->setException(0);
$this->logRecord->setDesc('redis副本订单状态异常,非可结束订单状态');
}
} else {
$this->logRecord->setException(0);
$this->logRecord->setDesc('未查找到订单redis副本');
}
$this->response->send('05', $logicId . sprintf('%12x', $orderId));
}
}
\ No newline at end of file
}
......@@ -13,6 +13,7 @@ use Application\controller\Controller;
use Application\model\OrderModel;
use Application\model\OrderPowerModel;
use Lib\cdz\order\Order;
use Lib\cdz\order\save\OrderSaveRedis;
use Lib\station\gateway\port\Port;
class PowerController extends Controller
......@@ -68,7 +69,12 @@ class PowerController extends Controller
if ($order->getStartCapacity() === -1) {
$orderModel = new OrderModel();
$orderModel->update(['start_capacity' => $capacity], 'id = ' . $orderId);
$saveOrderRedis = new OrderSaveRedis($order);
$saveOrderRedis->save(['startCapacity']);
} else {
$orderModel = new OrderModel();
$orderModel->update(['end_capacity' => $capacity], 'id = ' . $orderId);
}
}
......
<?php
/**
* Created by PhpStorm.
* User: banice
* Date: 2018/8/22
* Time: 上午10:17
*/
namespace Application\controller\business\power;
use Application\controller\Controller;
class ShutdownController extends Controller
{
protected $parameterMap = [
'04' => []
];
public function __construct(string $clientId, string $message, string $command)
{
parent::__construct($clientId, $message, $command);
}
public function shutdown()
{
}
}
\ No newline at end of file
<?php
/**
* Created by PhpStorm.
* User: banice
* Date: 2018/8/22
* Time: 上午10:05
*/
namespace Application\controller\setting;
use Application\controller\Controller;
use Application\model\ConfigModel;
use Application\model\StationModel;
class SettingController extends Controller
{
protected $parameterMap = [
'0a' => []
];
public function __construct(string $clientId, string $message, string $command)
{
parent::__construct($clientId, $message, $command);
}
/**
* 硬件获取设置参数
*/
public function get()
{
$configModel = new ConfigModel();
$configs = $configModel->getIdConfigValue();
$idConfigsValue = [];
foreach ($configs as $config) {
$idConfigsValue[$config['id']] = $config['config_value'];
}
$invertalTime = $idConfigsValue['5']; //设备上报数据间隔单位 秒
$stationId = $_SESSION['station_id'];
$stationModel = new StationModel();
$stationMaxCep = $stationModel->getColumn('max_cep', 'id = ' . $stationId);
$powerUpperLimit = isset($stationMaxCep) ? $stationMaxCep : $idConfigsValue['1'];
$getPriceConfig = $idConfigsValue['6'];
$powerSaturateInvertalTime = $idConfigsValue['7'];
$extraTime = $idConfigsValue['8'];
$powerLowerLimit = getenv('LOW_POWER_LIMIT');
$detectTime = 5;
$afterFormat = $this->adaptor([
[$invertalTime, 4],
[$getPriceConfig, 2],
[$powerUpperLimit, 4],
[$powerSaturateInvertalTime, 2],
[$extraTime, 2],
[$powerLowerLimit, 2],
[$detectTime, 2],
]);
$this->response->send('0a', implode($afterFormat));
}
/**
* @param array $data
* @return array
*/
private function adaptor(array $data)
{
$afterFormat = [];
foreach ($data as $item) {
array_push($afterFormat, sprintf('%0' . $item[1] . 'x', $item[0]));
}
return $afterFormat;
}
}
\ No newline at end of file
<?php
/**
* Created by PhpStorm.
* User: banice
* Date: 2018/8/22
* Time: 上午10:06
*/
namespace Application\model;
class ConfigModel extends Model
{
protected $table = 'configs';
public function getIdConfigValue()
{
return $this->db->query('SELECT id , config_value FROM '.$this->table);
}
//最大功率限制
public function getPowerUpperLimit()
{
return $this->getColumn('config_value', 'id = 1');
}
//数据上报间隔时间
public function getInvertalTime()
{
return $this->getColumn('config_value', 'id = 5');
}
//获取计价配置时间间隔
public function getPriceConfig()
{
return $this->getColumn('config_value', 'id = 6');
}
//充满自停的功率检测此时
public function getPowerSaturateInvertalTime()
{
return $this->getColumn('config_value', 'id = 7');
}
//充满自停额外的供电时间
public function getExtraTime()
{
return $this->getColumn('config_value', 'id = 8');
}
}
\ No newline at end of file
<?php
/**
* Created by PhpStorm.
* User: banice
* Date: 2018/8/22
* Time: 上午10:11
*/
namespace Application\model;
class StationModel extends Model
{
protected $table = 'stations';
}
\ No newline at end of file
......@@ -33,6 +33,8 @@ class Api
$this->add('08','business\port\OnlineController@online');
$this->add('09','business\port\OfflineController@offline');
$this->add('0f','business\power\ShutdownController@shutdown');
$this->add('0a','setting\SettingController@get');
}
......
......@@ -19,7 +19,7 @@ $gateway->startPort = getenv('GATEWAY_START_PORT');
$gateway->registerAddress = getenv('REGISTER_IP') . ':' . getenv('REGISTER_PORT');
// 心跳间隔
$gateway->pingInterval = 45;
$gateway->pingInterval = 50;
// 心跳数据
$gateway->pingNotResponseLimit = 2;
......
......@@ -139,6 +139,11 @@ class Order
*/
private $isRefund = 0;
/**
* @var int
*/
private $endCode = 0;
/**
* @param $name
......@@ -571,5 +576,23 @@ class Order
$this->onlineTime = $onlineTime;
}
/**
* @return int
*/
public function getEndCode(): int
{
return $this->endCode;
}
/**
* @param int $endCode
*/
public function setEndCode(int $endCode): void
{
$this->endCode = $endCode;
}
}
\ No newline at end of file
......@@ -11,15 +11,75 @@ namespace Lib\cdz\order\state;
use Application\model\OrderExceptionModel;
use Application\model\OrderModel;
use Lib\cdz\order\Order;
use Lib\cdz\order\save\OrderSaveRedis;
use Lib\log\Log;
use Lib\rabbitmq\PublishPortShed;
use Lib\remote\api\message\ChargerFullMessage;
use Lib\remote\api\message\ChargerTimeoutMessage;
use Lib\remote\api\message\FinishByUserMessage;
use Lib\remote\api\message\PowerExceedMessage;
use Lib\remote\api\message\SendMessage;
use Lib\remote\api\message\ShedMessage;
use Lib\StateCode;
use Lib\station\gateway\port\Port;
class ChargerState extends State
{
public function __construct(Order $order)
{
parent::__construct($order);
}
/**
* 用户主动结束充电
* @throws \GuzzleHttp\Exception\GuzzleException
*/
public function toUserFinish()
{
$orderModel = new OrderModel();
$orderModel->update([
'is_stop' => $this->order->getEndCode(),
'end_capacity' => $this->order->getEndCapacity(),
'updated_at' => date('Y-m-d H:i:s'),
'state' => 1,
], 'id = ' . $this->order->getId());
$port = new Port();
$port->setPortId($this->order->getPortId());
$port->freePort();
//用户主动结束充电推送
$finishByUserMessage = new FinishByUserMessage();
$finishByUserMessage->setOrderId($this->order->getId());
$finishByUserMessage->setAddress($this->order->getStationName() . '--' . $this->order->getPortName());
$chargerTime = time() - $this->order->getStartTime();
$chargerTime /= 60;
$chargerTime = (int)$chargerTime;
$finishByUserMessage->setChargerTime($chargerTime);
$finishByUserMessage->setEndTime($this->nowDate);
$finishByUserMessage->setOrderAmount($this->order->getPayAmount());
$sendMessage = new SendMessage();
if ($sendMessage->request($finishByUserMessage) == false) {
Log::error('send finish by user message fail');
}
$orderException = new OrderExceptionModel();
$orderException->insertRow([
'order_id' => $this->order->getId(),
'state' => StateCode::PORT_CHARGER . StateCode::FINISH_USER,
'desc' => '用户主动结束充电',
'created_at' => $this->nowDate,
]);
}
public function toWaitingState()
{
Log::error('charger state can not change to waiting state');
......@@ -54,17 +114,17 @@ class ChargerState extends State
//更新订单状态
$orderModel = new OrderModel();
$orderModel->update([
'is_stop' => StateCode::FINISH_EXCEED,
'is_stop' => StateCode::FINISH_EXCEED,
'end_capacity' => $this->order->getEndCapacity(),
'end_time' => date('Y-m-d H:i:s', $this->nowTimeStamp),
'state' => 1,
'end_time' => date('Y-m-d H:i:s', $this->nowTimeStamp),
'state' => 1,
], 'id = ' . $this->order->getId());
$orderExceptionModel = new OrderExceptionModel();
$orderExceptionModel->insertRow([
'order_id' => $this->order->getId(),
'state' => StateCode::PORT_CHARGER . StateCode::FINISH_EXCEED,
'desc' => '功率超限',
'order_id' => $this->order->getId(),
'state' => StateCode::PORT_CHARGER . StateCode::FINISH_EXCEED,
'desc' => '功率超限',
'created_at' => date('Y-m-d H:i:s', $this->nowTimeStamp),
]);
......@@ -102,17 +162,17 @@ class ChargerState extends State
$orderModel = new OrderModel();
$orderModel->update([
'is_stop' => StateCode::FINISH_FULL,
'end_time' => $this->nowDate,
'is_stop' => StateCode::FINISH_FULL,
'end_time' => $this->nowDate,
'end_capacity' => $this->order->getEndCapacity(),
'state' => 1,
'state' => 1,
], 'id = ' . $this->order->getId());
$orderExceptionModel = new OrderExceptionModel();
$orderExceptionModel->insertRow([
'order_id' => $this->order->getId(),
'state' => StateCode::PORT_CHARGER . StateCode::FINISH_FULL,
'desc' => '订单充电自停',
'order_id' => $this->order->getId(),
'state' => StateCode::PORT_CHARGER . StateCode::FINISH_FULL,
'desc' => '订单充电自停',
'created_at' => $this->nowDate,
]);
......@@ -130,20 +190,151 @@ class ChargerState extends State
$port->freePort();
}
/**
* 口子脱落
* redis订单状态副本更新
* 推送用户信息
* 发布延时任务十分钟后检测端口
*
* @throws \GuzzleHttp\Exception\GuzzleException
* @throws \AMQPConnectionException
* @throws \AMQPExchangeException
* @throws \GuzzleHttp\Exception\GuzzleException
*/
public function toShedState()
{
// TODO: Implement toShedState() method.
$this->order->setStateCode(StateCode::PORT_SHED);
$this->order->setShedTime($this->nowTimeStamp);
$orderSaveRedis = new OrderSaveRedis($this->order);
$orderSaveRedis->save([
'stateCode',
'shedTime'
]);
$orderModel = new OrderModel();
$orderModel->update([
'updated_at' => $this->nowDate,
'shed_time' => $this->nowDate,
], 'id = ' . $this->order->getId());
$orderExceptionModel = new OrderExceptionModel();
$orderExceptionModel->insertRow([
'order_id' => $this->order->getId(),
'state' => StateCode::PORT_CHARGER . StateCode::PORT_SHED,
'desc' => '口子脱落',
'created_at' => $this->nowDate,
]);
$shedMessage = new ShedMessage();
$shedMessage->setOrderId($this->order->getId());
$shedMessage->setPortName($this->order->getPortName());
$shedMessage->setStationName($this->order->getStationName());
$shedMessage->setTime($this->nowDate);
$sendMessage = new SendMessage();
if ($sendMessage->request($shedMessage) == false) {
Log::error('send port shed message fail');
}
//todo publish 十分钟的延迟任务
try {
$publish = new PublishPortShed();
$publish->publishOrder([
'order_id' => $this->order->getId(),
'shed_time' => $this->nowTimeStamp,
'port_id' => $this->order->getPortId()
]);
} catch (\Exception $exception) {
Log::error($exception->getMessage());
}
}
public function toShedTimeoutState()
{
// TODO: Implement toShedTimeoutState() method.
Log::error('charger state can not change to shed timeout');
}
/**
* 更新订单记录
* 释放口子
* 清楚订单redis副本
* 推送用户消息
* @throws \GuzzleHttp\Exception\GuzzleException
*
*/
public function toTimeoutState()
{
// TODO: Implement toTimeoutState() method.
$orderModel = new OrderModel();
$orderModel->update([
'is_stop' => StateCode::FINISH_TIME_END,
'end_capacity' => $this->order->getEndCapacity(),
'updated_at' => $this->nowDate,
], 'id = ' . $this->order->getId());
$port = new Port();
$port->setPortId($this->order->getId());
$port->freePort();
$chargerTimeoutMessage = new ChargerTimeoutMessage();
$chargerTimeoutMessage->setStationName($this->order->getStationName());
$chargerTimeoutMessage->setPortName($this->order->getPortName());
$chargerTimeoutMessage->setOrderId($this->order->getId());
$chargerTimeoutMessage->setEndTime($this->nowDate);
$chargerTime = $this->nowTimeStamp - $this->order->getStartTime();
$chargerTime /= 60;
$chargerTimeoutMessage->setChargerTime((int)$chargerTime);
$sendMessage = new SendMessage();
if ($sendMessage->request($chargerTimeoutMessage) == false) {
Log::error('send charger timeout message fail');
}
}
}
\ No newline at end of file
}
......@@ -13,11 +13,18 @@ use Lib\cdz\order\Order;
class ExceptionState extends State
{
public function __construct(Order $order)
{
parent::__construct($order);
}
public function toUserFinish()
{
// TODO: Implement toUserFinish() method.
}
public function toWaitingState()
{
// TODO: Implement toWaitingState() method.
......
......@@ -36,6 +36,12 @@ class OfflineNetState extends State
}
public function toUserFinish()
{
// TODO: Implement toUserFinish() method.
}
public function toWaitingState()
{
// TODO: Implement toWaitingState() method.
......
......@@ -18,6 +18,12 @@ class OfflinePowerState extends State
parent::__construct($order);
}
public function toUserFinish()
{
// TODO: Implement toUserFinish() method.
}
/**
* @var int
*/
......
......@@ -18,6 +18,12 @@ class PowerExceedState extends State
parent::__construct($order);
}
public function toUserFinish()
{
// TODO: Implement toUserFinish() method.
}
public function toWaitingState()
{
// TODO: Implement toWaitingState() method.
......
......@@ -9,7 +9,60 @@
namespace Lib\cdz\order\state;
class PowerFullState
use Lib\cdz\order\Order;
class PowerFullState extends State
{
public function __construct(Order $order)
{
parent::__construct($order);
}
public function toWaitingState()
{
// TODO: Implement toWaitingState() method.
}
public function toChargerState()
{
// TODO: Implement toChargerState() method.
}
public function toExceptionState()
{
// TODO: Implement toExceptionState() method.
}
public function toPowerExceedState()
{
// TODO: Implement toPowerExceedState() method.
}
public function toPowerFullState()
{
// TODO: Implement toPowerFullState() method.
}
public function toShedState()
{
// TODO: Implement toShedState() method.
}
public function toShedTimeoutState()
{
// TODO: Implement toShedTimeoutState() method.
}
public function toTimeoutState()
{
// TODO: Implement toTimeoutState() method.
}
public function toUserFinish()
{
// TODO: Implement toUserFinish() method.
}
}
\ No newline at end of file
......@@ -19,6 +19,12 @@ class ShedState extends State
parent::__construct($order);
}
public function toUserFinish()
{
// TODO: Implement toUserFinish() method.
}
public function toWaitingState()
{
// TODO: Implement toWaitingState() method.
......
......@@ -9,7 +9,59 @@
namespace Lib\cdz\order\state;
class ShedTimeoutState
use Lib\cdz\order\Order;
class ShedTimeoutState extends State
{
public function __construct(Order $order)
{
parent::__construct($order);
}
public function toWaitingState()
{
// TODO: Implement toWaitingState() method.
}
public function toChargerState()
{
// TODO: Implement toChargerState() method.
}
public function toExceptionState()
{
// TODO: Implement toExceptionState() method.
}
public function toPowerExceedState()
{
// TODO: Implement toPowerExceedState() method.
}
public function toPowerFullState()
{
// TODO: Implement toPowerFullState() method.
}
public function toShedState()
{
// TODO: Implement toShedState() method.
}
public function toShedTimeoutState()
{
// TODO: Implement toShedTimeoutState() method.
}
public function toTimeoutState()
{
// TODO: Implement toTimeoutState() method.
}
public function toUserFinish()
{
// TODO: Implement toUserFinish() method.
}
}
\ No newline at end of file
......@@ -48,16 +48,19 @@ abstract class State
public abstract function toChargerState();
public abstract function toExceptionState();
public abstract function toExceptionState();//充电异常
public abstract function toPowerExceedState();
public abstract function toPowerExceedState(); //功率超限
public abstract function toPowerFullState();
public abstract function toPowerFullState(); //充满自停
public abstract function toShedState();
public abstract function toShedState(); //口子脱落
public abstract function toShedTimeoutState();
public abstract function toShedTimeoutState(); //口子脱落超时
public abstract function toTimeoutState(); //时间耗尽
public abstract function toUserFinish();
public abstract function toTimeoutState();
}
\ No newline at end of file
......@@ -9,7 +9,60 @@
namespace Lib\cdz\order\state;
class TimeoutState
use Lib\cdz\order\Order;
class TimeoutState extends State
{
public function __construct(Order $order)
{
parent::__construct($order);
}
public function toWaitingState()
{
// TODO: Implement toWaitingState() method.
}
public function toChargerState()
{
// TODO: Implement toChargerState() method.
}
public function toExceptionState()
{
// TODO: Implement toExceptionState() method.
}
public function toPowerExceedState()
{
// TODO: Implement toPowerExceedState() method.
}
public function toPowerFullState()
{
// TODO: Implement toPowerFullState() method.
}
public function toShedState()
{
// TODO: Implement toShedState() method.
}
public function toShedTimeoutState()
{
// TODO: Implement toShedTimeoutState() method.
}
public function toTimeoutState()
{
// TODO: Implement toTimeoutState() method.
}
public function toUserFinish()
{
// TODO: Implement toUserFinish() method.
}
}
\ No newline at end of file
......@@ -26,6 +26,10 @@ use Src\command\StopChargerCommand;
class WaitingState extends State
{
/**
* WaitingState constructor.
* @param Order $order
*/
public function __construct(Order $order)
{
......@@ -33,6 +37,14 @@ class WaitingState extends State
}
/**
*
*/
public function toUserFinish()
{
// TODO: Implement toUserFinish() method.
}
public function toWaitingState()
{
}
......
<?php
/**
* Created by PhpStorm.
* User: banice
* Date: 2018/8/22
* Time: 下午3:12
*/
namespace Lib\remote\api\message;
class ChargerTimeoutMessage extends Message
{
/**
* @var string
*/
protected $templateId = '';
/**
* @var string
*/
private $first = '亲爱的用户,您的爱车已经完成充电啦';
/**
* @var string
*/
private $endTime = '';
/**
* @var string
*/
private $stationName = '';
/**
* @var string
*/
private $portName = '';
/**
* @var string
*/
private $chargerTime;
/**
* @var int
*/
private $orderAmount;
public function __construct()
{
$this->templateId = getenv('MESSAGE_CHARGER_TIMEOUT');
}
/**
* @var string
*/
private $remark = '感谢你的使用';
public function getPushJson(): string
{
return json_encode([
'first' => [
'value' => $this->first,
'color' => '#333',
],
'keyword1' => [
'value' => $this->endTime,
'color' => '#333',
],
'keyword2' => [
'value' => $this->stationName.'--'.$this->portName,
'color' => '#333',
],
'keyword3' => [
'value' => $this->chargerTime.'分钟',
'color' => '#333',
],
'keyword4' => [
'value' => '¥'.number_format($this->orderAmount/100,2),
'color' => '#333',
],
'remark' => [
'value' => $this->remark,
'color' => '#333',
],
]);
}
/**
* @return string
*/
public function getEndTime(): string
{
return $this->endTime;
}
/**
* @param string $endTime
*/
public function setEndTime(string $endTime): void
{
$this->endTime = $endTime;
}
/**
* @return string
*/
public function getStationName(): string
{
return $this->stationName;
}
/**
* @param string $stationName
*/
public function setStationName(string $stationName): void
{
$this->stationName = $stationName;
}
/**
* @return string
*/
public function getPortName(): string
{
return $this->portName;
}
/**
* @param string $portName
*/
public function setPortName(string $portName): void
{
$this->portName = $portName;
}
/**
* @return string
*/
public function getChargerTime(): string
{
return $this->chargerTime;
}
/**
* @param string $chargerTime
*/
public function setChargerTime(string $chargerTime): void
{
$this->chargerTime = $chargerTime;
}
/**
* @return int
*/
public function getOrderAmount(): int
{
return $this->orderAmount;
}
/**
* @param int $orderAmount
*/
public function setOrderAmount(int $orderAmount): void
{
$this->orderAmount = $orderAmount;
}
/**
* @return string
*/
public function getRemark(): string
{
return $this->remark;
}
/**
* @param string $remark
*/
public function setRemark(string $remark): void
{
$this->remark = $remark;
}
}
\ No newline at end of file
<?php
/**
* Created by PhpStorm.
* User: banice
* Date: 2018/8/22
* Time: 下午1:40
*/
namespace Lib\remote\api\message;
/**
* 用户主动结束充电消息 e
* Class FinishByUserMessage
* @package Lib\remote\api\message
*/
class FinishByUserMessage extends Message
{
protected $templateId = '';
private $first = '亲爱的用户,您的爱车已经完成充电啦';
private $endTime = '';
private $address= '';
private $chargerTime = 0;
private $orderAmount =0;
private $remark = '感谢你的使用';
/**
* FinishByUserMessage constructor.
*/
public function __construct()
{
$this->templateId = getenv('MESSAGE_FINISH_USER');
}
public function getPushJson(): string
{
return json_encode([
'first' => [
'value' => $this->first,
'color' => '#333',
],
'keyword1' => [
'value' => $this->endTime,
'color' => '#333',
],
'keyword2' => [
'value' => $this->address,
'color' => '#333',
],
'keyword3' => [
'value' => $this->chargerTime.'分钟',
'color' => '#333',
],
'keyword4' => [
'value' => '¥'.number_format($this->orderAmount/100,2),
'color' => '#333',
],
'remark' => [
'value' => $this->remark,
'color' => '#333',
],
]);
}
/**
* @return string
*/
public function getFirst(): string
{
return $this->first;
}
/**
* @param string $first
*/
public function setFirst(string $first): void
{
$this->first = $first;
}
/**
* @return string
*/
public function getEndTime(): string
{
return $this->endTime;
}
/**
* @param string $endTime
*/
public function setEndTime(string $endTime): void
{
$this->endTime = $endTime;
}
/**
* @return string
*/
public function getAddress(): string
{
return $this->address;
}
/**
* @param string $address
*/
public function setAddress(string $address): void
{
$this->address = $address;
}
/**
* @return int
*/
public function getChargerTime(): int
{
return $this->chargerTime;
}
/**
* @param int $chargerTime
*/
public function setChargerTime(int $chargerTime): void
{
$this->chargerTime = $chargerTime;
}
/**
* @return int
*/
public function getOrderAmount(): int
{
return $this->orderAmount;
}
/**
* @param int $orderAmount
*/
public function setOrderAmount(int $orderAmount): void
{
$this->orderAmount = $orderAmount;
}
/**
* @return string
*/
public function getRemark(): string
{
return $this->remark;
}
/**
* @param string $remark
*/
public function setRemark(string $remark): void
{
$this->remark = $remark;
}
}
\ No newline at end of file
......@@ -61,5 +61,22 @@ abstract class Message
$this->userId = $userId;
}
/**
* @return string
*/
public function getOrderId(): string
{
return $this->orderId;
}
/**
* @param string $orderId
*/
public function setOrderId(string $orderId): void
{
$this->orderId = $orderId;
}
}
\ No newline at end of file
<?php
/**
* Created by PhpStorm.
* User: banice
* Date: 2018/8/22
* Time: 下午2:44
*/
namespace Lib\remote\api\message;
class ShedMessage extends Message
{
protected $templateId = '';
/**
* @var string
*/
private $first = '尊敬的用户,充电端未检测到插头,请您在%s分钟内接入。';
/**
* @var string
*/
private $portName = '';
/**
* @var string
*/
private $stationName = '';
/**
* @var string
*/
private $time = '';
/**
* @var int
*/
private $waitingTime = 10;
/**
* @var string
*/
private $remark = '超时将关闭此次交易哦,支付金额会在1个工作日内退回您的余额或零钱,请注意查看,若未收到请联系我们的客服为您处理。若为充电口异常,请您及时更换至其它充电口充电';
/**
* ShedMessage constructor.
*/
public function __construct()
{
$this->templateId = getenv('MESSAGE_PORT_SHED');
}
public function getPushJson(): string
{
$this->first = sprintf($this->first,$this->waitingTime);
return json_encode([
'first' => [
'value' => $this->first,
'color' => '#333',
],
'keyword1' => [
'value' => $this->stationName . "--$this->portName",
'color' => '#333',
],
'keyword2' => [
'value' => $this->time,
'color' => '#333',
],
'remark' => [
'value' => $this->remark,
'color' => '#333',
],
]);
}
/**
* @return string
*/
public function getFirst(): string
{
return $this->first;
}
/**
* @param string $first
*/
public function setFirst(string $first): void
{
$this->first = $first;
}
/**
* @return string
*/
public function getPortName(): string
{
return $this->portName;
}
/**
* @param string $portName
*/
public function setPortName(string $portName): void
{
$this->portName = $portName;
}
/**
* @return string
*/
public function getStationName(): string
{
return $this->stationName;
}
/**
* @param string $stationName
*/
public function setStationName(string $stationName): void
{
$this->stationName = $stationName;
}
/**
* @return int
*/
public function getWaitingTime(): int
{
return $this->waitingTime;
}
/**
* @param int $waitingTime
*/
public function setWaitingTime(int $waitingTime): void
{
$this->waitingTime = $waitingTime;
}
/**
* @return string
*/
public function getTime(): string
{
return $this->time;
}
/**
* @param string $time
*/
public function setTime(string $time): void
{
$this->time = $time;
}
/**
* @return string
*/
public function getRemark(): string
{
return $this->remark;
}
/**
* @param string $remark
*/
public function setRemark(string $remark): void
{
$this->remark = $remark;
}
}
\ No newline at end of file
......@@ -29,16 +29,28 @@ class GatewayLogWriter
public function write(Record $record)
{
$this->gatewayLogModel->insertRow([
'command' => $record->getCommand(),
'port_id' => $record->getPortId(),
'order_id' => $record->getOrderId(),
'body' => $record->getBody(),
'gateway_id' => $record->getGatewayId(),
'station_id' => $record->getStationId(),
'created_at' => date('Y-m-d H:i:s', $record->getTime()),
]);
$update =
[
'command' => $record->getCommand(),
'port_id' => $record->getPortId(),
'order_id' => $record->getOrderId(),
'request' => $record->getBody(),
'gateway_id' => $record->getGatewayId(),
'station_id' => $record->getStationId(),
'created_at' => date('Y-m-d H:i:s', $record->getTime()),
'exception' => $record->getException(),
];
if($record->getResponse() != '')
{
$update['response'] = $record->getResponse();
}
if ($record->getDesc() != '') {
$update['desc'] = $record->getDesc();
}
$this->gatewayLogModel->insertRow($update);
}
......
......@@ -31,6 +31,11 @@ class Record
protected $body = '';
/**
* @var string
*/
protected $response = '';
/**
* @var int
*/
protected $portId = 0;
......@@ -45,6 +50,17 @@ class Record
protected $time = 0;
/**
* @var int
*/
protected $exception = 1;
/**
* @var string
*/
protected $desc = '';
public function __construct()
{
$this->time = time();
......@@ -167,5 +183,56 @@ class Record
$this->time = $time;
}
/**
* @return int
*/
public function getException(): int
{
return $this->exception;
}
/**
* @param int $exception
*/
public function setException(int $exception): void
{
$this->exception = $exception;
}
/**
* @return string
*/
public function getDesc(): string
{
return $this->desc;
}
/**
* @param string $desc
*/
public function setDesc(string $desc): void
{
$this->desc = $desc;
}
/**
* @return string
*/
public function getResponse(): string
{
return $this->response;
}
/**
* @param string $response
*/
public function setResponse(string $response): void
{
$this->response = $response;
}
}
\ No newline at end of file
......@@ -104,14 +104,29 @@ class Response
$crc = substr(sprintf('%08x', Crc::crc($exceptCrc)), 0, 2);
return $this->responseMessage = $exceptCrc . $crc;
var_dump($exceptCrc);
}
return $this->responseMessage = $exceptCrc . $crc;
/**
* @return string
*/
public function getResponseMessage(): string
{
return $this->responseMessage;
}
/**
* @param string $responseMessage
*/
public function setResponseMessage(string $responseMessage): void
{
$this->responseMessage = $responseMessage;
}
}
......
......@@ -25,7 +25,6 @@ class Bintohex
$data = $data[1];
$packageLength = strlen($data);
$packageLength/=2;
......@@ -39,6 +38,8 @@ class Bintohex
//数据非ffaa开头直接断开连接
if(substr($data,0,4) !== 'ffaa')
{
var_dump('111');
$tcpConnection->close();
}
......
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