middleware('checkUserPermission'); $this->messageService = $messageService; } /** * 列表 * @param Request $request * * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Prettus\Repository\Exceptions\RepositoryException */ public function index(Request $request) { $messages = $this->messageService->handleList($request); return $this->response->success($messages); } /** * 新增 * @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, [ 'type_id' => 'required|integer', 'category_id' => 'required|integer', 'name' => 'required|string|max:300', // 'sex' => 'required|in:0,1,2', // 'id_card' => 'nullable|id_card', 'mobile' => 'required|mobile', // 'address' => 'nullable', 'complain_date' => 'required|date', // 'warn_type_id' => 'required|integer', // 'goal' => 'nullable', 'body' => 'required|string', 'remark' => 'nullable', 'deal_department_id' => 'required|integer', 'deal_status' => 'required|integer', 'deal_time' => 'nullable', 'deal_idea' => 'nullable', 'deal_evaluation' => 'nullable', 'deal_limit_day' => 'required|integer', 'status' => 'required|integer', ], [ 'type_id' => '来源', 'category_id' => '分类', 'name' => '投诉人姓名', 'sex' => '投诉人性别', 'id_card' => '投诉人身份证号', 'mobile' => '投诉人手机号', 'address' => '投诉人地址', 'complain_date' => '投诉日期', 'warn_type_id' => '紧急类型', 'goal' => '投诉目的', 'body' => '投诉内容', 'remark' => '备注', 'status' => '状态', 'deal_department_id' => '处理部门', 'deal_status' => '处理状态', 'deal_time' => '处理时间', 'deal_idea' => '处理意见', 'deal_evaluation' => '满意度', 'deal_limit_day' => '处理限期', 'import_record_id' => '导入记录id', ]); if ($data['deal_status'] == DealStatusEnum::OK) { $this->validateData($request, [ 'deal_time' => 'required', 'deal_idea' => 'required', 'deal_evaluation' => 'required|integer', 'deal_file_ids' => 'nullable|array', ], [ 'deal_time' => '处理时间', 'deal_idea' => '处理意见', 'deal_evaluation' => '满意度', 'deal_file_ids' => '处理完结附件', ]); } else { $data['deal_evaluation'] = 0; } $message = $this->messageService->handleStore($data); //自动分析 $this->dispatch(new AutoAnalysisMessageJob($message->id)); return $this->response->created($message, '创建成功'); } /** * 详情 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource */ public function show(Request $request) { $this->validate($request, ['id' => 'required|integer']); $message = $this->messageService->handleProfile($request->get('id')); return $this->response->success($message); } /** * 更新 * @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', 'type_id' => 'required|integer', 'category_id' => 'required|integer', 'name' => 'required|string|max:300', // 'sex' => 'required|in:0,1,2', // 'id_card' => 'nullable|id_card', 'mobile' => 'required|mobile', // 'address' => 'nullable', 'complain_date' => 'required|date', // 'warn_type_id' => 'required|integer', // 'goal' => 'nullable', 'body' => 'required|string', 'remark' => 'nullable', 'deal_status' => 'required|integer', 'deal_department_id' => 'required|integer', 'deal_time' => 'nullable', 'deal_idea' => 'nullable', 'deal_file_ids' => 'nullable|array', 'deal_evaluation' => 'nullable', 'deal_limit_day' => 'required|integer', 'status' => 'required|integer', ], [ 'type_id' => '来源', 'category_id' => '分类', 'name' => '投诉人姓名', 'sex' => '投诉人性别', 'id_card' => '投诉人身份证号', 'mobile' => '投诉人手机号', 'address' => '投诉人地址', 'complain_date' => '投诉日期', 'warn_type_id' => '紧急类型', 'goal' => '投诉目的', 'body' => '投诉内容', 'remark' => '备注', 'status' => '状态', 'deal_status' => '处理状态', 'deal_department_id' => '处理部门', 'deal_time' => '处理时间', 'deal_idea' => '处理意见', 'deal_evaluation' => '满意度', 'deal_limit_day' => '处理限期', 'deal_file_ids' => '处理完结附件', 'import_record_id' => '导入记录id', ]); if ($data['deal_status'] == DealStatusEnum::OK) { $this->validateData($request, [ 'deal_time' => 'required', 'deal_idea' => 'required', 'deal_evaluation' => 'required|integer', ], [ 'deal_time' => '处理时间', 'deal_idea' => '处理意见', 'deal_evaluation' => '满意度', ]); } else { $data['deal_evaluation'] = 0; } $message = $this->messageService->handleUpdate($data); return $this->response->success($message, '更新成功'); } /** * 删除 * @param Request $request */ public function destroy(Request $request) { $this->validate($request, ['id' => 'required|integer']); $re = $this->messageService->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 batchDelete(Request $request) { $this->validate($request, ['ids' => 'required|array']); $this->messageService->handleBatchDelete($request->get('ids')); return $this->response->ok('删除成功'); } /** * 分配任务 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource */ public function allot(Request $request) { $data = $this->validateData($request, [ 'id' => 'required|integer', 'deal_department_id' => 'required|integer', 'deal_admin_id' => 'required|integer', ], [ 'id' => 'id', 'deal_department_id' => '部门id', 'deal_admin_id' => '管理员id', ]); $this->messageService->handleAllot($data['id'], $data['deal_department_id'], $data['deal_admin_id']); return $this->response->ok('操作成功'); } /** * 批量分配 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Illuminate\Validation\ValidationException */ public function batchAllot(Request $request) { $data = $this->validateData($request, [ 'ids' => 'required|array', 'deal_department_id' => 'required|integer', 'deal_admin_id' => 'required|integer', ], [ 'id' => 'id', 'deal_department_id' => '部门id', 'deal_admin_id' => '管理员id', ]); $this->messageService->handleBatchAllot($data['ids'], $data['deal_department_id'], $data['deal_admin_id']); return $this->response->ok('操作成功'); } /** * 办结 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Illuminate\Validation\ValidationException */ public function finish(Request $request) { $data = $this->validateData($request, [ 'id' => 'required|integer', 'deal_idea' => 'required', 'deal_evaluation' => 'required|integer', 'deal_file_ids' => 'nullable|array', ], [ 'id' => 'id', 'deal_idea' => '意见', 'deal_evaluation' => '满意度', 'deal_file_ids' => '附件', ]); $this->messageService->handleFinish($data); return $this->response->ok('操作成功'); } /** * 批量办结 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Illuminate\Validation\ValidationException */ public function batchFinish(Request $request) { $data = $this->validateData($request, [ 'ids' => 'required|array', 'deal_idea' => 'required', 'deal_evaluation' => 'required|integer', ], [ 'ids' => 'id', 'deal_idea' => '意见', 'deal_evaluation' => '满意度', ]); $this->messageService->handleBatchFinish($data); return $this->response->ok('操作成功'); } /** * 转办 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource */ public function transfer(Request $request) { $data = $this->validateData($request, [ 'ids' => 'required|array', 'deal_department_id' => 'required|integer', 'deal_admin_id' => 'required|integer', ], [ 'id' => 'id', 'deal_department_id' => '部门id', 'deal_admin_id' => '管理员id', ]); $this->messageService->handleTransfer($data['id'], $data['deal_department_id'], $data['deal_admin_id']); return $this->response->ok('操作成功'); } // /** // * 转办 // * @param Request $request // * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource // * @throws \Illuminate\Validation\ValidationException // */ // public function batchTransfer(Request $request) // { // $data = $this->validateData($request, [ // 'ids' => 'required|array', // 'deal_department_id' => 'required|integer', // 'deal_admin_id' => 'required|integer', // ], [ // 'id' => 'id', // 'deal_department_id' => '部门id', // 'deal_admin_id' => '管理员id', // ]); // // $this->messageService->handleBatchTransfer($data['ids'], $data['deal_department_id'], $data['deal_admin_id']); // // return $this->response->ok('操作成功'); // } /** * 多部门协助 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Illuminate\Validation\ValidationException */ public function applicationMultiDepartment(Request $request) { $data = $this->validateData($request, [ 'id' => 'required|integer', 'reason' => 'required', 'multiData' => 'required|array', 'multiData.*.department_id' => 'required|integer', 'multiData.*.limit_day' => 'required|integer', 'multiData.*.body' => 'required', 'multiData.*.claim' => 'nullable', ], [ 'reason' => '原因', 'multiData' => '多部门协调数据', ]); $this->messageService->handleApplicationMultiDepartment($data); return $this->response->ok('操作成功'); } /** * 审核 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Illuminate\Validation\ValidationException */ public function checkApplicationMultiDepartment(Request $request) { $data = $this->validateData($request, [ 'id' => 'required|integer', 'reason' => 'required', // 'check_status' => 'required:in:2,3', 'multiData' => 'required|array', 'multiData.*.department_id' => 'required|integer', 'multiData.*.limit_day' => 'required|integer', 'multiData.*.body' => 'required', 'multiData.*.claim' => 'nullable', ], [ 'reason' => '原因', 'multiData' => '多部门协调数据', ]); $this->messageService->handleCheckApplicationMultiDepartment($data); return $this->response->ok('操作成功'); } /** * 受理 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Illuminate\Validation\ValidationException */ public function accept(Request $request) { $data = $this->validateData($request, [ 'id' => 'required|integer', ], [ 'id' => 'id', ]); $this->messageService->handleAccept($data); return $this->response->ok('操作成功'); } /** * 相似人聚合 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource */ public function similarPeople(Request $request) { $data = $this->messageService->handleSimilarPeople($request); return $this->response->success($data); } /** * 相似地址 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource */ public function similarAddress(Request $request) { $data = $this->messageService->handleSimilarAddress($request); return $this->response->success($data); } /** * 相似行业 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource */ public function similarType(Request $request) { $data = $this->messageService->handleSimilarType($request); return $this->response->success($data); } /** * 导出相似人 * @param Request $request * @return \Symfony\Component\HttpFoundation\BinaryFileResponse * @throws \Illuminate\Validation\ValidationException */ public function exportSimilarPeople(Request $request) { $data = $this->validateData($request, [ 'ids' => 'required|array', ]); $file_name = time() . '.xlsx'; return Excel::download(new SimilarPeopleExport($data), $file_name); } /** * 相似地址 * @param Request $request * @return \Symfony\Component\HttpFoundation\BinaryFileResponse * @throws \Illuminate\Validation\ValidationException */ public function exportSimilarAddress(Request $request) { $data = $this->validateData($request, [ 'ids' => 'required|array', ]); $file_name = time() . '.xlsx'; return Excel::download(new SimilarAddressExport($data), $file_name); } /** * 相似类型 * @param Request $request * @return \Symfony\Component\HttpFoundation\BinaryFileResponse * @throws \Illuminate\Validation\ValidationException */ public function exportSimilarType(Request $request) { $data = $this->validateData($request, [ 'ids' => 'required|array', ]); $file_name = time() . '.xlsx'; return Excel::download(new SimilarTypeExport($data), $file_name); } /** * 相似案情 * @param Request $request * @return \Symfony\Component\HttpFoundation\BinaryFileResponse * @throws \Illuminate\Validation\ValidationException */ public function exportMessage(Request $request) { $data = $this->validateData($request, [ 'ids' => 'required|array', ]); $file_name = time() . '.xlsx'; return Excel::download(new SimilarBodyExport($data), $file_name); } /** * 相似数据 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Illuminate\Validation\ValidationException */ public function similar(Request $request) { $data = $this->validateData($request, [ 'id' => 'required|integer', ]); $lists = $this->messageService->handleSimilar($data); return $this->response->success($lists); } /** * 移除相似 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Illuminate\Validation\ValidationException */ public function removeSimilar(Request $request) { $data = $this->validateData($request, [ 'id' => 'required|integer', 'mids' => 'required|array', ]); $this->messageService->handleRemoveSimilar($data); return $this->response->ok('操作成功'); } /** * 聚合数据 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Illuminate\Validation\ValidationException */ public function checkSimilar(Request $request) { $data = $this->validateData($request, [ 'id' => 'required|integer', ]); $this->messageService->handleCheckSimilar($data); return $this->response->ok('操作成功'); } /** * 指挥交办数量查询--员工端小程序 * @param Request $request * * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function nums(Request $request) { $data = $this->messageService->nums($request); return $this->response->success($data); } }