middleware('checkUserPermission'); $this->studentService = $studentService; } /** * 列表 * @param Request $request * * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Prettus\Repository\Exceptions\RepositoryException */ public function index(Request $request) { $students = $this->studentService->handleList($request); return $this->response->success($students); } /** * 新增 * @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, [ 'truename' => 'required', 'account' => 'required', 'sex' => 'sometimes', 'mobile' => 'nullable|mobile', 'email' => 'nullable|email', 'password' => 'nullable|min:6', 'grade_id' => 'required|integer', ], [ 'truename' => '姓名', 'account' => '学号', 'sex' => '性别', 'mobile' => '手机号', 'email' => '邮箱', 'password' => '密码', 'grade_id' => '班级', 'status' => '状态', ]); if (Admin::query()->where('username', $data['account'])->exists()) abort(ResponseCodeEnum::SERVICE_OPERATION_ERROR, '该账号已经存在'); if (!$data['password']) $data['password'] = $data['account']; $student = $this->studentService->handleStore($data); return $this->response->created($student, '创建成功'); } /** * 详情 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource */ public function show(Request $request) { $this->validate($request, ['id' => 'required|integer']); $student = $this->studentService->handleProfile($request->get('id')); return $this->response->success($student); } /** * 更新 * @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', 'truename' => 'required', 'sex' => 'sometimes', 'mobile' => 'nullable|mobile', 'email' => 'nullable|email', 'grade_id' => 'required|integer', ], [ 'truename' => '姓名', 'sex' => '性别', 'mobile' => '手机号', 'email' => '邮箱', 'grade_id' => '班级', 'status' => '状态', ]); $student = $this->studentService->handleUpdate($data); return $this->response->success($student, '更新成功'); } /** * 删除 * @param Request $request */ public function destroy(Request $request) { $this->validate($request, ['id' => 'required|integer']); $re = $this->studentService->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 import(Request $request) { $this->validate($request, [ 'resource_id' => 'required|integer', ]); $resource = Resource::query()->where('id', $request->get('resource_id'))->first(); if (!$resource) { abort(ResponseCodeEnum::SERVICE_OPERATION_ERROR, '找不到该资源'); } $this->dispatch(new ImportStudentJob($resource, login_admin_id())); return $this->response->ok('导入成功'); } /** * 选择 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource */ public function selectOptions(Request $request) { $data = $this->studentService->handleSelectOptions($request); return $this->response->success($data); } /** * 修改密码 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Illuminate\Validation\ValidationException * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function updatePassword(Request $request) { $data = $this->validateData($request, [ 'id' => 'required|integer', 'password' => 'required|min:6', ], [ 'password' => '密码', ]); $student = $this->studentService->handleUpdate($data); return $this->response->success($student, '更新成功'); } }