123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600 |
- <?php
- namespace App\Http\Controllers\Admin\Manage;
- use App\Exports\Manage\SimilarAddressExport;
- use App\Exports\Manage\SimilarBodyExport;
- use App\Exports\Manage\SimilarPeopleExport;
- use App\Exports\Manage\SimilarTypeExport;
- use App\Http\Controllers\Controller;
- use App\Jobs\Manage\AutoAnalysisMessageJob;
- use App\Repositories\Enums\Manage\DealStatusEnum;
- use App\Services\Manage\MessageService;
- use Carbon\Carbon;
- use Illuminate\Http\Request;
- use Maatwebsite\Excel\Facades\Excel;
- /**
- * 信息管理
- */
- class MessageController extends Controller
- {
- /**
- * @var MessageService
- */
- private $messageService;
- /**
- * MessageController constructor.
- *
- * @param MessageService $messageService
- */
- public function __construct(MessageService $messageService)
- {
- parent::__construct();
- $this->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);
- }
- }
|