OrderIssueRejectedBillService.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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) $orderIssue->update(['is_new_rejecting' => '无']);
  45. return true;
  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 $orderIssue, $logistic_number_return, $logistic_number_return_update)
  55. {
  56. OrderIssueRejectedBill::query()->where('logistic_number_return' , $logistic_number_return)
  57. ->update(['logistic_number_return'=>$logistic_number_return_update]);
  58. $this->orderRejectedBillRelationService->orderSyncRejectedBill($orderIssue->order);
  59. return OrderIssueRejectedBill::query()->with('rejectedBill')
  60. ->where('order_issue_id', $orderIssue->id)
  61. ->where('logistic_number_return', $logistic_number_return_update)->first() ?? false;
  62. }
  63. /**
  64. * 退回件同步问题件
  65. * @param RejectedBill|Controller $rejectedBills
  66. * @return void
  67. */
  68. public function syncOrderIssue($rejectedBills)
  69. {
  70. if (!$rejectedBills) return;
  71. if (is_array($rejectedBills)) {
  72. foreach ($rejectedBills as $rejectedBill) {
  73. $this->orderRejectedBillRelationService->rejectedBillSyncOrder($rejectedBill);
  74. }
  75. return;
  76. }
  77. $this->orderRejectedBillRelationService->rejectedBillSyncOrder($rejectedBills);
  78. }
  79. }