middleware('checkUserPermission'); $this->taskService = $taskService; } /** * 列表 * @param Request $request * * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Prettus\Repository\Exceptions\RepositoryException */ public function index(Request $request) { $tasks = $this->taskService->handleList($request); return $this->response->success($tasks); } /** * 新增 * @param Request $request * * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function store(Request $request) { $data = $this->validateData($request, [ 'name' => 'required|string|max:300', 'type_ids' => 'nullable|array', 'message_ids' => 'nullable|array', 'start_date' => 'required|date', 'end_date' => 'nullable|date', 'category_id' => 'nullable|integer', 'rate' => 'required|integer', ], [ 'name' => '任务名', 'type_id' => '来源id', 'message_ids' => '指定对别的数据ids', 'start_date' => '投诉开始日期', 'end_date' => '投诉结束日期', 'category_id' => '分类id', 'rate' => '相似率', ]); $task = $this->taskService->handleStore($data); $this->dispatch(new AnalysisMessageJob($task->id)); return $this->response->created($task, '创建成功'); } /** * 详情 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource */ public function show(Request $request) { $this->validate($request, ['id' => 'required|integer']); $task = $this->taskService->handleProfile($request->get('id')); return $this->response->success($task); } /** * 更新 * @param Request $request * * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function update(Request $request) { $data = $this->validateData($request, [ 'id' => 'required|integer', 'name' => 'required|string|max:300', 'type_ids' => 'nullable|array', 'message_ids' => 'nullable|array', 'start_date' => 'required|date', 'end_date' => 'nullable|date', 'category_id' => 'nullable|integer', 'rate' => 'required|integer', ], [ 'name' => '任务名', 'type_id' => '来源id', 'message_ids' => '指定对别的数据ids', 'start_date' => '投诉开始日期', 'end_date' => '投诉结束日期', 'category_id' => '分类id', 'rate' => '相似率', ]); $task = $this->taskService->handleUpdate($data); $this->dispatch(new AnalysisMessageJob($task->id)); return $this->response->success($task, '更新成功'); } /** * 删除 * @param Request $request */ public function destroy(Request $request) { $this->validate($request, ['id' => 'required|integer']); $re = $this->taskService->handleDelete($request->get('id')); if ($re) { return $this->response->ok('删除成功'); } return $this->response->fail('删除失败'); } /** * 重试分析 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * @throws \Illuminate\Validation\ValidationException */ public function retry(Request $request) { $this->validate($request, [ 'id' => 'required' ]); $id = $request->get('id'); $this->dispatch(new AnalysisMessageJob($id)); return $this->response->ok('操作成功'); } /** * 推入主库 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Illuminate\Validation\ValidationException */ public function merge(Request $request) { $this->validate($request, ['id' => 'required|integer']); $id = $request->get('id'); $this->taskService->handleMerge($id); return $this->response->ok('操作成功'); } /** * 撤销合并 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Illuminate\Validation\ValidationException */ public function cancelMerge(Request $request) { $this->validate($request, ['id' => 'required|integer']); $id = $request->get('id'); $this->taskService->handleCancelMerge($id); return $this->response->ok('操作成功'); } /** * 导出数据 * @param Request $request * @return \Symfony\Component\HttpFoundation\BinaryFileResponse * @throws \Illuminate\Validation\ValidationException */ public function export(Request $request) { $data = $this->validateData($request, [ 'ids' => 'required|array', ]); $file_name = time() . '.xlsx'; return Excel::download(new TaskExport($data), $file_name); } }