智慧校园云端管理系统的设计和实现(附源码及数据库)_基于云平台的智慧校园数据中心的设计与实现

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

import java.util.LinkedHashMap;
import java.util.Map;
import java.util.UUID;

@Api(tags = “系统控制器”)
@RestController
@RequestMapping(“/sms/system”)
public class SystemController {

@Autowired
private AdminService adminService;
@Autowired
private StudentService studentService;
@Autowired
private TeacherService teacherService;

/*

* 修改密码的处理器
* POST  /sms/system/updatePwd/123456/admin
*       /sms/system/updatePwd/{oldPwd}/{newPwd}
*       请求参数
            oldpwd
            newPwd
            token 头
        响应的数据
            Result OK data= null

* */

@ApiOperation("更新用户密码的处理器")
@PostMapping("/updatePwd/{oldPwd}/{newPwd}")
public Result updatePwd(
        @ApiParam("token口令") @RequestHeader("token") String token,
        @ApiParam("旧密码") @PathVariable("oldPwd") String oldPwd,
        @ApiParam("新密码") @PathVariable("newPwd") String newPwd
){
    boolean expiration = JwtHelper.isExpiration(token);
    if (expiration) {
        // token过期
        return Result.fail().message("token失效,请重新登录后修改密码");
    }
    // 获取用户ID和用类型
    Long userId = JwtHelper.getUserId(token);
    Integer userType = JwtHelper.getUserType(token);

    oldPwd= MD5.encrypt(oldPwd);
    newPwd= MD5.encrypt(newPwd);

    switch (userType) {
        case 1:
            QueryWrapper<Admin> queryWrapper1=new QueryWrapper<>();
            queryWrapper1.eq("id",userId.intValue());
            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",userId.intValue());
            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",userId.intValue());
            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();
}




// POST /sms/system/headerImgUpload
@ApiOperation("文件上传统一入口")
@PostMapping("/headerImgUpload")
public Result headerImgUpload(
       @ApiParam("头像文件") @RequestPart("multipartFile")  MultipartFile multipartFile
,
       HttpServletRequest request
){

    String uuid = UUID.randomUUID().toString().replace("-", "").toLowerCase();
    String originalFilename = multipartFile.getOriginalFilename();
    int i = originalFilename.lastIndexOf(".");
    String newFileName =uuid.concat(originalFilename.substring(i));

    // 保存文件 将文件发送到第三方/独立的图片服务器上,
    String portraitPath="C:/code/myzhxy/target/classes/public/upload/".concat(newFileName);
    try {
        multipartFile.transferTo(new File(portraitPath));
    } catch (IOException e) {
        e.printStackTrace();
    }


    // 响应图片的路径
    String path="upload/".concat(newFileName);
    return Result.ok(path);
}



@ApiOperation("通过token口令获取当前登录的用户信息的方法")
@GetMapping("/getInfo")
public Result getInfoByToken(
        @ApiParam("token口令")@RequestHeader("token") String token){
    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.getByTeacherById(userId);
            map.put("userType",3);
            map.put("user",teacher);
            break;
    }
    return Result.ok(map);
}




@ApiOperation("登录的方法")
@PostMapping("/login")
public Result login(
        @ApiParam("登录提交信息的form表单")@RequestBody LoginForm loginForm,
        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));
                }else{
                    throw new RuntimeException("用户名或者密码有误");
                }
                return Result.ok(map);
            } catch (RuntimeException e) {
                e.printStackTrace();
                return Result.fail().message(e.getMessage());
            }
        case 2:
            try {
                Student student =studentService.login(loginForm);
                if (null != student) {
                    // 用户的类型和用户id转换成一个密文,以token的名称向客户端反馈
                    map.put("token",JwtHelper.createToken(student.getId().longValue(), 2));
                }else{
                    throw new RuntimeException("用户名或者密码有误");
                }
                return Result.ok(map);
            } catch (RuntimeException e) {
                e.printStackTrace();
                return Result.fail().message(e.getMessage());
            }
        case 3:
            try {
                Teacher teahcer =teacherService.login(loginForm);
                if (null != teahcer) {
                    // 用户的类型和用户id转换成一个密文,以token的名称向客户端反馈
                    map.put("token",JwtHelper.createToken(teahcer.getId().longValue(), 3));
                }else{
                    throw new RuntimeException("用户名或者密码有误");
                }
                return Result.ok(map);
            } catch (RuntimeException e) {
                e.printStackTrace();
                return Result.fail().message(e.getMessage());
            }
    }
    return Result.fail().message("查无此用户");

}




@ApiOperation("获取验证码图片")
@GetMapping("/getVerifiCodeImage")
public void getVerifiCodeImage(HttpServletRequest request, HttpServletResponse response){
    // 获取图片
    BufferedImage verifiCodeImage = CreateVerifiCodeImage.getVerifiCodeImage();
    // 获取图片上的验证码
    String verifiCode =new String( CreateVerifiCodeImage.getVerifiCode());
    // 将验证码文本放入session域,为下一次验证做准备
    HttpSession session = request.getSession();
    session.setAttribute("verifiCode",verifiCode);
    // 将验证码图片响应给浏览器

    try {
        ImageIO.write(verifiCodeImage,"JPEG",response.getOutputStream());
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}





> 
> 毕设项目专栏:[https://blog.csdn.net/m0\_54925305/category\_11702151.html?spm=1001.2014.3001.5482](https://bbs.csdn.net/topics/618668825)
> 
> 
> 



> 
> IDEA配置
> 
> 
> 1、setting ->Build -> Build Tools -> Maven(配置)
> 
> 
> 2、setting -> Build -> Compiler -> Annotation Processors -> 勾上Enable(生效注解)
> 
> 
> 3、下载插件MyBatisX ,MyBatisPlus,Lombok
> 
> 
> 4、导入pom依赖
> 
> 
> 5、修改数据库等配置信息
> 


![img](https://img-blog.csdnimg.cn/img_convert/bb87548e45d1ced69e45083105ad70d7.png)
![img](https://img-blog.csdnimg.cn/img_convert/99b258015c52b92f938e8564f0473454.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**

配置信息
> 


[外链图片转存中...(img-xV7maPjz-1715810188429)]
[外链图片转存中...(img-YsDZ5Nxa-1715810188429)]

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值