WorkOrderRelationRejectedBillController.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Order;
  4. use App\OrderIssueRejectedBill;
  5. use App\Services\OrderRejectedBillRelationService;
  6. use App\WorkOrder;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Support\Facades\Gate;
  9. class WorkOrderRelationRejectedBillController extends Controller
  10. {
  11. private $orderRejectedBillRelationService;
  12. public function __construct(OrderRejectedBillRelationService $orderRejectedBillRelationService)
  13. {
  14. $this->orderRejectedBillRelationService = $orderRejectedBillRelationService;
  15. }
  16. public function storeApi(Request $request): array
  17. {
  18. if (Gate::denies('订单管理-工单处理-宝时编辑') && Gate::denies('订单管理-工单处理-承运商编辑') && Gate::denies('订单管理-工单处理-商家编辑')) {
  19. return ['success' => false, 'message' => '没有对应权限'];
  20. } else if (!$request->has('order_id', 'logistic_number_return')) {
  21. return ['success' => false, 'message' => '参数异常'];
  22. }
  23. $order = Order::query()->with('issue')->where('id', $request->input('order_id'))->first();
  24. if (!$order) ['success' => false, 'message' => '参数异常'];
  25. $query = OrderIssueRejectedBill::query()->where('order_id', $request->input('order_id'))->where('logistic_number_return', $request->input('logistic_number_return'));
  26. $relation = $query->first();
  27. if (!$relation) {
  28. OrderIssueRejectedBill::query()->create(
  29. ['order_id' => $order->id, 'order_issue_id' => $order->issue->id ?? null, 'logistic_number_return' => $request->input('logistic_number_return')]
  30. );
  31. } else if ($order->issue ?? false) {
  32. $query->update(['order_issue_id' => $order->issue->id]);
  33. }
  34. $this->orderRejectedBillRelationService->orderSyncRejectedBill($order);
  35. $data = WorkOrder::query()->defaultWith()->where('order_id', $request->input('order_id'))->first();
  36. return ['success' => true, 'data' => $data];
  37. }
  38. public function destroyApi(Request $request): array
  39. {
  40. if (Gate::denies('订单管理-工单处理-宝时编辑') && Gate::denies('订单管理-工单处理-承运商编辑') && Gate::denies('订单管理-工单处理-商家编辑')) {
  41. return ['success' => false, 'message' => '没有对应权限'];
  42. } else if (!$request->has('order_id', 'logistic_number_return')) {
  43. return ['success' => false, 'message' => '参数异常'];
  44. }
  45. $order = Order::query()->with('issue')->where('id', $request->input('order_id'))->first();
  46. if (!$order) ['success' => false, 'message' => '参数异常'];
  47. $query = OrderIssueRejectedBill::query()->where('order_id', $request->input('order_id'))->where('logistic_number_return', $request->input('logistic_number_return'));
  48. $relation = $query->first();
  49. if (!$relation) {
  50. return ['success' => false, 'message' => '参数异常'];
  51. }
  52. $query->delete();
  53. $this->orderRejectedBillRelationService->orderSyncRejectedBill($order);
  54. $data = WorkOrder::query()->defaultWith()->where('order_id', $request->input('order_id'))->first();
  55. return ['success' => true, 'data' => $data];
  56. }
  57. public function resetRelationApi(Request $request): array
  58. {
  59. if (Gate::denies('订单管理-工单处理-宝时编辑') && Gate::denies('订单管理-工单处理-承运商编辑') && Gate::denies('订单管理-工单处理-商家编辑')) {
  60. return ['success' => false, 'message' => '没有对应权限'];
  61. } else if ($request->has('order_id', 'logistic_number_return', 'update_logistic_number_return')) {
  62. return ['success' => false, 'message' => '参数异常'];
  63. }
  64. $order = Order::query()->with('issue')->where('id', $request->input('order_id'))->first();
  65. if (!$order) ['success' => false, 'message' => '参数异常'];
  66. $query = OrderIssueRejectedBill::query()->where('order_id', $order->id)->where('logistic_number_return', $request->input('logistic_number_return'));
  67. $relation = $query->first();
  68. if (!$relation) {
  69. return ['success' => false, 'message' => '参数异常,刷新页面重试'];
  70. }
  71. $query->update(['logistic_number_return' => $request->input('update_logistic_number_return')]);
  72. $this->orderRejectedBillRelationService->orderSyncRejectedBill($order);
  73. $data = WorkOrder::query()->defaultWith()->where('order_id', $request->input('order_id'))->first();
  74. return ['success' => true, 'data' => $data];
  75. }
  76. }