OrderIssueController.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. namespace App\Http\Controllers\api\thirdPart\hengli;
  3. use App\Http\Controllers\Controller;
  4. use App\OrderIssue;
  5. use App\OrderPackage;
  6. use App\Services\OrderIssueService;
  7. use App\Services\WorkOrderService;
  8. use App\WorkOrder;
  9. use Illuminate\Http\Request;
  10. class OrderIssueController extends Controller
  11. {
  12. public function checkInterceptPackage(Request $request): array
  13. {
  14. /** @var WorkOrderService $workOrderService */
  15. $workOrderService = app(WorkOrderService::class);
  16. /** @var OrderIssueService $workOrderService */
  17. $orderIssueService = app(OrderIssueService::class);
  18. $logisticNumber = $request['expressCode'] ?? null;
  19. if ($workOrderService->isIntercept($logisticNumber) || $workOrderService->isExists($logisticNumber)) {
  20. // 显示在问题件已拦截
  21. $orderIssueService->intercept($logisticNumber);
  22. return ['success' => 'true','data'=> true];
  23. }
  24. return ['success' => 'true','data'=> false];
  25. }
  26. public function interceptExpressCodes(): array
  27. {
  28. $interceptExpressCodes = [];
  29. $orderIssueQuery = OrderIssue::query()
  30. ->select("order_id")
  31. ->where('order_issue_type_id',1)
  32. ->where(function ($query) {
  33. $query->whereNotIn('order_issues.final_status', ['已解决', '已归档'])
  34. ->orWhereNull('order_issues.final_status');
  35. });
  36. $orderPackages = OrderPackage::query()
  37. ->select('logistic_number')
  38. ->whereIn('order_id',$orderIssueQuery)
  39. ->get();
  40. foreach ($orderPackages as $orderPackage){
  41. $interceptExpressCodes[] = $orderPackage->logistic_number;
  42. }
  43. $workOrderQuery = WorkOrder::query()
  44. ->select("order_id")
  45. ->where('order_issue_type_id',1)
  46. ->where('status','!=',5);
  47. $orderPackages = OrderPackage::query()
  48. ->select('logistic_number')
  49. ->whereIn('order_id',$workOrderQuery)
  50. ->get();
  51. foreach ($orderPackages as $orderPackage){
  52. $interceptExpressCodes[] = $orderPackage->logistic_number;
  53. }
  54. return array_values(array_unique($interceptExpressCodes));
  55. }
  56. }