ResponseTransform.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Mead
  5. * Date: 2019/9/3
  6. * Time: 8:05 PM
  7. */
  8. namespace App\Servers\Weikemu\Transforms;
  9. use App\Models\BoxSettingTraitModel;
  10. use App\Models\WarningLogTraitModel;
  11. use App\Servers\BaseServer;
  12. use App\Servers\Weikemu\BikeControl;
  13. use App\Servers\Weikemu\Models\CacheLogTraitModel;
  14. /**
  15. * 响应报文
  16. * Class LoginServer
  17. * @package App\Servers
  18. */
  19. class ResponseTransform extends BaseServer
  20. {
  21. use BoxSettingTraitModel, WarningLogTraitModel, CacheLogTraitModel;
  22. public function main($body)
  23. {
  24. list($box_no, $msg_id, $error) = $this->decode($body);
  25. switch ($error) {
  26. case 0:
  27. //操作成功
  28. self::log('操作成功', 'WARNING');
  29. $this->cacheLog($box_no, $msg_id, true);
  30. break;
  31. case 101:
  32. self::log('设防过程中ACC线检测失败', 'WARNING');
  33. //设防过程中ACC线检测失败
  34. break;
  35. case 102:
  36. //设防过程命令超时
  37. self::log('设防过程命令超时', 'WARNING');
  38. break;
  39. case 103:
  40. //开锁过程ACC线检测失败
  41. self::log('开锁过程ACC线检测失败', 'WARNING');
  42. $this->cacheLog($box_no, $msg_id, false);
  43. break;
  44. case 104:
  45. //开锁过程命令超时
  46. self::log('开锁过程命令超时', 'WARNING');
  47. break;
  48. case 105:
  49. //关锁过程ACC线检测失败
  50. self::log('关锁过程ACC线检测失败', 'WARNING');
  51. break;
  52. case 106:
  53. //大灯开关超时
  54. self::log('大灯开关超时', 'WARNING');
  55. break;
  56. case 107:
  57. //参数存储失败
  58. self::log('参数存储失败', 'WARNING');
  59. break;
  60. case 108:
  61. //电池仓开启超时
  62. self::log('电池仓开启超时', 'WARNING');
  63. break;
  64. case 109:
  65. //操作不允许
  66. self::log('操作不允许', 'WARNING');
  67. break;
  68. case 110:
  69. //车辆移动
  70. self::log('车辆移动', 'WARNING');
  71. BikeControl::outAreaLoseElectric($box_no);
  72. break;
  73. case 111:
  74. //服务器域名和端口设置失效
  75. self::log('服务器域名和端口设置失效', 'WARNING');
  76. break;
  77. }
  78. return $this->response();
  79. }
  80. /**
  81. * 解析装载的状态消息
  82. * @param $body
  83. * @return array
  84. * User: Mead
  85. */
  86. private function decode($body)
  87. {
  88. $i = 0;
  89. // $box_time = self::stitching($body, $i, 4);
  90. $i += 4;
  91. $i += 1;
  92. $i += 1;
  93. //车辆状态
  94. $i += 4;
  95. $i += 2;
  96. $i += 1;
  97. $i += 1;
  98. $i += 1;
  99. $i += 2;
  100. $msg_id = self::stitching($body, $i, 2);
  101. $i += 2;
  102. // box_no
  103. $box_no = substr(self::stitching($body, $i, 8), 0, -1);
  104. $i += 8;
  105. $error = hexdec(self::stitching($body, $i, 1));
  106. return [
  107. $box_no,
  108. $msg_id,
  109. $error
  110. ];
  111. }
  112. /**
  113. * 状态响应
  114. * @param $login_type
  115. * @return boolean
  116. * User: Mead
  117. */
  118. public function response()
  119. {
  120. return false;
  121. }
  122. }