OrderIssueRejectedBillService.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  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')
  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. return $bool;
  45. }
  46. /**
  47. * 修改连接
  48. * @param OrderIssue $orderIssue
  49. * @param $logistic_number_return
  50. * @param $logistic_number_return_update
  51. * @return null|boolean|Builder|Model|object
  52. */
  53. public function reviseJoinRejectedBill($orderIssue,$logistic_number_return,$logistic_number_return_update)
  54. {
  55. $orderIssueRejectedBill = OrderIssueRejectedBill::query()->where('order_issue_id',$orderIssue->id)
  56. ->where('logistic_number_return',$logistic_number_return)->first();
  57. if($orderIssueRejectedBill) return null;
  58. $orderIssue->reviseJoinRejectedBill($logistic_number_return,$logistic_number_return_update);
  59. $orderIssue->syncRejectingStatus(); // 问题件同步订单状态
  60. return OrderIssueRejectedBill::query()->with('rejectedBill')
  61. ->where('order_issue_id',$orderIssue->id)
  62. ->where('logistic_number_return',$logistic_number_return)->first() ?? false;
  63. }
  64. /**
  65. * 退回件同步问题件
  66. * @param RejectedBill|Controller $rejectedBills
  67. * @return void
  68. */
  69. public function syncOrderIssue($rejectedBills)
  70. {
  71. if(!$rejectedBills)return;
  72. if(is_array($rejectedBills)){
  73. foreach ($rejectedBills as $rejectedBill) {
  74. $rejectedBill->syncOrderIssue();
  75. }
  76. return;
  77. }
  78. $rejectedBills->syncOrderIssue();
  79. }
  80. /**
  81. * 问题件同步退回件
  82. * @param OrderIssue $orderIssue
  83. */
  84. public function syncRejectedBill($orderIssue)
  85. {
  86. if(!$orderIssue)return;
  87. $order_packages = $orderIssue->order->packages ?? collect();
  88. if(!$order_packages)return;
  89. $logistic_number_return = RejectedBill::query()->whereIn('logistic_number_return',$order_packages->map(function($rejectedBill){
  90. return $rejectedBill->logistic_number_return;
  91. }))->get();
  92. $orderIssue->joinRejectedBill($logistic_number_return);
  93. $this->syncOrderIssueRejectingStatus($orderIssue);
  94. }
  95. /**
  96. * 问题件更新退单状态
  97. * @param OrderIssue|Controller $order_issues
  98. */
  99. public function syncOrderIssueRejectingStatus($order_issues)
  100. {
  101. /**@var OrderIssue $orderIssue */
  102. if(!$order_issues)return;
  103. if(is_array($order_issues)){
  104. foreach ($order_issues as $orderIssue) {
  105. $orderIssue->syncRejectingStatus();
  106. }
  107. return;
  108. }
  109. $order_issues->syncRejectingStatus();
  110. }
  111. /**
  112. * 根据问题件信息
  113. * @param RejectedBill|Controller $rejectedBills
  114. */
  115. public function updateByOrderIssue($rejectedBills)
  116. {
  117. if(!$rejectedBills)return;
  118. if(is_array($rejectedBills)){
  119. foreach ($rejectedBills as $rejectedBill) {
  120. $rejectedBill->syncOrderInfo();
  121. }
  122. return;
  123. }
  124. $rejectedBills->syncOrderInfo();
  125. }
  126. }