WorkOrderProcessLogController.php 5.6 KB

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