| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- <?php
- namespace App\Http\Controllers;
- use App\Filters\WorkOrderFilters;
- use App\Logistic;
- use App\OrderIssue;
- use App\OrderIssueType;
- use App\Services\WorkOrderService;
- use App\WorkOrder;
- use Illuminate\Database\Eloquent\Builder;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Gate;
- class WorkOrderController extends Controller
- {
- public function index(Request $request, WorkOrderFilters $filters, WorkOrderService $service)
- {
- if (Gate::denies('订单管理-工单处理-查询')) return redirect('/');
- $workOrders = WorkOrder::query()->filter($filters)->defaultWith()->orderBy('created_at')->orderByDesc('status')->paginate($request['paginate'] ?? 50);
- $logistics = Logistic::all();
- $orderIssueTypes = OrderIssueType::all();
- $service->tags($workOrders);
- return view('order.workOrder.index', compact('workOrders', 'logistics', 'orderIssueTypes'));
- }
- // 审核 api
- public function reviewApi(Request $request, WorkOrderService $service): array
- {
- if (Gate::denies('订单管理-工单处理-审核')) return ['success' => false, 'message' => '没有对应的编辑权限'];
- $workOrder = WorkOrder::query()->find($request['id']);
- return $service->review($workOrder);
- }
- // 批量审核 api
- public function batchReviewApi(Request $request,WorkOrderService $service): array
- {
- if(Gate::denies('订单管理-工单处理-审核'))return ['success' => false, 'message' => '没有对应的编辑权限'];
- if (WorkOrder::query()->whereIn('id',$request['ids'])->whereNotNull('review_at')->exists())
- return ['success' => false, 'message' => '选中的工单已有审核完成,刷新页面重试'];
- $work_orders = WorkOrder::query()->whereIn('id',$request['ids'])->get();
- $service->tags($work_orders);
- return $service->batchReview($work_orders);
- }
- // 生成问题件 api
- public function buildOrderIssueApi(Request $request, WorkOrderService $service): array
- {
- if (Gate::denies('订单管理-订单问题件生成'))
- return ['success' => false, 'message' => '没有对应权限'];
- $work_orders = WorkOrder::query()->whereIn('id', $request['ids'])->get();
- if (count($work_orders) == 0) return ['success' => false, 'message' => '刷新当前页面重试'];
- if (OrderIssue::query()->whereIn('order_id',$work_orders->map(function($item){return $item['order_id'];}))->exists()){
- return ['success' => false, 'message' => '已有对应的问题件'];
- }
- $result = $service->buildOrderIssue($work_orders);
- if (!$result['success']) return $result;
- $workOrders = WorkOrder::query()->with(['type', 'creator', 'order' => function ($query) {
- /** @var $query Builder */
- $query->with('packages', 'issue', 'logistic');
- }, 'reviewer','issueType'])->whereIn( 'id',$request['ids'])->get();
- $service->tags($workOrders);
- return ['success' => true ,'data' => $workOrders];
- }
- // 创建工单 api
- public function storeApi(Request $request, WorkOrderService $service):array
- {
- if (Gate::denies('订单管理-订单-生成工单'))
- return ['success' => false, 'message' => '没有对应权限'];
- $params = $request['params'];
- if (count($params) == 0) return ['success' => false,'message' => '参数异常'];
- app('OrderService')->syncOrderByCodes(array_map(function($param){
- return $param['order_no'];
- },$params));
- return $service->build($request['params']);
- }
- // 修改问题类型
- public function updateIssueTypeApi(Request $request): array
- {
- if (Gate::denies('订单管理-工单处理-审核'))
- return ['success' => false,'message' => '没有对应权限'];
- WorkOrder::query()->where('id',$request['id'])->update(['order_issue_type_id' => $request['type_id']]);
- return ['success' => true];
- }
- }
|