service = $service; } /** * 列表 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * @throws \Prettus\Repository\Exceptions\RepositoryException */ public function index(Request $request) { $data = $this->service->handleList($request); return $this->response->success($data); } /** * 新增 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * @throws \Illuminate\Validation\ValidationException * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function store(Request $request) { $data = $this->validateData($request, [ 'name' => 'required', 'account' => ['required', Rule::unique('school_students')->whereNull('deleted_at')], 'password' => 'sometimes|min:6', 'headimg' => 'sometimes', 'sex' => 'sometimes', 'mobile' => 'nullable|mobile', 'email' => 'sometimes|email', 'grade_id' => 'required|integer', 'year' => 'nullable', 'status' => 'required', ], [ 'name' => '姓名', 'account' => '学号', 'password' => '密码', 'headimg' => '头像', 'sex' => '性别', 'mobile' => '手机号', 'email' => '邮箱', 'grade_id' => '班级', 'year' => '年级', 'status' => '状态' ]); $data['password'] = rk($data['account']); $model = $this->service->handleStore($data); return $this->response->created($model, '创建成功'); } /** * 详情 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * @throws \Illuminate\Validation\ValidationException */ public function show(Request $request) { $this->validate($request, ['id' => 'required|integer']); $model = $this->service->handleProfile($request->get('id')); return $this->response->success($model); } /** * 编辑 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * @throws \Illuminate\Validation\ValidationException * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function update(Request $request) { $data = $this->validateData($request, [ 'id' => 'required|integer', 'name' => 'required', 'account' => [ 'required', Rule::unique('school_students')->ignore($request->get('id', 0))->whereNull('deleted_at') ], 'headimg' => 'sometimes', 'sex' => 'sometimes', 'mobile' => 'nullable|mobile', 'email' => 'sometimes|email', 'grade_id' => 'sometimes|integer', 'year' => 'nullable', 'status' => 'required', ], [ 'name' => '姓名', 'account' => '学号', 'headimg' => '头像', 'sex' => '性别', 'mobile' => '手机号', 'email' => '邮箱', 'grade_id' => '班级', 'year' => '年级', 'status' => '状态' ]); $model = $this->service->handleUpdate($data); return $this->response->success($model, '创建成功'); } /** * 删除 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * @throws \Illuminate\Validation\ValidationException * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function destroy(Request $request) { $this->validate($request, ['id' => 'required|integer']); $re = $this->service->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 * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function batchDelete(Request $request) { $ids = $this->validateData($request, ['ids' => 'required|array']); $re = $this->service->handleBatchDelete($ids); if ($re) { return $this->response->ok('删除成功'); } return $this->response->fail('删除失败'); } /** * 选项 * @must * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Prettus\Repository\Exceptions\RepositoryException */ public function selectOptions(Request $request) { $lists = $this->service->handleSelectOptions($request); return $this->response->success($lists); } /** * 导入 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * @throws \Illuminate\Validation\ValidationException * Author: Mead */ public function importStudents(Request $request) { $this->validate($request, [ 'id' => 'required|integer' ]); $resource = Resource::query()->where('id', $request->get('id'))->first(); if (!$resource) { return $this->errorFail(); } $this->dispatch(new ImportStudentJob($resource, login_admin_id())); return Response::success(null, '正在导入,请稍后'); } /** * 导出数据 * Author: Mead */ public function exportStudents(Request $request) { $ids = $this->service->handleIds($request); $name = time(); return (new StudentExport($ids, $request->get('fields', false)))->download($name . '.xlsx', null, [ 'Access-Control-Allow-Origin' => '*', 'Access-Control-Allow-Methods' => '*', 'Access-Control-Allow-Headers' => 'Content-Type, Authorization, X-Requested-With', 'Access-Control-Expose-Headers' => 'Content-Disposition', 'Content-type' => 'application/octet-stream', 'Content-Disposition' => 'attachment; filename=' . $name . '.xlsx', ]); } /** * 批量修改状态 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * @throws \Illuminate\Validation\ValidationException */ public function updateStatus(Request $request) { $data = $this->validateData($request, [ 'ids' => 'required|array', 'status' => 'required|integer', ], [ 'status' => '状态' ]); $re = Student::query()->whereIn('id', $data['ids'])->update(['status' => $data['status']]); Admin::query()->whereIn('id', Teacher::query()->where('id', $data['ids'])->pluck('admin_id'))->update(['status' => $data['status']]); if ($re) { return Response::success([]); } return $this->error('操作失败'); } /** * 重置密码 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * @throws \Illuminate\Validation\ValidationException */ public function changePassword(Request $request) { $data = $this->validateData($request, [ 'id' => 'required|integer', 'password' => 'required|password_level', ]); $id = $request->get('id'); $model = Student::query()->find($id); if (!$model) { return Response::fail('找不到该用户'); } $model->password = rk($data['password']); $model->save(); return Response::success([]); } }