package com.example.zhxy.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.api.R;
import com.example.zhxy.pojo.Admin;
import com.example.zhxy.pojo.LoginForm;
import com.example.zhxy.pojo.Student;
import com.example.zhxy.pojo.Teacher;
import com.example.zhxy.service.AdminService;
import com.example.zhxy.service.StudentService;
import com.example.zhxy.service.TeacherService;
import com.example.zhxy.util.*;
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.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.imageio.ImageIO;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.*;
/**
* @author: yf
* @date: 2023/3/30 - 15:44
* @description:
*/
@Api(tags="系统控制器")
@RestController
@RequestMapping("/sms/system")
public class SystemController {
@Autowired
private AdminService adminService;
@Autowired
private StudentService studentService;
@Autowired
private TeacherService teacherService;
//updatePwd/admin/789456
@ApiOperation("根据用户类型修改用户密码")
@PostMapping("/updatePwd/{oldPwd}/{newPwd}")
public Result updatePwd(@ApiParam("token") @RequestHeader("token") String token,
@ApiParam("用户类型") @PathVariable("oldPwd") String oldPwd,
@ApiParam("新密码") @PathVariable("newPwd") String newPwd){
//验证token是否过期
boolean expiration = JwtHelper.isExpiration(token);
if(expiration){
return Result.fail().message("token失效,请登陆后重试");
}
//从token中解析出用户id和类型
long id = JwtHelper.getUserId(token);
int type = JwtHelper.getUserType(token);
oldPwd = MD5.encrypt(oldPwd);
newPwd = MD5.encrypt(newPwd);
switch (type) {
case 1:
QueryWrapper<Admin> queryWrapper1 = new QueryWrapper<>();
queryWrapper1.eq("id",id);
queryWrapper1.eq("password",oldPwd);
Admin admin = adminService.getOne(queryWrapper1);
if(admin != null){
admin.setPassword(newPwd);
adminService.saveOrUpdate(admin);
}else{
return Result.fail().message("原密码有误");
}
break;
case 2:
QueryWrapper<Student> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("id",id);
queryWrapper2.eq("password",oldPwd);
Student student = studentService.getOne(queryWrapper2);
if(student != null){
student.setPassword(newPwd);
studentService.saveOrUpdate(student);
}else{
return Result.fail().message("原密码有误");
}
break;
case 3:
QueryWrapper<Teacher> queryWrapper3 = new QueryWrapper<>();
queryWrapper3.eq("id",id);
queryWrapper3.eq("password",oldPwd);
Teacher teacher = teacherService.getOne(queryWrapper3);
if(teacher != null){
teacher.setPassword(newPwd);
teacherService.saveOrUpdate(teacher);
}else{
return Result.fail().message("原密码有误");
}
break;
}
return Result.ok();
}
@ApiOperation("文件图片上传统一入口")
@PostMapping("/headerImgUpload")
public Result headerImgUpload(@ApiParam("要上传的头像文件") @RequestPart("multipartFile")MultipartFile multipartFile){
//修改图片的名称
String uuid = UUID.randomUUID().toString().replace("-","").toLowerCase();
String originalFilename = multipartFile.getOriginalFilename();
int index = originalFilename.lastIndexOf(".");
String newFileName = uuid + originalFilename.substring(index);
//保存图片:实际中将文件发送到第三方或者是独立的文件服务器上(本项目中直接保存到target文件夹对应位置)
//相应文件路径
String portraitPath = "E:/code/java/code/zhxy/target/classes/public/upload/" + newFileName;
//保存文件
try {
multipartFile.transferTo(new File(portraitPath));
} catch (IOException e) {
e.printStackTrace();
}
String img = "upload/" + newFileName;
return Result.ok(img);
}
@ApiOperation("根据token信息获取登陆用户类型并返回")
@GetMapping("/getInfo")
public Result getInfoByToken(@ApiParam("token") @RequestHeader("token") String token){
// 获取用户中请求的token
// 检查token 是否过期 20H
boolean expiration = JwtHelper.isExpiration(token);
if(expiration){
return Result.build(null, ResultCodeEnum.TOKEN_ERROR);
}
//从token中解析出用户id和用户的类型
Long userId = JwtHelper.getUserId(token);
Integer userType = JwtHelper.getUserType(token);
Map<String,Object> map = new LinkedHashMap<>();
switch (userType){
case 1:
Admin admin = adminService.getAdminById(userId);
map.put("userType",1);
map.put("user",admin);
break;
case 2:
Student student = studentService.getStudentById(userId);
map.put("userType",2);//注意数字
map.put("user",student);
break;
case 3:
Teacher teacher= teacherService.getTeacherById(userId);
map.put("userType",3);//注意数字
map.put("user",teacher);
break;
}
return Result.ok(map);
}
@ApiOperation("系统等录功能")
@PostMapping("/login")
public Result login(@ApiParam("登录信息的json格式") @RequestBody LoginForm loginForm,
@ApiParam("客户端请求") HttpServletRequest request){
//验证码校验
HttpSession session = request.getSession();
String sessionVerifiCode = (String)session.getAttribute("verifiCode");
String loginVerifiCode = loginForm.getVerifiCode();
if("".equals(sessionVerifiCode) || null == sessionVerifiCode){
return Result.fail().message("验证码失效,请刷新后重试");
}
if(!sessionVerifiCode.equalsIgnoreCase(loginVerifiCode)){
return Result.fail().message("验证码有误,请刷新后小心输入重试");
}
//从session域中移除现有验证码
session.removeAttribute("verifiCode");
//分用户类型校验
//准备一个map用户存放响应的数据
Map<String,Object> map = new LinkedHashMap<>();
switch(loginForm.getUserType()){
case 1:
try {
Admin admin = adminService.login(loginForm);
if(null != admin){
//用户的类型和用户id转换成一个密文,以token的名称向客户端反馈
map.put("token", JwtHelper.createToken(admin.getId().longValue(),1));
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源介绍】 基于SSM智慧校园管理系统项目源码(本科毕设).zip 该项目是个人毕设项目,答辩评审分达到95分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。 该资源主要针对计算机、通信、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。 项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。
资源推荐
资源详情
资源评论
收起资源包目录
基于SSM智慧校园管理系统项目源码(本科毕设).zip (170个子文件)
SystemController.class 10KB
Student.class 7KB
Teacher.class 6KB
Admin.class 5KB
Clazz.class 5KB
Result.class 5KB
Grade.class 4KB
JwtHelper.class 4KB
Swagger2Config.class 4KB
StudentController.class 4KB
TeacherController.class 4KB
GradeController.class 4KB
AdminController.class 4KB
ClazzController.class 4KB
UploadFile.class 4KB
ResultCodeEnum.class 4KB
StudentServiceImpl.class 3KB
TeacherServiceImpl.class 3KB
AdminServiceImpl.class 3KB
LoginForm.class 3KB
ClazzServiceImpl.class 3KB
GradeServiceImpl.class 3KB
CreateVerifiCodeImage.class 3KB
TestConnection.class 2KB
MD5.class 2KB
AuthContextHolder.class 1KB
StudentService.class 983B
TeacherService.class 980B
AdminService.class 911B
MyConfig.class 864B
ClazzService.class 827B
GradeService.class 820B
ZhxyApplication.class 733B
ZhxyApplicationTests.class 531B
StudentMapper.class 395B
TeacherMapper.class 395B
AdminMapper.class 389B
ClazzMapper.class 389B
GradeMapper.class 389B
mvnw.cmd 7KB
chunk-elementUI.751bfb5e.css 183KB
chunk-elementUI.751bfb5e.css 183KB
app.2a150c78.css 12KB
app.2a150c78.css 12KB
chunk-299dfd1b.0c55c6b3.css 5KB
chunk-299dfd1b.0c55c6b3.css 5KB
chunk-libs.3dfb7769.css 3KB
chunk-libs.3dfb7769.css 3KB
chunk-4ce4e6a0.71911e6b.css 3KB
chunk-4ce4e6a0.71911e6b.css 3KB
chunk-2c5071da.97dec6d1.css 2KB
chunk-2c5071da.97dec6d1.css 2KB
chunk-96a4e134.2654d086.css 369B
chunk-96a4e134.2654d086.css 369B
chunk-417b88dd.6d26ba5b.css 335B
chunk-01081519.6d26ba5b.css 335B
chunk-35d45b48.6d26ba5b.css 335B
chunk-417b88dd.6d26ba5b.css 335B
chunk-01081519.6d26ba5b.css 335B
chunk-35d45b48.6d26ba5b.css 335B
.gitignore 395B
index.html 5KB
index.html 5KB
favicon.ico 66KB
favicon.ico 66KB
zhxy.iml 14KB
SystemController.java 11KB
UploadFile.java 4KB
Swagger2Config.java 3KB
JwtHelper.java 3KB
CreateVerifiCodeImage.java 3KB
GradeController.java 2KB
StudentController.java 2KB
ClazzController.java 2KB
TeacherController.java 2KB
AdminController.java 2KB
Result.java 2KB
StudentServiceImpl.java 2KB
TeacherServiceImpl.java 2KB
AdminServiceImpl.java 2KB
ClazzServiceImpl.java 2KB
ResultCodeEnum.java 1KB
GradeServiceImpl.java 1KB
TestConnection.java 1KB
MD5.java 1KB
Student.java 927B
Admin.java 920B
Teacher.java 892B
Clazz.java 809B
AuthContextHolder.java 807B
MyConfig.java 801B
Grade.java 791B
StudentService.java 614B
TeacherService.java 611B
AdminService.java 578B
GradeService.java 573B
ClazzService.java 553B
TeacherMapper.java 336B
StudentMapper.java 336B
ClazzMapper.java 332B
共 170 条
- 1
- 2
资源评论
- m0_751126362024-01-20终于找到了超赞的宝藏资源,果断冲冲冲,支持!
z同学的编程之路
- 粉丝: 2506
- 资源: 2135
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功