From 1df730f466e2d62cb1393243a285172b57186ba3 Mon Sep 17 00:00:00 2001 From: xuao Date: Sun, 4 Jan 2026 17:25:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=89=8D=E7=AB=AF=E4=BB=A3=E7=A0=81=E8=BF=81?= =?UTF-8?q?=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ClassroomController.java | 9 +- .../course/controller/ClazzController.java | 70 ++--- .../course/controller/CourseController.java | 17 +- .../course/controller/StudentController.java | 15 +- .../course/controller/TeacherController.java | 19 +- .../src/com/ruoyi/course/domain/Student.java | 1 - .../src/api/course/{course.js => courses.js} | 16 +- ruoyi-ui/src/router/index.js | 45 ++- ruoyi-ui/src/views/course/classroom/index.vue | 10 +- ruoyi-ui/src/views/course/clazz/index.vue | 10 +- .../course/{course => courses}/index.vue | 12 +- ruoyi-ui/src/views/course/student/index.vue | 292 ++++++++++++++---- ruoyi-ui/src/views/course/teacher/index.vue | 4 +- 13 files changed, 357 insertions(+), 163 deletions(-) rename ruoyi-ui/src/api/course/{course.js => courses.js} (78%) rename ruoyi-ui/src/views/course/{course => courses}/index.vue (98%) diff --git a/course/src/com/ruoyi/course/controller/ClassroomController.java b/course/src/com/ruoyi/course/controller/ClassroomController.java index 26ec873b..3407302a 100644 --- a/course/src/com/ruoyi/course/controller/ClassroomController.java +++ b/course/src/com/ruoyi/course/controller/ClassroomController.java @@ -3,6 +3,8 @@ package com.ruoyi.course.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.course.common.R; import com.ruoyi.course.domain.Classroom; import com.ruoyi.course.domain.vo.ClassroomQueryVO; @@ -33,7 +35,7 @@ import java.util.Map; @RequestMapping("/course/classroom") @Tag(name = "教室管理", description = "教室相关的CRUD操作和分配管理") @Slf4j -public class ClassroomController { +public class ClassroomController extends BaseController { @Autowired private IClassroomService classroomService; @@ -124,9 +126,10 @@ public class ClassroomController { @ApiResponse(responseCode = "200", description = "查询成功") }) @GetMapping("/list") - public R> listClassrooms() { + public TableDataInfo listTeachers() { + startPage(); List list = classroomService.list(); - return R.ok(list, "查询成功"); + return getDataTable(list); } @Operation(summary = "分页查询教室列表", description = "根据条件分页查询教室列表") diff --git a/course/src/com/ruoyi/course/controller/ClazzController.java b/course/src/com/ruoyi/course/controller/ClazzController.java index 298da23d..6beba97b 100644 --- a/course/src/com/ruoyi/course/controller/ClazzController.java +++ b/course/src/com/ruoyi/course/controller/ClazzController.java @@ -3,15 +3,17 @@ package com.ruoyi.course.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.course.common.R; +import com.ruoyi.course.domain.Clazz; +import com.ruoyi.course.domain.vo.ClassQueryVO; +import com.ruoyi.course.service.IClazzService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; -import com.ruoyi.course.common.R; -import com.ruoyi.course.domain.Clazz; -import com.ruoyi.course.domain.vo.ClassQueryVO; -import com.ruoyi.course.service.IClazzService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; @@ -27,10 +29,10 @@ import java.util.List; @RestController @RequestMapping("/course/clazz") @Tag(name = "班级管理", description = "班级相关的CRUD操作") -public class ClazzController { +public class ClazzController extends BaseController { @Autowired - private IClazzService classService; + private IClazzService clazzService; @Operation(summary = "新增班级", description = "创建一个新的班级") @ApiResponses(value = { @@ -39,7 +41,7 @@ public class ClazzController { }) @PostMapping("/add") public R addClass(@RequestBody Clazz clazz) { - boolean success = classService.save(clazz); + boolean success = clazzService.save(clazz); return success ? R.ok(true, "新增成功") : R.error("新增失败"); } @@ -53,7 +55,7 @@ public class ClazzController { public R deleteClass( @Parameter(description = "班级ID", required = true, example = "1") @PathVariable Long id) { - boolean success = classService.removeById(id); + boolean success = clazzService.removeById(id); return success ? R.ok(true, "删除成功") : R.error("删除失败"); } @@ -69,7 +71,7 @@ public class ClazzController { return R.paramError("请选择要删除的数据"); } - boolean success = classService.removeByIds(ids); + boolean success = clazzService.removeByIds(ids); return success ? R.ok(true, "批量删除成功") : R.error("批量删除失败"); } @@ -89,7 +91,7 @@ public class ClazzController { // 设置更新时间 clazz.setUpdateTime(LocalDateTime.now()); - boolean success = classService.updateById(clazz); + boolean success = clazzService.updateById(clazz); return success ? R.ok(true, "修改成功") : R.error("修改失败"); } @@ -102,7 +104,7 @@ public class ClazzController { public R getClassById( @Parameter(description = "班级ID", required = true, example = "1") @PathVariable Long id) { - Clazz clazz = classService.getById(id); + Clazz clazz = clazzService.getById(id); if (clazz == null) { return R.notFound("班级不存在"); } @@ -114,9 +116,10 @@ public class ClazzController { @ApiResponse(responseCode = "200", description = "查询成功") }) @GetMapping("/list") - public R> listClasses() { - List list = classService.list(); - return R.ok(list, "查询成功"); + public TableDataInfo listTeachers() { + startPage();` + List list = clazzService.list(); + return getDataTable(list); } @Operation(summary = "分页查询班级列表", description = "根据条件分页查询班级列表") @@ -156,7 +159,7 @@ public class ClazzController { wrapper.orderByDesc(Clazz::getCreateTime); // 执行分页查询 - IPage result = classService.page(page, wrapper); + IPage result = clazzService.page(page, wrapper); return R.ok(result, "查询成功"); } @@ -175,47 +178,14 @@ public class ClazzController { Page page = new Page<>(pageNum, pageSize); - IPage result = classService.page(page); + IPage result = clazzService.page(page); return R.ok(result, "查询成功"); } - @Operation(summary = "根据状态查询班级", description = "根据班级状态查询班级列表") - @ApiResponses(value = { - @ApiResponse(responseCode = "200", description = "查询成功"), - @ApiResponse(responseCode = "400", description = "参数错误") - }) - @GetMapping("/listByStatus/{status}") - public R> listByStatus( - @Parameter(description = "班级状态", required = true, example = "1") - @PathVariable Integer status) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(Clazz::getStatus, status); - wrapper.orderByDesc(Clazz::getCreateTime); - List list = classService.list(wrapper); - return R.ok(list, "查询成功"); - } - - @Operation(summary = "根据年级和状态查询", description = "根据年级和班级状态查询班级列表") - @ApiResponses(value = { - @ApiResponse(responseCode = "200", description = "查询成功") - }) - @GetMapping("/listByGradeAndStatus") - public R> listByGradeAndStatus( - @Parameter(description = "年级", required = true, example = "2023级") - @RequestParam String grade, - @Parameter(description = "状态", required = true, example = "1") - @RequestParam Integer status) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(Clazz::getGrade, grade); - wrapper.eq(Clazz::getStatus, status); - wrapper.orderByDesc(Clazz::getCreateTime); - List list = classService.list(wrapper); - return R.ok(list, "查询成功"); - } @@ -231,7 +201,7 @@ public class ClazzController { if (status != null) { wrapper.eq(Clazz::getStatus, status); } - Long count = classService.count(wrapper); + Long count = clazzService.count(wrapper); return R.ok(count, "查询成功"); } diff --git a/course/src/com/ruoyi/course/controller/CourseController.java b/course/src/com/ruoyi/course/controller/CourseController.java index bbaf50eb..f7a8f70a 100644 --- a/course/src/com/ruoyi/course/controller/CourseController.java +++ b/course/src/com/ruoyi/course/controller/CourseController.java @@ -3,13 +3,15 @@ package com.ruoyi.course.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiParam; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.course.common.R; import com.ruoyi.course.domain.Course; import com.ruoyi.course.domain.vo.CourseQueryVO; import com.ruoyi.course.service.ICourseService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; @@ -23,9 +25,9 @@ import java.util.List; *

*/ @RestController -@RequestMapping("/course/course") +@RequestMapping("/course/courses") @Api(tags = "课程管理") -public class CourseController { +public class CourseController extends BaseController { @Autowired private ICourseService courseService; @@ -81,9 +83,10 @@ public class CourseController { @ApiOperation("查询所有课程") @GetMapping("/list") - public R> listCourses() { + public TableDataInfo listTeachers() { + startPage(); List list = courseService.list(); - return R.ok(list, "查询成功"); + return getDataTable(list); } @ApiOperation("分页查询课程列表") diff --git a/course/src/com/ruoyi/course/controller/StudentController.java b/course/src/com/ruoyi/course/controller/StudentController.java index e0b43c0b..db3cf753 100644 --- a/course/src/com/ruoyi/course/controller/StudentController.java +++ b/course/src/com/ruoyi/course/controller/StudentController.java @@ -3,13 +3,15 @@ package com.ruoyi.course.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiParam; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.course.common.R; import com.ruoyi.course.domain.Student; import com.ruoyi.course.domain.vo.StudentQueryVO; import com.ruoyi.course.service.IStudentService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; @@ -28,7 +30,7 @@ import java.util.List; @RestController @RequestMapping("/course/student") @Api(tags = "学生管理") -public class StudentController { +public class StudentController extends BaseController { @Autowired private IStudentService studentService; @@ -84,9 +86,10 @@ public class StudentController { @ApiOperation("查询所有学生") @GetMapping("/list") - public R> listStudents() { + public TableDataInfo listStudents() { + startPage(); List list = studentService.list(); - return R.ok(list, "查询成功"); + return getDataTable(list); } @ApiOperation("分页查询学生列表") diff --git a/course/src/com/ruoyi/course/controller/TeacherController.java b/course/src/com/ruoyi/course/controller/TeacherController.java index a820ce63..729bf368 100644 --- a/course/src/com/ruoyi/course/controller/TeacherController.java +++ b/course/src/com/ruoyi/course/controller/TeacherController.java @@ -3,17 +3,19 @@ package com.ruoyi.course.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.responses.ApiResponse; -import io.swagger.v3.oas.annotations.responses.ApiResponses; -import io.swagger.v3.oas.annotations.tags.Tag; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.course.common.R; import com.ruoyi.course.common.TeacherTimetableResponse; import com.ruoyi.course.domain.Teacher; import com.ruoyi.course.domain.vo.TeacherQueryVO; import com.ruoyi.course.service.ITeacherService; import com.ruoyi.course.service.impl.TeacherScheduleService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; @@ -29,7 +31,7 @@ import java.util.List; @RestController @RequestMapping("/course/teacher") @Tag(name = "教师管理", description = "教师相关的CRUD操作和课表管理") -public class TeacherController { +public class TeacherController extends BaseController { @Autowired private ITeacherService teacherService; @@ -116,9 +118,10 @@ public class TeacherController { @ApiResponse(responseCode = "200", description = "查询成功") }) @GetMapping("/list") - public R> listTeachers() { + public TableDataInfo listTeachers() { + startPage(); List list = teacherService.list(); - return R.ok(list, "查询成功"); + return getDataTable(list); } @Operation(summary = "分页查询教师列表", description = "根据条件分页查询教师列表") diff --git a/course/src/com/ruoyi/course/domain/Student.java b/course/src/com/ruoyi/course/domain/Student.java index f3fb5ab0..516186bd 100644 --- a/course/src/com/ruoyi/course/domain/Student.java +++ b/course/src/com/ruoyi/course/domain/Student.java @@ -48,7 +48,6 @@ public class Student implements Serializable { private GradeEnum grade; - @ApiModelProperty(value = "已选选修课ID列表(JSON数组)") private String selectedElectiveIds; diff --git a/ruoyi-ui/src/api/course/course.js b/ruoyi-ui/src/api/course/courses.js similarity index 78% rename from ruoyi-ui/src/api/course/course.js rename to ruoyi-ui/src/api/course/courses.js index 41f0bf37..a7705240 100644 --- a/ruoyi-ui/src/api/course/course.js +++ b/ruoyi-ui/src/api/course/courses.js @@ -3,7 +3,7 @@ import request from '@/utils/request' // 查询课程列表 export function listCourse(query) { return request({ - url: '/course/course/list', + url: '/course/courses/list', method: 'get', params: query }) @@ -12,7 +12,7 @@ export function listCourse(query) { // 查询课程分页列表 export function pageCourse(query) { return request({ - url: '/course/course/page', + url: '/course/courses/page', method: 'get', params: query }) @@ -21,7 +21,7 @@ export function pageCourse(query) { // 查询课程详细 export function getCourse(id) { return request({ - url: '/course/course/' + id, + url: '/course/courses/' + id, method: 'get' }) } @@ -29,7 +29,7 @@ export function getCourse(id) { // 新增课程 export function addCourse(data) { return request({ - url: '/course/course', + url: '/course/courses', method: 'post', data: data }) @@ -38,7 +38,7 @@ export function addCourse(data) { // 修改课程 export function updateCourse(data) { return request({ - url: '/course/course', + url: '/course/courses', method: 'put', data: data }) @@ -47,7 +47,7 @@ export function updateCourse(data) { // 删除课程 export function delCourse(id) { return request({ - url: '/course/course/' + id, + url: '/course/courses/' + id, method: 'delete' }) } @@ -55,7 +55,7 @@ export function delCourse(id) { // 批量删除课程 export function batchDeleteCourse(ids) { return request({ - url: '/course/course/batch', + url: '/course/courses/batch', method: 'delete', data: ids }) @@ -64,7 +64,7 @@ export function batchDeleteCourse(ids) { // 导出课程 export function exportCourse(query) { return request({ - url: '/course/course/export', + url: '/course/courses/export', method: 'get', params: query }) diff --git a/ruoyi-ui/src/router/index.js b/ruoyi-ui/src/router/index.js index bbfd2374..3e0e6bdc 100644 --- a/ruoyi-ui/src/router/index.js +++ b/ruoyi-ui/src/router/index.js @@ -161,7 +161,50 @@ export const dynamicRoutes = [ meta: { title: '修改生成配置', activeMenu: '/tool/gen' } } ] - } + } + // { + // path: '/course', // 一级路由路径 + // component: Layout, + // redirect: '/course/classroom', // 默认重定向到教室管理 + // meta: { title: '课程管理', icon: 'education' }, // 侧边栏显示"课程管理",使用education图标 + // children: [ + // { + // path: 'classroom', // 二级路由路径: /course/classroom + // component: () => import('@/views/course/classroom/index'), // 对应views目录下的教室管理组件 + // name: 'Classroom', // 路由名称,必须唯一 + // meta: { title: '教室管理', icon: 'classroom' }, // 侧边栏显示"教室管理",使用classroom图标 + // permissions: ['course:classroom:list'] // 需要的权限标识 + // }, + // { + // path: 'clazz', // 二级路由路径: /course/clazz + // component: () => import('@/views/course/clazz/index'), // 对应views目录下的班级管理组件 + // name: 'Clazz', // 路由名称,必须唯一 + // meta: { title: '班级管理', icon: 'tree' }, // 侧边栏显示"班级管理",使用tree图标 + // permissions: ['course:clazz:list'] // 需要的权限标识 + // }, + // { + // path: 'courses', // 二级路由路径: /course/courses + // component: () => import('@/views/course/courses/index'), // 对应views目录下的课程管理组件 + // name: 'Course', // 路由名称,必须唯一 + // meta: { title: '课程管理', icon: 'list' }, // 侧边栏显示"课程管理",使用list图标 + // permissions: ['course:courses:list'] // 需要的权限标识 + // }, + // { + // path: 'student', // 二级路由路径: /course/student + // component: () => import('@/views/course/student/index'), // 对应views目录下的学生管理组件 + // name: 'Student', // 路由名称,必须唯一 + // meta: { title: '学生管理', icon: 'user' }, // 侧边栏显示"学生管理",使用user图标 + // permissions: ['course:student:list'] // 需要的权限标识 + // }, + // { + // path: 'teacher', // 二级路由路径: /course/teacher + // component: () => import('@/views/course/teacher/index'), // 对应views目录下的教师管理组件 + // name: 'Teacher', // 路由名称,必须唯一 + // meta: { title: '教师管理', icon: 'peoples' }, // 侧边栏显示"教师管理",使用peoples图标 + // permissions: ['course:teacher:list'] // 需要的权限标识 + // } + // ] + // } ] // 防止连续点击多次路由报错 diff --git a/ruoyi-ui/src/views/course/classroom/index.vue b/ruoyi-ui/src/views/course/classroom/index.vue index 595bc758..dd48a867 100644 --- a/ruoyi-ui/src/views/course/classroom/index.vue +++ b/ruoyi-ui/src/views/course/classroom/index.vue @@ -54,7 +54,7 @@ icon="el-icon-plus" size="mini" @click="handleAdd" - v-hasPermi="['course:classroom:add']" + v-hasPermi="['courses:classroom:add']" >新增 @@ -65,7 +65,7 @@ size="mini" :disabled="multiple" @click="handleDelete" - v-hasPermi="['course:classroom:remove']" + v-hasPermi="['courses:classroom:remove']" >删除 @@ -75,7 +75,7 @@ icon="el-icon-download" size="mini" @click="handleExport" - v-hasPermi="['course:classroom:export']" + v-hasPermi="['courses:classroom:export']" >导出 @@ -136,14 +136,14 @@ type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" - v-hasPermi="['course:classroom:edit']" + v-hasPermi="['courses:classroom:edit']" >修改 删除 diff --git a/ruoyi-ui/src/views/course/clazz/index.vue b/ruoyi-ui/src/views/course/clazz/index.vue index 6e608c7e..c2d3baa6 100644 --- a/ruoyi-ui/src/views/course/clazz/index.vue +++ b/ruoyi-ui/src/views/course/clazz/index.vue @@ -51,7 +51,7 @@ icon="el-icon-plus" size="mini" @click="handleAdd" - v-hasPermi="['course:clazz:add']" + v-hasPermi="['courses:clazz:add']" >新增 @@ -62,7 +62,7 @@ size="mini" :disabled="multiple" @click="handleDelete" - v-hasPermi="['course:clazz:remove']" + v-hasPermi="['courses:clazz:remove']" >删除 @@ -72,7 +72,7 @@ icon="el-icon-download" size="mini" @click="handleExport" - v-hasPermi="['course:clazz:export']" + v-hasPermi="['courses:clazz:export']" >导出 @@ -124,14 +124,14 @@ type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" - v-hasPermi="['course:clazz:edit']" + v-hasPermi="['courses:clazz:edit']" >修改 删除 diff --git a/ruoyi-ui/src/views/course/course/index.vue b/ruoyi-ui/src/views/course/courses/index.vue similarity index 98% rename from ruoyi-ui/src/views/course/course/index.vue rename to ruoyi-ui/src/views/course/courses/index.vue index 88de61ee..0994bbe0 100644 --- a/ruoyi-ui/src/views/course/course/index.vue +++ b/ruoyi-ui/src/views/course/courses/index.vue @@ -52,7 +52,7 @@ icon="el-icon-plus" size="mini" @click="handleAdd" - v-hasPermi="['api:course:add']" + v-hasPermi="['course:courses:add']" >新增 @@ -63,7 +63,7 @@ size="mini" :disabled="multiple" @click="handleDelete" - v-hasPermi="['api:course:remove']" + v-hasPermi="['course:courses:remove']" >删除 @@ -73,7 +73,7 @@ icon="el-icon-download" size="mini" @click="handleExport" - v-hasPermi="['api:course:export']" + v-hasPermi="['course:courses:export']" >导出 @@ -137,14 +137,14 @@ type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" - v-hasPermi="['course:course:edit']" + v-hasPermi="['course:courses:edit']" >修改 删除 @@ -273,7 +273,7 @@