OrderIssueRejectedBillService.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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 $orderRejectedBillRelationService;
  12. public function __construct(OrderRejectedBillRelationService $orderRejectedBillRelationService)
  13. {
  14. $this->orderRejectedBillRelationService = $orderRejectedBillRelationService;
  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 $orderIssue, $logistic_number_return)
  23. {
  24. OrderIssueRejectedBill::query()->create(
  25. ['order_id' => $orderIssue->order_id,'order_issue_id' => $orderIssue->id,'logistic_number_return' => $logistic_number_return]
  26. );
  27. $this->orderRejectedBillRelationService->orderSyncRejectedBill($orderIssue->order);
  28. return OrderIssueRejectedBill::query()->with('rejectedBill.items')
  29. ->where('order_issue_id', $orderIssue->id)
  30. ->where('logistic_number_return', $logistic_number_return)->first() ?? false;
  31. }
  32. /**
  33. * 删除连接
  34. * @param OrderIssue $orderIssue
  35. * @param $logistic_number_return
  36. * @return boolean
  37. */
  38. public function unJoinRejectedBill(OrderIssue $orderIssue, $logistic_number_return): bool
  39. {
  40. OrderIssueRejectedBill::query()
  41. ->where('order_id', $orderIssue->order_id)
  42. ->where('logistic_number_return', $logistic_number_return)->delete();
  43. $this->orderRejectedBillRelationService->orderSyncRejectedBill($orderIssue->order);
  44. if ($orderIssue->rejectedBills()->count() == 0) {
  45. $orderIssue->update(['is_new_rejecting' => '无']);
  46. $orderIssue->orderDetail()->update(['is_new_rejecting' => '无']);
  47. }
  48. return true;
  49. }
  50. /**
  51. * 修改连接
  52. * @param OrderIssue $orderIssue
  53. * @param $logistic_number_return
  54. * @param $logistic_number_return_update
  55. * @return null|boolean|Builder|Model|object
  56. */
  57. public function reviseJoinRejectedBill(OrderIssue $orderIssue, $logistic_number_return, $logistic_number_return_update)
  58. {
  59. OrderIssueRejectedBill::query()->where('logistic_number_return' , $logistic_number_return)
  60. ->update(['logistic_number_return'=>$logistic_number_return_update]);
  61. $this->orderRejectedBillRelationService->orderSyncRejectedBill($orderIssue->order);
  62. return OrderIssueRejectedBill::query()->with('rejectedBill')
  63. ->where('order_issue_id', $orderIssue->id)
  64. ->where('logistic_number_return', $logistic_number_return_update)->first() ?? false;
  65. }
  66. /**
  67. * 退回件同步问题件
  68. * @param RejectedBill|Controller $rejectedBills
  69. * @return void
  70. */
  71. public function syncOrderIssue($rejectedBills)
  72. {
  73. if (!$rejectedBills) return;
  74. if (is_array($rejectedBills)) {
  75. foreach ($rejectedBills as $rejectedBill) {
  76. $this->orderRejectedBillRelationService->rejectedBillSyncOrder($rejectedBill);
  77. }
  78. return;
  79. }
  80. $this->orderRejectedBillRelationService->rejectedBillSyncOrder($rejectedBills);
  81. }
  82. }