尚硅谷智慧校园 —— 6、管理员功能实现及修改密码

  • Post author:
  • Post category:其他

目录

1、查询管理员信息(分页带条件)

1.1、在 serivce 及其实现类添加方法

1.2、在 controller 添加方法 

2、添加或修改管理员信息

2.1、在 controller 添加方法

3、删除和批量删除管理员信息

 3.1、在 controller 中添加方法


1、查询管理员信息(分页带条件)

Request URL: http://localhost:8080/sms/adminController/getAllAdmin/{pageNo}/{pageSize}?adminName=%E4%B8%89
Request Method: GET

1.1、在 serivce 及其实现类添加方法

AdminService

    /**
     * 获取管理员信息(分页带条件)
     * @param page
     * @param adminName 管理员名字,用于模糊查询
     * @return
     */
    IPage<Admin> getAdminByOpr(Page<Admin> page, String adminName);

 AdminServiceImpl

    /**
     * 获取管理员信息(分页带条件)
     * @param page
     * @param adminName 管理员名字,用于模糊查询
     * @return
     */
    @Override
    public IPage<Admin> getAdminByOpr(Page<Admin> page, String adminName) {
        QueryWrapper<Admin> queryWrapper = new QueryWrapper<>();
        // 若adminName的条件不为空,则添加模糊查询的条件
        if(!StringUtils.isEmpty(adminName)){
            queryWrapper.like("name", adminName);
        }
        queryWrapper.orderByDesc("id");
        Page<Admin> adminPage = baseMapper.selectPage(page, queryWrapper);
        return adminPage;
    }

1.2、在 controller 添加方法 

AdminController

@RestController
@RequestMapping("/sms/adminController")
public class AdminController {

    @Autowired
    private AdminService adminService;

    /**
     * 查询管理员信息(分页带条件)
     * @param pageNo 分页查询的页码数
     * @param pageSize 分页查询每页的数据量
     * @param adminName 管理员名字,用于模糊查询
     * @return
     */
    @ApiOperation("查询管理员信息(分页带条件)")
    @GetMapping("/getAllAdmin/{pageNo}/{pageSize}")
    public Result getAllAdmin(
            @ApiParam("分页查询的页码数") @PathVariable("pageNo") Integer pageNo,
            @ApiParam("分页查询每页的数据量") @PathVariable("pageSize") Integer pageSize,
            @ApiParam("管理员名字,用于模糊查询") String adminName
    ){
        Page<Admin> page = new Page<>(pageNo, pageSize);
        IPage<Admin> iPage = adminService.getAdminByOpr(page, adminName);
        return Result.ok(iPage);
    }

}

2、添加或修改管理员信息

Request URL: http://localhost:8080/sms/adminController/saveOrUpdateAdmin
Request Method: POST 

添加管理员时没有 id 属性,修改管理员会发送 id 

2.1、在 controller 添加方法

    /**
     * 添加或修改管理员信息
     * @param admin 添加或修改的管理员信息
     * @return
     */
    @ApiOperation("添加或修改管理员信息")
    @PostMapping("/saveOrUpdateAdmin")
    public Result saveOrUpdateAdmin(
            @ApiParam("添加或修改的管理员信息") @RequestBody Admin admin
    ){
        Integer id = admin.getId();
        if(null == id || id == 0){
            admin.setPassword(MD5.encrypt(admin.getPassword()));
        }
        adminService.saveOrUpdate(admin);
        return Result.ok();
    }

3、删除和批量删除管理员信息

Request URL: http://localhost:8080/sms/adminController/deleteAdmin
Request Method: DELETE

发送要删除的管理员 id 的 JSON 数组 

 3.1、在 controller 中添加方法

    /**
     * 删除或批量删除管理员信息
     * @param ids 要删除的管理员的id的JSON数组
     * @return
     */
    @ApiOperation("删除或批量删除管理员信息")
    @DeleteMapping("/deleteAdmin")
    public Result deleteAdmin(
            @ApiParam("要删除的管理员的id的JSON数组") @RequestBody List<Integer> ids
    ){
        adminService.removeByIds(ids);
        return Result.ok();
    }

4、修改密码

Request URL: http://localhost:8080/sms/system/updatePwd/{oldPwd}/{newPwd}
Request Method: POST

在请求头包含 token,蕴含用户信息

4.1、在 controller 添加方法

SystemController

    /**
     * 修改用户密码
     * @param token
     * @param olePwd
     * @param newPwd
     * @return
     */
    @ApiOperation("修改用户密码")
    @PostMapping("/updatePwd/{oldPwd}/{newPwd}")
    public Result updatePwd(
            @ApiParam("蕴含用户信息的token口令") @RequestHeader("token") String token,
            @ApiParam("原密码") @PathVariable("oldPwd") String olePwd,
            @ApiParam("新密码") @PathVariable("newPwd") String newPwd
    ){
        // 判断token是否在有效期内
        boolean expiration = JwtHelper.isExpiration(token);
        if(expiration){
            return Result.fail().message("token失效,请重新登录");
        }

        // 获取用户id和用户类型
        Long userId = JwtHelper.getUserId(token);
        Integer userType = JwtHelper.getUserType(token);

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

        switch (userType){
            case 1:
                QueryWrapper<Admin> adminQueryWrapper = new QueryWrapper<>();
                adminQueryWrapper.eq("id", userId.intValue())
                        .eq("password", olePwd);
                Admin admin = adminService.getOne(adminQueryWrapper);
                if(admin != null){
                    // 找到该用户,修改密码
                    admin.setPassword(newPwd);
                    adminService.saveOrUpdate(admin);
                }else{
                    // 没有找到该用户,返回错误信息
                    return Result.fail().message("原密码错误");
                }
                break;

            case 2:
                QueryWrapper<Student> studentQueryWrapper = new QueryWrapper<>();
                studentQueryWrapper.eq("id", userId.intValue())
                        .eq("password", olePwd);
                Student student = studentService.getOne(studentQueryWrapper);
                if(student != null){
                    // 找到该用户,修改密码
                    student.setPassword(newPwd);
                    studentService.saveOrUpdate(student);
                }else{
                    // 没有找到该用户,返回错误信息
                    return Result.fail().message("原密码错误");
                }
                break;

            case 3:
                QueryWrapper<Teacher> teacherQueryWrapper = new QueryWrapper<>();
                teacherQueryWrapper.eq("id", userId.intValue())
                        .eq("password", olePwd);
                Teacher teacher = teacherService.getOne(teacherQueryWrapper);
                if(teacher != null){
                    // 找到该用户,修改密码
                    teacher.setPassword(newPwd);
                    teacherService.saveOrUpdate(teacher);
                }else{
                    // 没有找到该用户,返回错误信息
                    return Result.fail().message("原密码错误");
                }
                break;
        }
        return  Result.ok();
    }


版权声明:本文为Mr_zhangyj原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。