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