status != 1) { throw new BusinessException('校区不存在或已禁用', 10001); } return $campus->toArray(); } public function getCampusesByIds(array $ids): array { return Campus::whereIn('id', $ids) ->enabled() ->get() ->toArray(); } public function getCampusesByParentId(int $parentId): array { return Campus::where('parent_id', $parentId) ->enabled() ->get() ->toArray(); } public function getProvinces(): array { return Campus::level(1) ->enabled() ->orderBy('name') ->get(['id', 'name', 'province']) ->toArray(); } public function getCitiesByProvince(string $province): array { return Campus::level(2) ->province($province) ->enabled() ->orderBy('name') ->get(['id', 'name', 'city']) ->toArray(); } public function getTeacherById(int $id): array { $teacher = Teacher::find($id); if (! $teacher || $teacher->status != 1) { throw new BusinessException('教师不存在或已禁用', 10101); } return $teacher->toArray(); } public function getTeachersByIds(array $ids): array { return Teacher::whereIn('id', $ids) ->enabled() ->orderBy('sort_order', 'asc') ->get() ->toArray(); } public function getTeachersByCampusId(int $campusId, int $page = 1, int $size = 20): array { $query = Teacher::campusId($campusId) ->enabled() ->orderBy('sort_order', 'asc'); $total = $query->count(); $list = $query->forPage($page, $size)->get()->toArray(); return [ 'total' => $total, 'page' => $page, 'size' => $size, 'list' => $list, ]; } public function getTeachersBySubject(string $subject, int $page = 1, int $size = 20): array { $query = Teacher::subject($subject) ->enabled() ->orderBy('sort_order', 'asc'); $total = $query->count(); $list = $query->forPage($page, $size)->get()->toArray(); return [ 'total' => $total, 'page' => $page, 'size' => $size, 'list' => $list, ]; } public function searchTeachers(string $keyword, int $page = 1, int $size = 20): array { $query = Teacher::search($keyword) ->enabled() ->orderBy('sort_order', 'asc'); $total = $query->count(); $list = $query->forPage($page, $size)->get()->toArray(); return [ 'total' => $total, 'page' => $page, 'size' => $size, 'list' => $list, ]; } }