WorkOrderProcessLogController.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Services\WorkOrderProcessLogService;
  4. use App\Services\WorkOrderService;
  5. use App\WorkOrder;
  6. use App\WorkOrderDetail;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Support\Facades\Gate;
  9. class WorkOrderProcessLogController extends Controller
  10. {
  11. private $service;
  12. private $workOrderService;
  13. public function __construct(WorkOrderProcessLogService $service,
  14. WorkOrderService $workOrderService)
  15. {
  16. $this->service = $service;
  17. $this->workOrderService = $workOrderService;
  18. }
  19. public function storeApi(Request $request): array
  20. {
  21. if (Gate::denies('订单管理-工单处理-宝时编辑') ||
  22. Gate::denies('订单管理-工单处理-承运商编辑')) {
  23. return ['success' => false, 'message' => '没有对应的权限'];
  24. }
  25. if (!$request->has(['id', 'content'])) {
  26. return ['success' => false, 'message' => '参数缺失'];
  27. }
  28. /** @var WorkOrder $workOrder */
  29. $workOrder = WorkOrder::query()->where('status', '!=', 5)->find($request->id);
  30. if (!$workOrder) {
  31. return ['success' => false, 'message' => '找不到对应的工单,或对应的工单已完结'];
  32. }
  33. /** @var WorkOrderDetail $detail */
  34. $detail = $workOrder->details()->where('order_issue_type_id', $workOrder->order_issue_type_id)
  35. ->whereIn('status', [1, 2, 3, 4, 5])
  36. ->orderByDesc('created_at')->first();
  37. if (!$detail) {
  38. return ['success' => false, 'message' => '工单当前没有待处理的项'];
  39. }
  40. $data = $this->service->createProcessLog($detail, $request->all());
  41. return ['success' => true, 'data' => $data];
  42. }
  43. public function logisticApi(Request $request): array
  44. {
  45. if (Gate::denies('订单管理-工单处理-承运商编辑')) {
  46. return ['success' => false, 'message' => '没有对应的权限'];
  47. }
  48. if (!$request->has(['id', 'content'])) {
  49. return ['success' => false, 'message' => '参数缺失'];
  50. }
  51. /** @var WorkOrder $workOrder */
  52. $workOrder = WorkOrder::query()->where('status', '!=', 5)->find($request->id);
  53. if (!$workOrder) {
  54. return ['success' => false, 'message' => '找不到对应的工单,或对应的工单已完结'];
  55. }
  56. /** @var WorkOrderDetail $detail */
  57. $detail = $workOrder->details()->where('order_issue_type_id', $workOrder->order_issue_type_id)
  58. ->whereIn('status', [1, 2, 3, 4, 5])
  59. ->orderByDesc('created_at')->first();
  60. if (!$detail) {
  61. return ['success' => false, 'message' => '工单当前没有待处理的项'];
  62. }
  63. $data = $this->service->createProcessLog($detail, $request->all());
  64. return ['success' => true, 'data' => $data];
  65. }
  66. public function baoShiStoreApi(Request $request): array
  67. {
  68. if (Gate::denies('订单管理-工单处理-承运商编辑')) {
  69. return ['success' => false, 'message' => '没有对应的权限'];
  70. }
  71. if (!$request->has(['id', 'content'])) {
  72. return ['success' => false, 'message' => '参数缺失'];
  73. }
  74. /** @var WorkOrder $workOrder */
  75. $workOrder = WorkOrder::query()->where('status', '!=', 5)->find($request->id);
  76. if (!$workOrder) {
  77. return ['success' => false, 'message' => '找不到对应的工单,或对应的工单已完结'];
  78. }
  79. /** @var WorkOrderDetail $detail */
  80. $detail = $workOrder->details()->where('order_issue_type_id', $workOrder->order_issue_type_id)
  81. ->whereIn('status', [1, 2, 3, 4, 5])
  82. ->orderByDesc('created_at')->first();
  83. if (!$detail) {
  84. return ['success' => false, 'message' => '工单当前没有待处理的项'];
  85. }
  86. $data = $this->service->createProcessLog($detail, $request->all());
  87. return ['success' => true, 'data' => $data];
  88. }
  89. public function batchStoreApi(Request $request): array
  90. {
  91. if (Gate::denies('订单管理-工单处理-宝时编辑') ||
  92. Gate::denies('订单管理-工单处理-承运商编辑')) {
  93. return ['success' => false, 'message' => '没有对应的权限'];
  94. }
  95. if ($request->has(['ids', 'content'])) {
  96. return ['success' => false, 'message' => '参数缺失'];
  97. }
  98. $workOrders = WorkOrder::query()->where('status', '!=', 5)->find($request->ids);
  99. if (count($workOrders) < count($request->ids)) {
  100. return ['success' => false, 'message' => '参数异常'];
  101. }
  102. $data = $this->service->batchCreateProcessLog($workOrders, $request->all());
  103. return ['success' => true, 'data' => $data];
  104. }
  105. }