WorkOrderCommoditiesController.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Services\WorkOrderCommoditiesService;
  4. use App\Services\WorkOrderDetailService;
  5. use App\Services\WorkOrderLogService;
  6. use App\Services\WorkOrderService;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Support\Facades\Gate;
  9. class WorkOrderCommoditiesController extends Controller
  10. {
  11. /**
  12. * @var WorkOrderCommoditiesService $service
  13. * @var WorkOrderDetailService $detailService
  14. * @var WorkOrderLogService $logService
  15. * @var WorkOrderService $workOrderService
  16. */
  17. private $service;
  18. private $detailService;
  19. private $logService;
  20. private $workOrderService;
  21. public function __construct()
  22. {
  23. $this->service = app(WorkOrderCommoditiesService::class);
  24. $this->detailService = app(WorkOrderDetailService::class);
  25. $this->logService = app(WorkOrderLogService::class);
  26. $this->workOrderService = app(WorkOrderService::class);
  27. }
  28. /**
  29. * 货主填充商品信息
  30. * @param Request $request
  31. * @return array
  32. */
  33. public function ownerUpdateCommoditiesApi(Request $request): array
  34. {
  35. if (Gate::denies('订单管理-工单处理-货主编辑')) {
  36. return ['success' => false, 'message' => '没有对应权限'];
  37. }
  38. $workOrder = $this->service->find($request->input('id'));
  39. if (!$workOrder) return ['success' => false, 'message' => '参数异常'];
  40. $this->service->updateWorkOrderCommoditiesByJsonArray($workOrder, $request->input('commodities'),'货主已处理');
  41. if(($workOrder->issueType->name ?? '') == '快递丢件'){
  42. $this->logService->createLog($workOrder,'处理','货主填充数据');
  43. $workOrder->changeStatus('宝时处理');
  44. }
  45. $workOrder->loadDefaultWith();
  46. return ['success' => true, 'data' => $workOrder];
  47. }
  48. /**
  49. * 承运商 填充 商品信息
  50. * @param Request $request
  51. * @return array
  52. */
  53. public function logisticUpdateCommoditiesApi(Request $request): array
  54. {
  55. if (Gate::denies('订单管理-工单处理-承运商编辑')) {
  56. return ['success' => false, 'message' => '没有对应权限'];
  57. }
  58. $workOrder = $this->workOrderService->find($request->input('id'));
  59. $detail = $this->detailService->find($request->input('detail_id'));
  60. if (!$workOrder) return ['success' => false, 'message' => '参数异常'];
  61. $this->service->updateWorkOrderCommoditiesByJsonArray($detail, $request->input('commodities'));
  62. $issueType = $workOrder->issueType->name ?? '';
  63. if (in_array($issueType,['破损','快递异常'])){
  64. $workOrder->changeStatus('宝时终审');
  65. $detail->changeStatus('宝时终审');
  66. $this->logService->createLog($detail,'处理','承运商处理');
  67. } else if (in_array($issueType,['拦截','信息更改'])){
  68. $workOrder->changeStatus('完成');
  69. $this->logService->createLog($detail,'完结','承运商完成');
  70. $this->detailService->endDetail($detail);
  71. }
  72. $workOrder->loadDefaultWith();
  73. return ['success' => true, 'data' => $workOrder];
  74. }
  75. /**
  76. * 宝时 填充工单信息
  77. * @param Request $request
  78. * @return array
  79. */
  80. public function baoShiUpdateCommoditiesApi(Request $request): array
  81. {
  82. if (Gate::denies('订单管理-工单处理-宝时编辑')) {
  83. return ['success' => false, 'message' => '没有对应权限'];
  84. }
  85. $workOrder = $this->workOrderService->find($request->input('id'));
  86. $detail = $this->detailService->find($request->input('detail_id'));
  87. if (!$workOrder || !$detail) return ['success' => false, 'message' => '参数异常'];
  88. $issue_type = $workOrder->issueType->name ?? '';
  89. $this->service->updateWorkOrderCommoditiesByJsonArray($detail, $request->input('commodities'),'完结',true);
  90. if ($issue_type == '错漏发') {
  91. $workOrder->changeStatus('完成');
  92. $this->detailService->endDetail($detail);
  93. }
  94. $workOrder->loadDefaultWith();
  95. return ['success' => true, 'data' => $workOrder];
  96. }
  97. }