WorkOrderLossService.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace App\Services;
  3. use App\WorkOrder;
  4. use App\WorkOrderDetail;
  5. /**
  6. * 处理 快递丢件 工单
  7. * Class WorkOrderLossService
  8. * @package App\Services
  9. */
  10. class WorkOrderLossService extends WorkOrderService
  11. {
  12. /**
  13. * @var WorkOrderLogService $logService
  14. * @var WorkOrderDetailService $detailService
  15. * @var OrderIssueTypeService $issueTypeService
  16. * @var OrderService $orderService
  17. * @var WorkOrderService $workOrderService
  18. */
  19. private $logService;
  20. private $detailService;
  21. private $issueTypeService;
  22. private $orderService;
  23. private $workOrderService;
  24. public function __construct()
  25. {
  26. parent::__construct();
  27. $this->logService = app('WorkOrderLogService');
  28. $this->detailService = app('WorkOrderDetailService');
  29. $this->issueTypeService = app('OrderIssueTypeService');
  30. $this->orderService = app('OrderService');
  31. $this->workOrderService = app('WorkOrderService');
  32. }
  33. /*
  34. * 快递丢件处理流程
  35. * 1: 创建 (限定宝时创建)
  36. * 2: 商家填充商品信息
  37. * 3: 宝时终审
  38. */
  39. // 创建
  40. public function store($params)
  41. {
  42. $orderIssueType = $this->issueTypeService->firstOrCreate(['name' => '快递丢件']);
  43. $order = $this->orderService->first(['code' => $params['order_no']]);
  44. $workOrder = $this->workOrderService->createAndNotification($order, $orderIssueType, $params['remark'] ?? '');
  45. $detail = $this->detailService->createWorkOrderDetail($workOrder, $params);
  46. $workOrder->changeStatus('货主处理');
  47. $detail->changeStatus('货主处理');
  48. $this->logService->createLog($detail, '创建', '创建工单');
  49. }
  50. // 商家填充商品信息
  51. public function ownerFillDetail($detail,$params)
  52. {
  53. $this->detailService->fillLossDetail($detail, $params);
  54. $detail->changeStatus('宝时终审');
  55. $detail->workOrder->changeStatus('宝时终审');
  56. $detail->workOrder->clearWorkOrderStatus();
  57. $this->logService->createLog($detail, '处理', '填充丢件信息');
  58. }
  59. // 宝时审核
  60. public function baoShiReviewLoss($detail,$params)
  61. {
  62. $this->logService->createLog($detail, '完结', '宝时完结');
  63. $this->detailService->updateLossDetail($detail,$params);
  64. $detail->changeStatus('完成');
  65. $detail->workOrder->changeStatus('完成');
  66. $this->detailService->endDetail($detail);
  67. }
  68. }