diff --git a/pom.xml b/pom.xml index 67c555d..63cfa8e 100644 --- a/pom.xml +++ b/pom.xml @@ -58,7 +58,31 @@ com.baomidou mybatis-plus-boot-starter - 3.5.5 + 3.5.5 + + + + io.jsonwebtoken + jjwt-api + 0.11.5 + + + io.jsonwebtoken + jjwt-impl + 0.11.5 + runtime + + + io.jsonwebtoken + jjwt-jackson + 0.11.5 + runtime + + + + cn.dev33 + sa-token-spring-boot3-starter + 1.37.0 diff --git a/src/main/java/cn/zyp/stusystem/controller/ClassController.java b/src/main/java/cn/zyp/stusystem/controller/ClassController.java index b237337..6236489 100644 --- a/src/main/java/cn/zyp/stusystem/controller/ClassController.java +++ b/src/main/java/cn/zyp/stusystem/controller/ClassController.java @@ -1,11 +1,10 @@ package cn.zyp.stusystem.controller; - +import cn.dev33.satoken.annotation.SaCheckLogin; +import cn.dev33.satoken.annotation.SaCheckPermission; import cn.zyp.stusystem.entity.GradeClass; import cn.zyp.stusystem.service.ClassService; -import org.apache.ibatis.annotations.Param; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import java.util.HashMap; @@ -16,53 +15,61 @@ import java.util.Map; @RequestMapping("/api/class") public class ClassController { - //测试git - @Autowired private ClassService classService; - //根据年级查询班级列表 + // 根据年级查询班级列表 - 所有登录用户都可以查看 + @SaCheckLogin + @SaCheckPermission("class:view") @GetMapping("/list") - public Map getClassList(@RequestParam Integer grade,@RequestParam(required = false) String name){ + public Map getClassList(@RequestParam Integer grade, @RequestParam(required = false) String name) { List gradeClasses = classService.findClassByGradeId(grade); System.out.println(gradeClasses); - //过滤班级名称 - if(name != null){ - gradeClasses= gradeClasses.stream().filter(gradeClass -> gradeClass.getName().contains(name)).toList(); + // 过滤班级名称 + if (name != null) { + gradeClasses = gradeClasses.stream().filter(gradeClass -> gradeClass.getName().contains(name)).toList(); } - Map result = new HashMap<>(); - result.put("data",gradeClasses); + Map result = new HashMap<>(); + result.put("data", gradeClasses); return result; } - //新增班级 + // 新增班级 - 只有管理员有权限 + @SaCheckLogin + @SaCheckPermission("class:add") @PostMapping("/add") - public boolean addClass(@RequestBody GradeClass gradeClass){ + public boolean addClass(@RequestBody GradeClass gradeClass) { return classService.save(gradeClass); } - //编辑班级 + // 编辑班级 - 只有管理员有权限 + @SaCheckLogin + @SaCheckPermission("class:edit") @PutMapping("/edit") - public boolean editClass(@RequestBody GradeClass gradeClass){ + public boolean editClass(@RequestBody GradeClass gradeClass) { return classService.updateById(gradeClass); } - //删除班级 + // 删除班级 - 只有管理员有权限 + @SaCheckLogin + @SaCheckPermission("class:delete") @DeleteMapping("/delete/{id}") - public boolean deleteClass(@PathVariable Integer id){ - if(classService.isClassHasStudent(id)){ + public boolean deleteClass(@PathVariable Integer id) { + if (classService.isClassHasStudent(id)) { return false; - }else { + } else { return classService.removeById(id); } } + // 检查班级是否有学生 - 所有登录用户都可以查看 + @SaCheckLogin + @SaCheckPermission("class:view") @GetMapping("/check") - //检查班级是否有学生 - public Map checkClassHasStudent(@RequestParam Integer classId){ - Map result = new HashMap<>(); - result.put("data",classService.isClassHasStudent(classId)); + public Map checkClassHasStudent(@RequestParam Integer classId) { + Map result = new HashMap<>(); + result.put("data", classService.isClassHasStudent(classId)); return result; } -} +} \ No newline at end of file diff --git a/src/main/java/cn/zyp/stusystem/controller/StudentController.java b/src/main/java/cn/zyp/stusystem/controller/StudentController.java index ffc9e77..fa92c72 100644 --- a/src/main/java/cn/zyp/stusystem/controller/StudentController.java +++ b/src/main/java/cn/zyp/stusystem/controller/StudentController.java @@ -1,6 +1,7 @@ package cn.zyp.stusystem.controller; - +import cn.dev33.satoken.annotation.SaCheckLogin; +import cn.dev33.satoken.annotation.SaCheckPermission; import cn.zyp.stusystem.entity.Student; import cn.zyp.stusystem.service.StudentService; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -18,7 +19,9 @@ public class StudentController { @Autowired private StudentService studentService; - //获取学生列表 + // 获取学生列表 - 所有登录用户都可以查看 + @SaCheckLogin + @SaCheckPermission("student:view") @GetMapping("/list") public Map getStudentList( @RequestParam Integer page, // 页码(从1开始) @@ -27,7 +30,7 @@ public class StudentController { @RequestParam(required = false) Long classId, // 班级ID @RequestParam(required = false) String name ) { - //参数校验 + // 参数校验 if (page == null || page < 1) { page = 1; } @@ -37,25 +40,31 @@ public class StudentController { result.put("list", studentPage.getRecords()); result.put("total", studentPage.getTotal()); - //测试 + // 测试 System.out.println("后端返回的学生数据:" + result); return result; } - //新增学生 + // 新增学生 - 管理员和班主任有权限 + @SaCheckLogin + @SaCheckPermission("student:add") @PostMapping("/add") public boolean addStudent(@RequestBody Student student) { return studentService.save(student); } - //编辑学生 + // 编辑学生 - 管理员和班主任有权限 + @SaCheckLogin + @SaCheckPermission("student:edit") @PutMapping("/edit") public boolean editStudent(@RequestBody Student student) { return studentService.updateById(student); } - //删除学生 + // 删除学生 - 管理员和班主任有权限 + @SaCheckLogin + @SaCheckPermission("student:delete") @DeleteMapping("/delete/{id}") public boolean deleteStudent(@PathVariable String id) { if (id.contains(",")) { @@ -65,4 +74,4 @@ public class StudentController { return studentService.removeById(id); } } -} +} \ No newline at end of file diff --git a/src/main/java/cn/zyp/stusystem/entity/GradeClass.java b/src/main/java/cn/zyp/stusystem/entity/GradeClass.java index f7dbe7f..2e306a9 100644 --- a/src/main/java/cn/zyp/stusystem/entity/GradeClass.java +++ b/src/main/java/cn/zyp/stusystem/entity/GradeClass.java @@ -22,6 +22,11 @@ public class GradeClass { @TableField("grade") private Integer grade; - @TableField("head_teacher") + // 数据库字段是 head_teacher_id,类型应该是Long(关联user表的id) + @TableField("head_teacher_id") + private Long headTeacherId; + + + @TableField(exist = false) private String headTeacher; -} +} \ No newline at end of file diff --git a/src/main/java/cn/zyp/stusystem/service/impl/ClassServiceImpl.java b/src/main/java/cn/zyp/stusystem/service/impl/ClassServiceImpl.java index a86d065..c458193 100644 --- a/src/main/java/cn/zyp/stusystem/service/impl/ClassServiceImpl.java +++ b/src/main/java/cn/zyp/stusystem/service/impl/ClassServiceImpl.java @@ -3,17 +3,13 @@ package cn.zyp.stusystem.service.impl; import cn.zyp.stusystem.entity.GradeClass; import cn.zyp.stusystem.entity.Student; +import cn.zyp.stusystem.entity.User; import cn.zyp.stusystem.mapper.ClassMapper; import cn.zyp.stusystem.mapper.StudentMapper; +import cn.zyp.stusystem.mapper.UserMapper; import cn.zyp.stusystem.service.ClassService; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import lombok.ConfigurationKeys; -import lombok.Data; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -25,12 +21,27 @@ public class ClassServiceImpl extends ServiceImpl imple @Autowired private StudentMapper studentMapper; + @Autowired + private UserMapper userMapper; @Override public List findClassByGradeId(Integer gradeId) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("grade",gradeId); - return baseMapper.selectList(queryWrapper); + List classes = baseMapper.selectList(queryWrapper); + + // 为每个班级设置班主任姓名 + for (GradeClass gradeClass : classes) { + if (gradeClass.getHeadTeacherId() != null) { + // 根据headTeacherId查询班主任姓名 + User teacher = userMapper.selectById(gradeClass.getHeadTeacherId()); + if (teacher != null) { + gradeClass.setHeadTeacher(teacher.getName()); + } + } + } + + return classes; } @Override diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index eb8bbda..6c25346 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -5,9 +5,18 @@ spring: username: root password: 123456 + # MyBatis-Plus ?? mybatis-plus: mapper-locations: classpath:mapper/*.xml # Mapper.xml ???? type-aliases-package: com.example.student.entity # ?????? configuration: - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # ??SQL????????? \ No newline at end of file + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # ??SQL????????? + +sa-token: + token-name: Authorization # token名称(与前端对应) + timeout: 7200 # token有效期(秒) + active-timeout: -1 # 活跃有效期(-1代表不限制) + is-concurrent: true # 是否允许并发登录 + is-share: false # 在多人登录时是否共享token + token-style: uuid # token生成风格 diff --git a/target/classes/application.yaml b/target/classes/application.yaml index eb8bbda..6c25346 100644 --- a/target/classes/application.yaml +++ b/target/classes/application.yaml @@ -5,9 +5,18 @@ spring: username: root password: 123456 + # MyBatis-Plus ?? mybatis-plus: mapper-locations: classpath:mapper/*.xml # Mapper.xml ???? type-aliases-package: com.example.student.entity # ?????? configuration: - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # ??SQL????????? \ No newline at end of file + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # ??SQL????????? + +sa-token: + token-name: Authorization # token名称(与前端对应) + timeout: 7200 # token有效期(秒) + active-timeout: -1 # 活跃有效期(-1代表不限制) + is-concurrent: true # 是否允许并发登录 + is-share: false # 在多人登录时是否共享token + token-style: uuid # token生成风格 diff --git a/target/classes/cn/zyp/stusystem/controller/ClassController.class b/target/classes/cn/zyp/stusystem/controller/ClassController.class index bc5e4c2..420bd9b 100644 Binary files a/target/classes/cn/zyp/stusystem/controller/ClassController.class and b/target/classes/cn/zyp/stusystem/controller/ClassController.class differ diff --git a/target/classes/cn/zyp/stusystem/controller/StudentController.class b/target/classes/cn/zyp/stusystem/controller/StudentController.class index 483135e..1563ff3 100644 Binary files a/target/classes/cn/zyp/stusystem/controller/StudentController.class and b/target/classes/cn/zyp/stusystem/controller/StudentController.class differ diff --git a/target/classes/cn/zyp/stusystem/entity/GradeClass.class b/target/classes/cn/zyp/stusystem/entity/GradeClass.class index 9136d3d..74a068f 100644 Binary files a/target/classes/cn/zyp/stusystem/entity/GradeClass.class and b/target/classes/cn/zyp/stusystem/entity/GradeClass.class differ diff --git a/target/classes/cn/zyp/stusystem/service/impl/ClassServiceImpl.class b/target/classes/cn/zyp/stusystem/service/impl/ClassServiceImpl.class index 9f1f0a8..9ff569d 100644 Binary files a/target/classes/cn/zyp/stusystem/service/impl/ClassServiceImpl.class and b/target/classes/cn/zyp/stusystem/service/impl/ClassServiceImpl.class differ