studentService = $studentService; } /** * 获取学生列表 * @param Request $request * @return \Illuminate\Http\JsonResponse */ public function index(Request $request) { $params = $request->all(); $result = $this->studentService->getStudentList($params); return $this->success($result, '获取学生列表成功'); } /** * 创建学生 * @param StudentRequest $request * @return \Illuminate\Http\JsonResponse */ public function store(StudentRequest $request) { $data = $request->validated(); $result = $this->studentService->createStudent($data); return $this->success($result, '创建学生成功'); } /** * 获取学生详情 * @param int $id * @return \Illuminate\Http\JsonResponse */ public function show(int $id) { $result = $this->studentService->getStudentDetail($id); return $this->success($result, '获取学生详情成功'); } /** * 更新学生 * @param StudentRequest $request * @param int $id * @return \Illuminate\Http\JsonResponse */ public function update(StudentRequest $request, int $id) { $data = $request->validated(); $result = $this->studentService->updateStudent($id, $data); return $this->success($result, '更新学生成功'); } /** * 删除学生 * @param int $id * @return \Illuminate\Http\JsonResponse */ public function destroy(int $id) { $this->studentService->deleteStudent($id); return $this->success([], '删除学生成功'); } /** * 重置学生密码 * @param Request $request * @param int $id * @return \Illuminate\Http\JsonResponse */ public function resetPassword(Request $request, int $id) { $request->validate([ 'password' => 'required|string|min:6|max:20' ], [ 'password.required' => '密码不能为空', 'password.min' => '密码长度至少6位', 'password.max' => '密码长度最多20位' ]); $this->studentService->resetPassword($id, $request->password); return $this->success([], '重置密码成功'); } /** * 更新学生状态 * @param Request $request * @param int $id * @return \Illuminate\Http\JsonResponse */ public function updateStatus(Request $request, int $id) { $request->validate([ 'status' => 'required|integer|in:0,1,2,3' ], [ 'status.required' => '状态不能为空', 'status.in' => '状态值无效' ]); $result = $this->studentService->updateStatus($id, $request->status); return $this->success($result, '更新状态成功'); } /** * 获取学生班级历史 * @param int $id * @return \Illuminate\Http\JsonResponse */ public function classHistory(int $id) { $result = $this->studentService->getStudentClassHistory($id); return $this->success($result, '获取班级历史成功'); } /** * 分配学生到班级 * @param Request $request * @param int $id * @return \Illuminate\Http\JsonResponse */ public function assignToClass(Request $request, int $id) { $request->validate([ 'class_id' => 'required|integer|exists:school_class,id', 'join_time' => 'nullable|date', 'remark' => 'nullable|string|max:500' ], [ 'class_id.required' => '班级ID不能为空', 'class_id.exists' => '班级不存在', 'join_time.date' => '入班时间格式错误', 'remark.max' => '备注最多500字符' ]); $result = $this->studentService->assignToClass($id, $request->class_id, $request->only(['join_time', 'remark'])); return $this->success($result, '分配班级成功'); } /** * 从班级移除学生 * @param Request $request * @param int $id * @return \Illuminate\Http\JsonResponse */ public function removeFromClass(Request $request, int $id) { $request->validate([ 'class_id' => 'required|integer|exists:school_class,id', 'status' => 'nullable|integer|in:2,3,4', 'leave_time' => 'nullable|date', 'remark' => 'nullable|string|max:500' ], [ 'class_id.required' => '班级ID不能为空', 'class_id.exists' => '班级不存在', 'status.in' => '状态值无效', 'leave_time.date' => '离班时间格式错误', 'remark.max' => '备注最多500字符' ]); $this->studentService->removeFromClass($id, $request->class_id, $request->only(['status', 'leave_time', 'remark'])); return $this->success([], '移除班级成功'); } /** * 获取家长的子女列表 * @param int $id * @return \Illuminate\Http\JsonResponse */ public function getChildren(int $id) { $result = $this->studentService->getParentChildren($id); return $this->success($result, '获取子女列表成功'); } /** * 绑定家长和子女关系 * @param Request $request * @param int $id * @return \Illuminate\Http\JsonResponse */ public function bindChild(Request $request, int $id) { $request->validate([ 'child_id' => 'required|integer|exists:student,id' ], [ 'child_id.required' => '子女ID不能为空', 'child_id.exists' => '子女不存在' ]); $this->studentService->bindParentChild($id, $request->child_id); return $this->success([], '绑定子女成功'); } /** * 解除家长和子女关系 * @param int $id * @return \Illuminate\Http\JsonResponse */ public function unbindChild(int $id) { $this->studentService->unbindParentChild($id); return $this->success([], '解除绑定成功'); } /** * 获取学生统计信息 * @return \Illuminate\Http\JsonResponse */ public function statistics() { $result = $this->studentService->getStudentStatistics(); return $this->success($result, '获取统计信息成功'); } /** * 批量导入学生 * @param Request $request * @return \Illuminate\Http\JsonResponse */ public function batchImport(Request $request) { $request->validate([ 'file' => 'required|file|mimes:xlsx,xls,csv|max:10240' ], [ 'file.required' => '请选择文件', 'file.mimes' => '文件格式不正确', 'file.max' => '文件大小不能超过10M' ]); // TODO: 实现批量导入逻辑 return $this->success([], '批量导入功能待实现'); } /** * 导出学生数据 * @param Request $request * @return \Illuminate\Http\JsonResponse */ public function export(Request $request) { // TODO: 实现导出逻辑 return $this->success([], '导出功能待实现'); } }