WorkOrderProcessLogController.php 5.6 KB

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