ResponseTransform.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  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. self::dd($error);
  26. switch ($error) {
  27. case 0:
  28. //操作成功
  29. self::log('操作成功', 'WARNING');
  30. $this->cacheLog($box_no, $msg_id, true);
  31. break;
  32. case 101:
  33. self::log('设防过程中ACC线检测失败', 'WARNING');
  34. //设防过程中ACC线检测失败
  35. break;
  36. case 102:
  37. //设防过程命令超时
  38. self::log('设防过程命令超时', 'WARNING');
  39. break;
  40. case 103:
  41. //开锁过程ACC线检测失败
  42. self::log('开锁过程ACC线检测失败', 'WARNING');
  43. $this->cacheLog($box_no, $msg_id, false);
  44. break;
  45. case 104:
  46. //开锁过程命令超时
  47. self::log('开锁过程命令超时', 'WARNING');
  48. break;
  49. case 105:
  50. //关锁过程ACC线检测失败
  51. self::log('关锁过程ACC线检测失败', 'WARNING');
  52. break;
  53. case 106:
  54. //大灯开关超时
  55. self::log('大灯开关超时', 'WARNING');
  56. break;
  57. case 107:
  58. //参数存储失败
  59. self::log('参数存储失败', 'WARNING');
  60. break;
  61. case 108:
  62. //电池仓开启超时
  63. self::log('电池仓开启超时', 'WARNING');
  64. break;
  65. case 109:
  66. //操作不允许
  67. self::log('操作不允许', 'WARNING');
  68. break;
  69. case 110:
  70. //车辆移动
  71. self::log('车辆移动', 'WARNING');
  72. BikeControl::outAreaLoseElectric($box_no);
  73. break;
  74. case 111:
  75. //服务器域名和端口设置失效
  76. self::log('服务器域名和端口设置失效', 'WARNING');
  77. break;
  78. }
  79. return $this->response();
  80. }
  81. /**
  82. * 状态响应
  83. * @param $login_type
  84. * @return boolean
  85. * User: Mead
  86. */
  87. public function response()
  88. {
  89. return false;
  90. }
  91. /**
  92. * 解析装载的状态消息
  93. * @param $body
  94. * @return array
  95. * User: Mead
  96. */
  97. private function decode($body)
  98. {
  99. $i = 0;
  100. // $box_time = self::stitching($body, $i, 4);
  101. $i += 4;
  102. $i += 1;
  103. $i += 1;
  104. //车辆状态
  105. $i += 4;
  106. $i += 2;
  107. $i += 1;
  108. $i += 1;
  109. $i += 1;
  110. $i += 2;
  111. $msg_id = self::stitching($body, $i, 2);
  112. $i += 2;
  113. // box_no
  114. $box_no = substr(self::stitching($body, $i, 8), 0, -1);
  115. $i += 8;
  116. $error = hexdec(self::stitching($body, $i, 1));
  117. return [
  118. $box_no,
  119. $msg_id,
  120. $error
  121. ];
  122. }
  123. }