OrderIssueRejectedBillService.php 4.4 KB

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