WorkOrderLossService.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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. */
  17. private $logService;
  18. private $detailService;
  19. private $issueTypeService;
  20. public function __construct()
  21. {
  22. parent::__construct();
  23. $this->logService = app('WorkOrderLogService');
  24. $this->detailService = app('WorkOrderDetailService');
  25. $this->issueTypeService = app('OrderIssueTypeService');
  26. }
  27. /*
  28. * 快递丢件处理流程
  29. * 1: 创建 (限定宝时创建)
  30. * 2: 商家填充商品信息
  31. * 3: 宝时终审
  32. */
  33. // 创建
  34. public function store($params)
  35. {
  36. $orderIssueType = $this->issueTypeService->firstOrCreate(['name' => '快递丢件']);
  37. $order = $this->syncOrder($params['order_no']);
  38. $workOrder = $this->createAndNotification($order, $orderIssueType, $params['remark'] ?? '','宝时创建');
  39. $detail = $this->detailService->createWorkOrderDetail($workOrder, $params);
  40. $workOrder->change('货主处理','宝时创建','');
  41. $detail->change('货主处理','宝时创建','');
  42. $this->logService->createLog($detail, '创建', '创建工单');
  43. }
  44. // 商家填充商品信息
  45. public function ownerFillDetail(WorkOrderDetail $detail,$params)
  46. {
  47. $this->detailService->fillLossDetail($detail, $params);
  48. $detail->workOrder->clearWorkOrderStatus();
  49. $detail->change('宝时终审','待终审','货主处理');
  50. $detail->workOrder->change('宝时终审','待终审','货主处理');
  51. $this->logService->createLog($detail, '处理', '填充丢件信息');
  52. }
  53. // 宝时审核
  54. public function baoShiReviewLoss(WorkOrderDetail $detail,$params)
  55. {
  56. $this->logService->createLog($detail, '完结', '宝时完结');
  57. $this->detailService->updateLossDetail($detail,$params);
  58. $detail->change('完成','完结',"宝时终审");
  59. $detail->workOrder->change('完成','完结',"宝时终审");
  60. $this->detailService->endDetail($detail);
  61. }
  62. }