package com.atguigu.campus.controller;
import com.atguigu.campus.pojo.Admin;
import com.atguigu.campus.pojo.LoginForm;
import com.atguigu.campus.pojo.Student;
import com.atguigu.campus.pojo.Teacher;
import com.atguigu.campus.service.AdminService;
import com.atguigu.campus.service.StudentService;
import com.atguigu.campus.service.TeacherService;
import com.atguigu.campus.utils.*;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
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.*;
/**
* 将封装在result类中的数据以json格式返回给前端浏览器
*
* @author ziqiu
*/
@Api(tags = "系统控制层")
@RestController
@RequestMapping("/sms/system")
public class SystemController {
@Resource
private AdminService adminService;
@Resource
private StudentService studentService;
@Resource
private TeacherService teacherService;
/**
* 获取验证码图片响应到浏览器,并将验证码中的值保存到session域中 用于用户登录时/login校验
*/
@ApiOperation("获取验证码图片")
@RequestMapping("/getVerifiCodeImage")
public void getVerifiCodeImage(HttpSession session, HttpServletResponse response) throws IOException {
//通过工具类CreateVerifiCodeImage 获得验证码图片
BufferedImage verifiCodeImage = CreateVerifiCodeImage.getVerifiCodeImage();
//获取验证码图片中的值 并保存在session域中 用于用于登录时校验
String code = new String(CreateVerifiCodeImage.getVerifiCode());
session.setAttribute("code", code);
//将获取到的验证码图片响应到浏览器
ImageIO.write(verifiCodeImage, "JPG", response.getOutputStream());
}
/**
* 登录:进行验证码以及用户输入的账号密码进行校验
*
* @return 将校验的结果数据封装到Result类中返回给浏览器 若用户登录成功 则根据id和用户类型生成一个token放在Result类一起返回给浏览器
*/
@ApiOperation("登录功能 登陆成功将查询到的用户信息、用户类型 并封装id和userType成token 一起响应到浏览器")
@PostMapping("/login")
public Result<Object> login(@ApiParam("封装到实体类中请求体的json数据") @RequestBody LoginForm loginForm, HttpSession session) {
//校验验证码:
String userInputCode = loginForm.getVerifiCode();
//获取session中存放的验证码中的值
String code = session.getAttribute("code").toString();
//判断session中的验证码的值是否还在 若时间太长 会失效
if (code == null || "".equals(code)) {
return Result.fail().message("验证码失效,请重新输入");
}
//判断用户输入验证码与实际验证码的值是否相等
if (!userInputCode.equalsIgnoreCase(code)) {
return Result.fail().message("验证码输入有误");
}
//验证码输入正确后 将session中的验证码销毁
session.removeAttribute("code");
//获取用户类型 根据不同的用户判断输入的账号 密码 是否正确
Integer userType = loginForm.getUserType();
Map<String, Object> map = new LinkedHashMap<>();
if (userType == 1) {
Admin admin = adminService.selectAdminByNameAndPassword(loginForm.getUsername(), MD5.encrypt(loginForm.getPassword()));
//若查询结果为null 则数据库中查无相应的账号和密码 登录失败
if (admin == null) {
return Result.fail().message("账号或密码有误");
}
//登录成功 将用户id与用户类型 封装为一个 token 响应到浏览器
//让浏览器通过token再发送请求来进行解析 告诉前端应该前往哪个用户以及哪个类型用户的首页
String token = JwtHelper.createToken(admin.getId().longValue(), userType);
map.put("token", token);
} else if (userType == 2) {
Student student = studentService.selectStudentByNameAndPassword(loginForm.getUsername(), MD5.encrypt(loginForm.getPassword()));
if (student == null) {
return Result.fail().message("账号或密码有误");
}
String token = JwtHelper.createToken(student.getId().longValue(), userType);
map.put("token", token);
} else {
Teacher teacher = teacherService.selectTeacherByNameAndPassword(loginForm.getUsername(), MD5.encrypt(loginForm.getPassword()));
if (teacher == null) {
return Result.fail().message("账号或密码有误");
}
String token = JwtHelper.createToken(teacher.getId().longValue(), userType);
map.put("token", token);
}
return Result.ok(map);
}
/**
* 解析 浏览器发送来的请求头中的token
*
* @param token 浏览器发送来的token
* @return 封装数据到Result类 响应给浏览器
*/
@ApiOperation("将请求头中的token解析成id和用户类型 并根据id和类型查询用户信息 将信息和用户类型数据一起返回")
@RequestMapping("/getInfo")
public Result<Object> getInfo(@ApiParam("请求头中的token数据") @RequestHeader("token") String token) {
//判断token是否还有效 返回为true表示已经失效
if (JwtHelper.isExpiration(token)) {
return Result.build(null, ResultCodeEnum.TOKEN_ERROR);
}
//解析token 获取用户id 与 用户类型
Long userId = JwtHelper.getUserId(token);
Integer userType = JwtHelper.getUserType(token);
if (userType == null) {
return Result.build(null, ResultCodeEnum.TOKEN_ERROR);
}
//通过不同的用户类型 根据用户id 查询用户信息 并放到Result类中 响应给浏览器
Map<String, Object> map = new LinkedHashMap<>();
if (userType == 1) {
Admin admin = adminService.selectAdminById(userId);
map.put("user", admin);
map.put("userType", userType);
} else if (userType == 2) {
Student student = studentService.selectAdminById(userId);
map.put("user", student);
map.put("userType", userType);
} else {
Teacher teacher = teacherService.selectAdminById(userId);
map.put("user", teacher);
map.put("userType", userType);
}
return Result.ok(map);
}
@ApiOperation("上传头像")
@PostMapping("/headerImgUpload")
public Result<Object> headerImgUpload(@ApiParam("封装请求体中的图片二进制数据") @RequestPart("multipartFile") MultipartFile multipartFile) throws IOException {
String originalFilename = multipartFile.getOriginalFilename();
assert originalFilename != null;
String photoName = UUID.randomUUID().toString().replace("-", "").toLowerCase().
concat(originalFilename.substring(originalFilename.lastIndexOf(".")));
String savePath = "D:/JavaProject/smart_campus/module_campus/src/main/resources/static/upload/".concat(photoName);
//保存图片
multipartFile.transferTo(new File(savePath));
return Result.ok("upload/".concat(photoName));
}
@ApiOperation("修改用户密码功能")
@PostMapping("updatePwd/{oldPwd}/{newPwd}")
public Result<Object> updatePwd(@ApiParam("请求头中的token数据") @RequestHeader("token") String token,
没有合适的资源?快使用搜索试试~ 我知道了~
基于JavaScript的智慧云校园管理系统源码+sql数据库.zip
共100个文件
java:38个
jpg:20个
js:12个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 65 浏览量
2023-08-29
16:13:06
上传
评论 1
收藏 3.21MB ZIP 举报
温馨提示
【资源说明】 基于JavaScript的智慧云校园管理系统源码+sql数据库.zip 基于JavaScript的智慧云校园管理系统源码+sql数据库.zip基于JavaScript的智慧云校园管理系统源码+sql数据库.zip基于JavaScript的智慧云校园管理系统源码+sql数据库.zip基于JavaScript的智慧云校园管理系统源码+sql数据库.zip基于JavaScript的智慧云校园管理系统源码+sql数据库.zip基于JavaScript的智慧云校园管理系统源码+sql数据库.zip基于JavaScript的智慧云校园管理系统源码+sql数据库.zip基于JavaScript的智慧云校园管理系统源码+sql数据库.zip基于JavaScript的智慧云校园管理系统源码+sql数据库.zip基于JavaScript的智慧云校园管理系统源码+sql数据库.zip基于JavaScript的智慧云校园管理系统源码+sql数据库.zip基于JavaScript的智慧云校园管理系统源码+sql数据库.zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
基于JavaScript的智慧云校园管理系统源码+sql数据库.zip (100个子文件)
chunk-elementUI.751bfb5e.css 183KB
app.2a150c78.css 12KB
chunk-299dfd1b.0c55c6b3.css 5KB
chunk-libs.3dfb7769.css 3KB
chunk-4ce4e6a0.71911e6b.css 3KB
chunk-2c5071da.97dec6d1.css 2KB
chunk-96a4e134.2654d086.css 369B
chunk-01081519.6d26ba5b.css 335B
chunk-417b88dd.6d26ba5b.css 335B
chunk-35d45b48.6d26ba5b.css 335B
index.html 7KB
favicon.ico 66KB
SystemController.java 10KB
JwtHelper.java 3KB
Swagger2Config.java 3KB
GradeController.java 3KB
ClazzController.java 3KB
CreateVerifiCodeImage.java 3KB
StudentController.java 3KB
TeacherController.java 3KB
AdminController.java 3KB
Result.java 2KB
ResultCodeEnum.java 2KB
TeacherServiceImpl.java 1KB
StudentServiceImpl.java 1KB
Student.java 1KB
AdminServiceImpl.java 1KB
MD5.java 1KB
Teacher.java 1KB
SpringMvcConfigure.java 1KB
Clazz.java 1KB
Admin.java 1KB
MybatisPlusConfigure.java 1KB
Grade.java 954B
AuthContextHolder.java 883B
GradeServiceImpl.java 830B
ClazzServiceImpl.java 589B
LoginForm.java 579B
AdminService.java 575B
ClazzMapper.java 502B
StudentService.java 445B
TeacherService.java 445B
GradeService.java 382B
StudentMapper.java 365B
TeacherMapper.java 365B
GradeMapper.java 355B
AdminMapper.java 355B
ClazzService.java 339B
ModuleCampusApplication.java 335B
ModuleCampusApplicationTests.java 225B
cc1b88d551fe4450a68606804633b688.jpg 914KB
ae74cbe528594ee18fae14bd2d097114.jpg 741KB
bg.7285dd88.jpg 178KB
7700dcc5d0f04ef0b15c01d243299472.jpg 136KB
81b02300903a4652ae2c123780831485.jpg 103KB
d3f7b5eba3f74bc58166bea28bd091ff.jpg 94KB
c078cc63fb0f41259277d6a8da672878.jpg 91KB
3b663125eb404df39ca0b01ed700990e.jpg 85KB
d13c091f7b4d4fbb94d28bdb5c519a1f.jpg 68KB
ba3921bc7ee44285917bc20aa6455160.jpg 64KB
d378b54ce0fc4806947f3a32d610670a.jpg 60KB
17920f76ac314273ba7b3b71fd04770b.jpg 44KB
2d6f7dc2d5d740c7b5cbb4cce0863d81.jpg 35KB
default.jpg 31KB
4896d5c3d1f84e5d842c7ca5863fd300.jpg 31KB
40c9a26f9aad460bafa54c1a41c2e806.jpg 18KB
default.jpg 17KB
07d01a10575f4989b6f0f09ab4665f56.jpg 6KB
94cb600908174298991bc20d7ca10cd2.jpg 4KB
default.jpg 3KB
chunk-elementUI.edb7fc53.js 500KB
chunk-libs.9892d939.js 261KB
app.c9219e63.js 139KB
chunk-4ce4e6a0.aa96c8ff.js 28KB
chunk-01081519.06d2caa6.js 12KB
chunk-417b88dd.20c43d0c.js 12KB
chunk-35d45b48.4f5531a8.js 10KB
chunk-24890d62.13705e10.js 10KB
chunk-62446ae8.5a21e53b.js 8KB
chunk-2c5071da.266f37e1.js 6KB
chunk-299dfd1b.644f9fcc.js 1KB
chunk-96a4e134.ba975cc5.js 863B
menus.json 1KB
permission.json 166B
404.a57b6f31.png 96KB
logo.png 41KB
c51bd500b6b748f4a6974ad518de55a4.png 16KB
4b3ffcbd20b347fe9ec718cf42231d1f.png 16KB
ffffbee8cd3c4178a046bcbbb27dcdf7.png 16KB
404_cloud.0f4bc32b.png 5KB
campus.sql 11KB
element-icons.732389de.ttf 55KB
element-icons.535877f5.woff 28KB
pom.xml 5KB
StudentMapper.xml 1KB
TeacherMapper.xml 1KB
AdminMapper.xml 1KB
ClazzMapper.xml 1KB
GradeMapper.xml 879B
application.yml 804B
共 100 条
- 1
资源评论
Make程序设计
- 粉丝: 5638
- 资源: 3568
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功