PackageController.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <?php
  2. namespace App\Http\Controllers\api\thirdPart\hengli;
  3. use App\Http\Controllers\api\thirdPart\weight\WeightBaseController;
  4. use App\Services\LogService;
  5. use App\Services\weight\HengLiWeightService;
  6. use Illuminate\Http\Request;
  7. class PackageController extends WeightBaseController
  8. {
  9. // 参数
  10. protected $weight = 'weight'; // 重量
  11. protected $length = 'length'; // 长
  12. protected $width = 'width'; // 宽
  13. protected $height = 'height'; // 高
  14. protected $code = 'code'; // 快递单号
  15. protected $weight_at = 'weight_at'; // 称重时间
  16. protected $hid = 'hid'; // 称重设备id
  17. protected $name = 'HengLi'; // 名称
  18. public function new_(Request $request)
  19. {
  20. /** @var HengLiWeightService $service */
  21. $service = app(HengLiWeightService::class);
  22. $params = $this->conversionRequest($request);
  23. $response = $service->new($params);
  24. if($response['success'])
  25. LogService::log(__CLASS__,$service->name,'称重成功!'.json_encode($params));
  26. else
  27. LogService::log(__CLASS__,$service->name,'称重失败!'.json_encode($params));
  28. return json_encode($response,JSON_UNESCAPED_UNICODE);
  29. }
  30. public function conversionRequest($request): array
  31. {
  32. $params = [];
  33. $arr = $request->all();
  34. $data = array_key_first($arr);
  35. $data = explode(',', $data);
  36. foreach ($data as $key => $value) {
  37. switch ($key) {
  38. case '0':
  39. $params['hid'] = $value;
  40. break;
  41. case '1':
  42. $params['code'] = $this->processCodeStr($value);
  43. break;
  44. case '2':
  45. $params['weight'] = $value;
  46. break;
  47. case '3':
  48. $params['weight_at'] = $value;
  49. break;
  50. case '4':
  51. $params['length'] = $value;
  52. break;
  53. case '5':
  54. $params['width'] = $value;
  55. break;
  56. case '6':
  57. $params['height'] = $value;
  58. break;
  59. default:
  60. break;
  61. }
  62. }
  63. return $params;
  64. }
  65. public function getWeightValue($params)
  66. {
  67. $value = $this->getValue($this->weight, $params);
  68. return str_replace('_', '.', $value);
  69. }
  70. // 信息返回
  71. // 返回称重成功信息
  72. public function getSuccessMessage($params, $orderPackage): array
  73. {
  74. return ['success' => true, 'message' => '称重成功'];
  75. }
  76. // 返回包裹未找到异常
  77. public function getNotFindOrderPackageMessage($params, $orderPackage): string
  78. {
  79. return json_encode(['success' => false, 'message' => '未找打包裹信息', JSON_UNESCAPED_UNICODE]);
  80. }
  81. // 返回富勒信息未找到异常
  82. public function getNotFindOrderHeaderMessage($params, $orderPackage): string
  83. {
  84. return json_encode(['success' => false, 'message' => '富勒信息未找到'], JSON_UNESCAPED_UNICODE);
  85. }
  86. // 返回称重下发错误
  87. public function getWeightMessage($orderPackage, $e)
  88. {
  89. return json_encode(['success' => false, 'message' => $e->getMessage], JSON_UNESCAPED_UNICODE);
  90. }
  91. public function validator(Request $request): array
  92. {
  93. $params = $this->conversionRequest($request);
  94. $errors = [];
  95. $weight = $this->getWeightValue($params);
  96. if (empty($weight) || $weight == '') {
  97. $errors['weight'] = '称重重量为空';
  98. }
  99. $code = $this->getCodeValue($params);
  100. $code = trim($code, "'");
  101. if (empty($code) || $code == '') {
  102. $errors['code'] = '快递单号为空';
  103. }
  104. $hid = $this->getValue($this->hid, $params);
  105. if (empty($hid) || $hid == '') {
  106. $errors['hid'] = '称重设备号不能为空';
  107. }
  108. return $errors;
  109. }
  110. }