OrderIssueRejectedBillService.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <?php
  2. namespace App\Services;
  3. use App\Http\Controllers\Controller;
  4. use App\OrderIssue;
  5. use App\OrderIssueRejectedBill;
  6. use App\RejectedBill;
  7. use Illuminate\Database\Eloquent\Builder;
  8. use Illuminate\Database\Eloquent\Model;
  9. Class OrderIssueRejectedBillService
  10. {
  11. private $rejectedBillSyncOrderService;
  12. public function __construct(RejectedBillSyncOrderService $rejectedBillSyncOrderService)
  13. {
  14. $this->rejectedBillSyncOrderService = $rejectedBillSyncOrderService;
  15. }
  16. /**
  17. * 添加连接
  18. * @param OrderIssue $orderIssue
  19. * @param $logistic_number_return
  20. * @return Builder|Model|object|null|boolean
  21. */
  22. public function joinRejectedBill($orderIssue,$logistic_number_return)
  23. {
  24. $orderIssueRejectedBill = OrderIssueRejectedBill::query()
  25. ->where('order_issue_id',$orderIssue->id)
  26. ->where('logistic_number_return',$logistic_number_return)->first();
  27. if($orderIssueRejectedBill)return null;
  28. $orderIssue->joinRejectedBill($logistic_number_return);
  29. $this->rejectedBillSyncOrderService->orderIssueSyncRejectingStatus($orderIssue);
  30. return OrderIssueRejectedBill::query()->with('rejectedBill.items')
  31. ->where('order_issue_id',$orderIssue->id)
  32. ->where('logistic_number_return',$logistic_number_return)->first() ?? false;
  33. }
  34. /**
  35. * 删除连接
  36. * @param OrderIssue $orderIssue
  37. * @param $logistic_number_return
  38. * @return void|null|boolean
  39. */
  40. public function unJoinRejectedBill($orderIssue,$logistic_number_return)
  41. {
  42. $orderIssueRejectedBill = OrderIssueRejectedBill::query()
  43. ->where('order_issue_id',$orderIssue->id)
  44. ->where('logistic_number_return',$logistic_number_return)->first();
  45. if(!$orderIssueRejectedBill)return null;
  46. $bool = $orderIssue->unJoinRejectedBill($logistic_number_return);
  47. $this->rejectedBillSyncOrderService->orderIssueSyncRejectingStatus($orderIssue);
  48. if($orderIssue->rejectedBills->count() == 0)$orderIssue->update(['is_new_rejecting' => '无']);
  49. return $bool;
  50. }
  51. /**
  52. * 修改连接
  53. * @param OrderIssue $orderIssue
  54. * @param $logistic_number_return
  55. * @param $logistic_number_return_update
  56. * @return null|boolean|Builder|Model|object
  57. */
  58. public function reviseJoinRejectedBill($orderIssue,$logistic_number_return,$logistic_number_return_update)
  59. {
  60. $orderIssueRejectedBill = OrderIssueRejectedBill::query()->where('order_issue_id',$orderIssue->id)
  61. ->where('logistic_number_return',$logistic_number_return)->first();
  62. if($orderIssueRejectedBill) return null;
  63. $orderIssue->reviseJoinRejectedBill($logistic_number_return,$logistic_number_return_update);
  64. $this->rejectedBillSyncOrderService->orderIssueSyncRejectingStatus($orderIssue);
  65. return OrderIssueRejectedBill::query()->with('rejectedBill')
  66. ->where('order_issue_id',$orderIssue->id)
  67. ->where('logistic_number_return',$logistic_number_return)->first() ?? false;
  68. }
  69. /**
  70. * 退回件同步问题件
  71. * @param RejectedBill|Controller $rejectedBills
  72. * @return void
  73. */
  74. public function syncOrderIssue($rejectedBills)
  75. {
  76. if(!$rejectedBills)return;
  77. if(is_array($rejectedBills)){
  78. foreach ($rejectedBills as $rejectedBill) {
  79. $this->rejectedBillSyncOrderService->syncRejectingStatus($rejectedBill);
  80. }
  81. return;
  82. }
  83. $this->rejectedBillSyncOrderService->syncRejectingStatus($rejectedBills);
  84. }
  85. /**
  86. * 问题件同步退回件
  87. * @param OrderIssue $orderIssue
  88. */
  89. public function syncRejectedBill($orderIssue)
  90. {
  91. if(!$orderIssue)return;
  92. $order_packages = $orderIssue->order->packages ?? collect();
  93. if(!$order_packages)return;
  94. $logistic_number_return = RejectedBill::query()->whereIn('logistic_number_return',$order_packages->map(function($rejectedBill){
  95. return $rejectedBill->logistic_number_return;
  96. }))->get();
  97. $orderIssue->joinRejectedBill($logistic_number_return);
  98. $this->rejectedBillSyncOrderService->orderIssueSyncRejectingStatus($orderIssue);
  99. }
  100. /**
  101. * 问题件更新退单状态
  102. * @param OrderIssue|Controller $order_issues
  103. */
  104. public function syncOrderIssueRejectingStatus($order_issues)
  105. {
  106. /**@var OrderIssue $orderIssue */
  107. if(!$order_issues)return;
  108. if(is_array($order_issues)){
  109. foreach ($order_issues as $orderIssue) {
  110. $this->rejectedBillSyncOrderService->orderIssueSyncRejectingStatus($orderIssue);
  111. }
  112. return;
  113. }
  114. $this->rejectedBillSyncOrderService->orderIssueSyncRejectingStatus($order_issues);
  115. }
  116. }