PackageController.php 3.9 KB

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