0


智慧校园云端管理系统的设计和实现(附源码及数据库)

智慧校园管理系统:主要是以年级、班级为单位,进行老师和学生信息记录和统计功能。项目采用前后端分离架构思想,前端采用HTML+CSS+VUE来实现页面效果展示,后端采用SpringBoot+MybatisPlus框架实现数据存储等服务。存储层使用高性能的MySQL,服务器使用SpringBoot内置的Tomcat7.x,项目构建工具使用Maven来管理jar包和项目构建。

环境准备

框架架构

登录页面

首页展示

业务模块

数据库后台展示

管理员密码为:admin

学生密码为:123456

教师密码为:123456

部分代码

  1. package com.org.myzhxy.controller;
  2. import com.org.myzhxy.pojo.Admin;
  3. import com.org.myzhxy.pojo.LoginForm;
  4. import com.org.myzhxy.pojo.Student;
  5. import com.org.myzhxy.pojo.Teacher;
  6. import com.org.myzhxy.service.AdminService;
  7. import com.org.myzhxy.service.StudentService;
  8. import com.org.myzhxy.service.TeacherService;
  9. import com.org.myzhxy.util.*;
  10. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  11. import io.swagger.annotations.Api;
  12. import io.swagger.annotations.ApiOperation;
  13. import io.swagger.annotations.ApiParam;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.web.bind.annotation.*;
  16. import org.springframework.web.multipart.MultipartFile;
  17. import javax.imageio.ImageIO;
  18. import javax.servlet.http.HttpServletRequest;
  19. import javax.servlet.http.HttpServletResponse;
  20. import javax.servlet.http.HttpSession;
  21. import java.awt.image.BufferedImage;
  22. import java.io.File;
  23. import java.io.IOException;
  24. import java.util.LinkedHashMap;
  25. import java.util.Map;
  26. import java.util.UUID;
  27. @Api(tags = "系统控制器")
  28. @RestController
  29. @RequestMapping("/sms/system")
  30. public class SystemController {
  31. @Autowired
  32. private AdminService adminService;
  33. @Autowired
  34. private StudentService studentService;
  35. @Autowired
  36. private TeacherService teacherService;
  37. /*
  38. * 修改密码的处理器
  39. * POST /sms/system/updatePwd/123456/admin
  40. * /sms/system/updatePwd/{oldPwd}/{newPwd}
  41. * 请求参数
  42. oldpwd
  43. newPwd
  44. token 头
  45. 响应的数据
  46. Result OK data= null
  47. * */
  48. @ApiOperation("更新用户密码的处理器")
  49. @PostMapping("/updatePwd/{oldPwd}/{newPwd}")
  50. public Result updatePwd(
  51. @ApiParam("token口令") @RequestHeader("token") String token,
  52. @ApiParam("旧密码") @PathVariable("oldPwd") String oldPwd,
  53. @ApiParam("新密码") @PathVariable("newPwd") String newPwd
  54. ){
  55. boolean expiration = JwtHelper.isExpiration(token);
  56. if (expiration) {
  57. // token过期
  58. return Result.fail().message("token失效,请重新登录后修改密码");
  59. }
  60. // 获取用户ID和用类型
  61. Long userId = JwtHelper.getUserId(token);
  62. Integer userType = JwtHelper.getUserType(token);
  63. oldPwd= MD5.encrypt(oldPwd);
  64. newPwd= MD5.encrypt(newPwd);
  65. switch (userType) {
  66. case 1:
  67. QueryWrapper<Admin> queryWrapper1=new QueryWrapper<>();
  68. queryWrapper1.eq("id",userId.intValue());
  69. queryWrapper1.eq("password",oldPwd);
  70. Admin admin =adminService.getOne(queryWrapper1);
  71. if (admin != null){
  72. // 修改
  73. admin.setPassword(newPwd);
  74. adminService.saveOrUpdate(admin);
  75. }else{
  76. return Result.fail().message("原密码有误!");
  77. }
  78. break;
  79. case 2:
  80. QueryWrapper<Student> queryWrapper2=new QueryWrapper<>();
  81. queryWrapper2.eq("id",userId.intValue());
  82. queryWrapper2.eq("password",oldPwd);
  83. Student student =studentService.getOne(queryWrapper2);
  84. if (student != null){
  85. // 修改
  86. student.setPassword(newPwd);
  87. studentService.saveOrUpdate(student);
  88. }else{
  89. return Result.fail().message("原密码有误!");
  90. }
  91. break;
  92. case 3:
  93. QueryWrapper<Teacher> queryWrapper3=new QueryWrapper<>();
  94. queryWrapper3.eq("id",userId.intValue());
  95. queryWrapper3.eq("password",oldPwd);
  96. Teacher teacher =teacherService.getOne(queryWrapper3);
  97. if (teacher != null){
  98. // 修改
  99. teacher.setPassword(newPwd);
  100. teacherService.saveOrUpdate(teacher);
  101. }else{
  102. return Result.fail().message("原密码有误!");
  103. }
  104. break;
  105. }
  106. return Result.ok();
  107. }
  108. // POST /sms/system/headerImgUpload
  109. @ApiOperation("文件上传统一入口")
  110. @PostMapping("/headerImgUpload")
  111. public Result headerImgUpload(
  112. @ApiParam("头像文件") @RequestPart("multipartFile") MultipartFile multipartFile
  113. ,
  114. HttpServletRequest request
  115. ){
  116. String uuid = UUID.randomUUID().toString().replace("-", "").toLowerCase();
  117. String originalFilename = multipartFile.getOriginalFilename();
  118. int i = originalFilename.lastIndexOf(".");
  119. String newFileName =uuid.concat(originalFilename.substring(i));
  120. // 保存文件 将文件发送到第三方/独立的图片服务器上,
  121. String portraitPath="C:/code/myzhxy/target/classes/public/upload/".concat(newFileName);
  122. try {
  123. multipartFile.transferTo(new File(portraitPath));
  124. } catch (IOException e) {
  125. e.printStackTrace();
  126. }
  127. // 响应图片的路径
  128. String path="upload/".concat(newFileName);
  129. return Result.ok(path);
  130. }
  131. @ApiOperation("通过token口令获取当前登录的用户信息的方法")
  132. @GetMapping("/getInfo")
  133. public Result getInfoByToken(
  134. @ApiParam("token口令")@RequestHeader("token") String token){
  135. boolean expiration = JwtHelper.isExpiration(token);
  136. if (expiration) {
  137. return Result.build(null,ResultCodeEnum.TOKEN_ERROR);
  138. }
  139. //从token中解析出 用户id 和用户的类型
  140. Long userId = JwtHelper.getUserId(token);
  141. Integer userType = JwtHelper.getUserType(token);
  142. Map<String,Object> map =new LinkedHashMap<>();
  143. switch (userType){
  144. case 1:
  145. Admin admin =adminService.getAdminById(userId);
  146. map.put("userType",1);
  147. map.put("user",admin);
  148. break;
  149. case 2:
  150. Student student =studentService.getStudentById(userId);
  151. map.put("userType",2);
  152. map.put("user",student);
  153. break;
  154. case 3:
  155. Teacher teacher= teacherService.getByTeacherById(userId);
  156. map.put("userType",3);
  157. map.put("user",teacher);
  158. break;
  159. }
  160. return Result.ok(map);
  161. }
  162. @ApiOperation("登录的方法")
  163. @PostMapping("/login")
  164. public Result login(
  165. @ApiParam("登录提交信息的form表单")@RequestBody LoginForm loginForm,
  166. HttpServletRequest request){
  167. // 验证码校验
  168. HttpSession session = request.getSession();
  169. String sessionVerifiCode = (String)session.getAttribute("verifiCode");
  170. String loginVerifiCode = loginForm.getVerifiCode();
  171. if("".equals(sessionVerifiCode) || null == sessionVerifiCode){
  172. return Result.fail().message("验证码失效,请刷新后重试");
  173. }
  174. if (!sessionVerifiCode.equalsIgnoreCase(loginVerifiCode)){
  175. return Result.fail().message("验证码有误,请小心输入后重试");
  176. }
  177. // 从session域中移除现有验证码
  178. session.removeAttribute("verifiCode");
  179. // 分用户类型进行校验
  180. // 准备一个map用户存放响应的数据
  181. Map<String,Object> map=new LinkedHashMap<>();
  182. switch (loginForm.getUserType()){
  183. case 1:
  184. try {
  185. Admin admin=adminService.login(loginForm);
  186. if (null != admin) {
  187. // 用户的类型和用户id转换成一个密文,以token的名称向客户端反馈
  188. map.put("token",JwtHelper.createToken(admin.getId().longValue(), 1));
  189. }else{
  190. throw new RuntimeException("用户名或者密码有误");
  191. }
  192. return Result.ok(map);
  193. } catch (RuntimeException e) {
  194. e.printStackTrace();
  195. return Result.fail().message(e.getMessage());
  196. }
  197. case 2:
  198. try {
  199. Student student =studentService.login(loginForm);
  200. if (null != student) {
  201. // 用户的类型和用户id转换成一个密文,以token的名称向客户端反馈
  202. map.put("token",JwtHelper.createToken(student.getId().longValue(), 2));
  203. }else{
  204. throw new RuntimeException("用户名或者密码有误");
  205. }
  206. return Result.ok(map);
  207. } catch (RuntimeException e) {
  208. e.printStackTrace();
  209. return Result.fail().message(e.getMessage());
  210. }
  211. case 3:
  212. try {
  213. Teacher teahcer =teacherService.login(loginForm);
  214. if (null != teahcer) {
  215. // 用户的类型和用户id转换成一个密文,以token的名称向客户端反馈
  216. map.put("token",JwtHelper.createToken(teahcer.getId().longValue(), 3));
  217. }else{
  218. throw new RuntimeException("用户名或者密码有误");
  219. }
  220. return Result.ok(map);
  221. } catch (RuntimeException e) {
  222. e.printStackTrace();
  223. return Result.fail().message(e.getMessage());
  224. }
  225. }
  226. return Result.fail().message("查无此用户");
  227. }
  228. @ApiOperation("获取验证码图片")
  229. @GetMapping("/getVerifiCodeImage")
  230. public void getVerifiCodeImage(HttpServletRequest request, HttpServletResponse response){
  231. // 获取图片
  232. BufferedImage verifiCodeImage = CreateVerifiCodeImage.getVerifiCodeImage();
  233. // 获取图片上的验证码
  234. String verifiCode =new String( CreateVerifiCodeImage.getVerifiCode());
  235. // 将验证码文本放入session域,为下一次验证做准备
  236. HttpSession session = request.getSession();
  237. session.setAttribute("verifiCode",verifiCode);
  238. // 将验证码图片响应给浏览器
  239. try {
  240. ImageIO.write(verifiCodeImage,"JPEG",response.getOutputStream());
  241. } catch (IOException e) {
  242. e.printStackTrace();
  243. }
  244. }
  245. }

全套下载

点此下载智慧校园云端管理系统的设计和实现(附源码及数据库)



本文转载自: https://blog.csdn.net/m0_54925305/article/details/124156026
版权归原作者 托马斯-酷涛 所有, 如有侵权,请联系我们删除。

“智慧校园云端管理系统的设计和实现(附源码及数据库)”的评论:

还没有评论