From d61a2422b6a3efecd2c4fb2d165b582b9e89d10f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E4=BA=9A=E9=B9=8F?= <13666640+zhao-yapengaaa@user.noreply.gitee.com> Date: Tue, 18 Nov 2025 16:15:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A7=E8=87=B4=E6=9D=83=E9=99=90=E6=8E=A7?= =?UTF-8?q?=E5=88=B6=E5=AE=8C=E6=88=90=EF=BC=8C=E6=96=B0=E5=A2=9E=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=9D=83=E9=99=90=E6=8E=A7=E5=88=B6=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 26 +++++++- .../stusystem/controller/ClassController.java | 57 ++++++++++-------- .../controller/StudentController.java | 25 +++++--- .../cn/zyp/stusystem/entity/GradeClass.java | 9 ++- .../service/impl/ClassServiceImpl.java | 25 +++++--- src/main/resources/application.yaml | 11 +++- target/classes/application.yaml | 11 +++- .../controller/ClassController.class | Bin 4459 -> 4687 bytes .../controller/StudentController.class | Bin 4341 -> 4681 bytes .../cn/zyp/stusystem/entity/GradeClass.class | Bin 3972 -> 4550 bytes .../service/impl/ClassServiceImpl.class | Bin 2300 -> 3214 bytes 11 files changed, 119 insertions(+), 45 deletions(-) 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 bc5e4c2b293ee9ca89a41e890c022d063de4b520..420bd9b5a4f78479267adb3dc7659b6ef1fbac40 100644 GIT binary patch delta 849 zcma)(%TE(g6vn?>Xr?nvJCmBwph>G}Vyz)#Qlp6#4HAPSU68Ot6EkUVaBQ8D&QMfT z3W(x^`ncd56$RffWM_=--5Ay;F5J5DFEF0AT8xH-#hvq*@BGfW=YDVgyg~W&^W6sk zt#~`H^hiUoWXd+uybzBYj_Kwy+%`!OZq^1|^j>9cM?u;sXp@lev7a;q>J#TYQlsq9g^xtn^ipt0FU<7DeA!;CBsA zTQ1dz8964l$QyOFs!H=LcZs}REJ~XehGnlOFr(lB9!i*1F^5MBlMOz$_Nf9No~gKj zn>t1q)K1&x`S$WO+>!7~yjNrOZy3VjqZ$@Ie>c;`0smmrYBXRCf(WA#5wu_(wxJnq zSTBC~i>+bQVSu)H6b#4qgE=^k!J2;pC+T0%Ly1%5l)nr^Jt&eH#)y~>#MoxhriD62 zahh^2iM$M>WDe5#A3laNB&#+$TY*cA65|#4xe75PTC`OxUZ(C{A@w{i)TkH#rA~+m zEg>i1$4+S2B^I?%R|yssIMlTcO#3r-Y1y$a;c~6Pm8Aw(D`N{xim1L@?x6SCM|bWN zeR_yZiE%x;XNna4bUe7W%troR_w^+-ty@>hZ!Ny*Q8R)RK^h4I$T*A)*|JyNPd#o? o8j9Rw=$u_kD~fc#ap8Q7H2guQ89NUoIB3VE_OC delta 680 zcmb7>%TE(g6o}9r{E4r@ZM);%;S^26jij3|tGkU`6 zQYpP`4b^WV#%9uNp%$AKnrLM!1+scHKGG6LaaQ8oQIyMhF31zoA!!Ur;;o8{-CUCG zGQ+x%$REseLXK()$r|G%j_h7G!WFqSAbD6x0mmgg{8foE{+f@EC~1t!q2jvFtka8$ zn$B(i%e@hBZ~n`@r4J|Dds?w*Bf+k9D6^W9y{f4o2LmjJWGd zzsG&OlHAj{SAL~HhJF4JTTqD2Yqr>o>tm_h_HpSBN`!b2_)@X`VFfO>Ck^k9^?WL) xZ2c!y*HL!1ipM_Si4RB%>Z#Pv0)@|cA+;&>OA#@}H1GK!9YZ=F`OH`9{{ko>b5{TW diff --git a/target/classes/cn/zyp/stusystem/controller/StudentController.class b/target/classes/cn/zyp/stusystem/controller/StudentController.class index 483135e81fc01af9c4ddd5e8f8f7eb64c6e3b67b..1563ff3080b3ca57937729eb9b66699a46387abd 100644 GIT binary patch delta 1756 zcmbtU>vI!T6#w01lTCLou@9+DwUM?6O`5V|3rZ_R3Km*Zd8C2`tS-$GLenHR+m<34 zeBuLzdVS#&@QGF}6x#%6&>58(ozXwQFa8mZ(WIa`6&?wa8B>T2_GvB{CEa6`Y~$fIg~g2|XFpx{{_5Glm&F@uay!PmCB0 z&W1pj72)N$4y6q8sAb=>kD;=mD-d1~+*X2eRLHoVV=*cjng){Eq4BhqF-J1v8Pgb= z=-Z=K!6&1d<3`*x@$E0nFOIXy>KZsbsAZ56@r!|b(;Ht=o*tFT(e?H2Ys#A!!`xa6o*ThS)tPELHZ zi{Bip+;?%TM~A3(cBmV1w~S7XP1r1A&Q?zqx;gGaSe$j%2C8r`#}CH~|=X_mn+g4~~FaEDW=!I3m-X{;PH#EfJ1(?Upl8h9vF0;D8j;q%k~c6okh6G#4kb9ageOT_?4o?2OrRXV7_D(yPtkJVX}cqS%KQxJM+w!lyTLMe4$l|m z7jTTu0#>_TB;nsX!%Mqx+&0@{){;+Pf*@FZT}N503RSxid2~52N$SbD!CPKzlLKLHL^8Juam&=#x;@jEJV`&|B#%-n_$^FC~w)c zU4`UryfeqiVJg+?b)d0)>kPJ^M3pVv-(ztU%3)6)dkNeeWBUp?o%Ym~+oREm68hbh zVl({cwlOcE3rpd}yU4z06B#HH8Nex;BW90<6U;x)=qW;Ay~l;!KaDd*M&JLZj1S0J p!iTgw@R1#AJ@1c6|D@=C7B!!e!9#}6Xr03}X$naf=>6p2`x}$%Ll^)6 delta 1401 zcma))%X8CJ6vsa|za+mreu*WO+BBNBT9LHD2((HoFAE~n))rbtK+zxcAv8A8rd6~W zQ1OML_4-0ZMa9>+Q0V}{8CPy}1{W^<3tXuiw~XihTBC#GjEj5T_nhx}eBbg%bL58$ z=e`Bj@cC>c7Yh?2Y!h*a;>?~bMB`jyQ{%9Rgl<$ns!R2+s;;3HE5v0Ae}3O&DN2$C zo0P-lT%psx!Du5*Hq8!Ka+RL(4fbBG2$TvXH*Z3(aac-55gHpQ4H=`tTAJyJ&_>o~ znZvc@6!HD;w42Mj6JxpF!o--uo_6z7BmJX#kyRgE&I+5A4()X4cB>NCity=w))e?$xlS4Nf^aZOq6X#}!O>9s^ri#OEX{7tWmf;Ya6)GE{ zhg)rW9s0OUZ}zVZ^)TSDm2LW{zdbs{?KXEfZ0AmW-oHum?sVA2T{;!Win80`9_~HW zA2{#R+0dM7*C(PGeJ~skc<}X+@XvZOa(KbMJi0p;8!Wkd$NSvkkh>>;>UeaciXV^g zF7MgAZ@N06e{;T5AL_Z-O7*e+CD!WyRFT%HSh}nT_7)1`Q$?C(Z9dte5-N)m?ur%^ zzDIaKc)-*4ik1^i8Efkq)K?<-7#3=Rp@tEmCV}}j%9wD)ee4s>eEwbHLc#}H=P284 z*=0$8GEgBFq$~IhwL8wRxXVu3iMnL4LcO9w+G4vHT8v?d;w-K6wy(J^X`kbII89g5 z{!)@!9*_np0cjF6lA?*Mbhn-sS;rC&+_rfDjFvrgf`$Ezdx!_fi)02d!2Kdwo-{!L zzb6%WK>A3?Z9K@Nlu6M+i79NR#a|~s=Y0=VeGiN8fcO>%qzIB8NemP6ie({>$n){2 zH}1G#n34C`F4QECWBeI2`-37}OcjTA@`Puuicj*C05xM?CrM2kQ5mz{R$;x5FGT(4 zrm~dHstjm}TUeEm4)e66HJ}4Z6sp*s5%WB@XFY7Txr65_zi@Ho7dg7n^Ne(27M5vC+;W;N$Ef#&{ysB<>{$jY><};u6S><**^FfVW)j|l zR}rRDPPj|1XSD~iN&Gd$d5M?3Ic2JI$}lU(pm@d0q0)a1Y*utvo>``@!hZE{*sqDx p&+9@veZ1ktCM5TpVmMZfe~Y(84~hPcybt(Dw1`M2`Gn6%{s}a_(-i;! diff --git a/target/classes/cn/zyp/stusystem/entity/GradeClass.class b/target/classes/cn/zyp/stusystem/entity/GradeClass.class index 9136d3d369d1494cf757c8cfe94df36921eca6f5..74a068f1101372fd63a94665d2c66e5846af1c31 100644 GIT binary patch literal 4550 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 DK0x=8 diff --git a/target/classes/cn/zyp/stusystem/service/impl/ClassServiceImpl.class b/target/classes/cn/zyp/stusystem/service/impl/ClassServiceImpl.class index 9f1f0a84d9e145578371f55fb9b30a8bbc9da7f5..9ff569db4ab2afd0b5c32386d6c6c0b7765303e4 100644 GIT binary patch delta 1282 zcmZWp-%}e^6#njJH=8UArA*7PS^@?_Lkb3JEl6moZPii(RiTZo)Vd^VSV)0p7i_CD zneo~2q3eq;KH8T)*uhB$opE^TgMW;FfOe|i-E67oWODDh=jZpGbCPF=zqO3tpa1e3 zfHU~&vGJE^w4oO%9epPH@tQ!#s=aOJw|uvjFS?#DkZ^scZu=W`f$r>Z@uhh-(ihq= zfI%G@6GJ#I(Di>80e!{x=AFCD7t0RckP*WsayTIdpst7dBQKKI?DcB?%JQmH_6s^j z1=4}g(nSL!$eS3$xIkys@h>@cWzn(AD^7j3!m0OSy)KQ1gtapkYZHdwYO+A;fo2_*G}t1eTDL3C1zC&ze4q^mlj@yU z^su-?Rp-AJMeb4Xqx!Wt9o*C=JK7g~yS&C(EXuC!3~5QRGZRmW#>Y_jAz%pH;D*L| zf5KalBm9pp#rarJ8|gAmG+~x*)s-^BCE$}_2rIZ!e!^o6oX-&NT z6dA^x4CP&%R%n`@id*rgXty*g-o)7^&OiKnZ}cbDQz0?tVDRik0*w?p(T5b$+>!xK zK7$f}QA;?E&*|oJAtaHrq*cNplu@BHO^ZXjM$1}6PD)j*kYs{hE>_vW6y~U{k?L)F zc2m=`t?%15CTQHGu?w;17}BBZ=+!YW^Cw;IP_GGQ1?v1N@R;4l7Nwbv za!U$-`NnB__i#0RyqVs~>qXZ*CHDeDD zH+*R5}MZ7_@xF0fFIQH&8K$u4(&F*DB01T&^!BQVLMVT$Ex%<$Et z-n`Y>x*vds_#>J%+#}+-xP&yWVCXrH7=L)ebZ#S0^bb$umnVYR5>N0SkDHm}(s?@C d&^{5Ckdp$D65uTJdI@m>iv`rB-+x#Jz5%j8Lw*1N