middleware('checkUserPermission'); $this->importRecordService = $importRecordService; } /** * 列表 * @param Request $request * * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Prettus\Repository\Exceptions\RepositoryException */ public function index(Request $request) { $importRecords = $this->importRecordService->handleList($request); return $this->response->success($importRecords); } /** * 新增 * @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:200', 'type' => 'required|in:1,2,3', 'body' => 'sometimes', 'resource_id' => 'required|integer', 'status' => 'required|integer', ], [ ]); $data['admin_id'] = login_admin_id(); $data['status'] = ImportStatusEnum::IMPORT_WAIT; $importRecord = $this->importRecordService->handleStore($data); $this->dispatch(new ImportMessageJob($importRecord['id'], login_admin())); return $this->response->ok('添加成功'); } /** * 详情 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource */ public function show(Request $request) { $this->validate($request, ['id' => 'required|integer']); $importRecord = $this->importRecordService->handleProfile($request->get('id')); return $this->response->success($importRecord); } /** * 重试导入 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * @throws \Illuminate\Validation\ValidationException */ public function retryImport(Request $request) { $this->validate($request, [ 'id' => 'required' ]); $id = $request->get('id'); $re = Cache::get('importRecord:retryImport:' . $id, function () use ($id) { Cache::put('importRecord:retryImport:' . $id, 0, Carbon::now()->addMinutes(5)); return true; }); if (!$re) abort(ResponseCodeEnum::SERVICE_OPERATION_ERROR, '您操作太频繁了'); $this->dispatch(new ImportMessageJob($id, login_admin())); return $this->response->ok('操作成功'); } /** * 删除 * @param Request $request */ public function destroy(Request $request) { $this->validate($request, ['id' => 'required|integer']); $re = $this->importRecordService->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\JsonResource * @throws \Illuminate\Validation\ValidationException */ public function merge(Request $request) { $this->validate($request, ['id' => 'required|integer']); $id = $request->get('id'); $this->importRecordService->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->importRecordService->handleCancelMerge($id); return $this->response->ok('操作成功'); } /** * 模版 * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource */ public function importTemplateSelectOptions() { $data = [ [ 'id' => 1, 'name' => '通用模版一', 'url' => config('app.url') . '/template/manage/1.xlsx', ], [ 'id' => 2, 'name' => '12345模版', 'url' => config('app.url') . '/template/manage/2.xlsx', ], [ 'id' => 3, 'name' => '信访模版', 'url' => config('app.url') . '/template/manage/3.xlsx', ] ]; return $this->response->success($data); } }