更新用户密码功能
总说
过程参考黑马程序员SpringBoot3+Vue3全套视频教程,springboot+vue企业级全栈开发从基础、实战到面试一套通关_哔哩哔哩_bilibili
又是写了一半开始懒散不想写了,9天没写了。
博客仅记录过程,可能解释不详细,因为我也有点一知半解。只能说一边学习一边补充
目录
总说
一、功能实现
1.1 Controller层
1.2 Service层
1.3 Impl层
1.4 Mapper层
1.5 测试接口
二、优化
2.1
2.2
一、功能实现
本次实现更新密码功能
流程比较常规
需要输入旧密码oldPwd、新密码newPwd、重复新密码rePwd
1.1 Controller层
来到UserController,
检验三个参数是否为空
检验新密码和确认密码是否一致
然后实现更新
代码如下:
//更新密码
@PatchMapping("/updatePwd")
public Result updatePwd(@RequestBody Map<String, String> params){
//1、校验参数
String oldPwd = params.get("oldPwd");
String newPwd = params.get("newPwd");
String rePwd = params.get("rePwd");
if (!StringUtils.hasLength(oldPwd) || !StringUtils.hasLength(newPwd) || !StringUtils.hasLength(rePwd)) {
return Result.error("缺少必要参数");
}
//2、检验密码是否正确
Map<String, Object> map = ThreadLocalUtil.get();
String username = (String) map.get("username");// 在线程中获取用户名username
User user = userService.findByUserName(username); //根据用户名查询用户
if(!user.getPassword().equals(Md5Util.getMD5String(oldPwd))) {
return Result.error("原密码不正确");
}
//2次填写密码是否一致
if(!rePwd.equals(newPwd)) {
return Result.error("两次密码不一致");
}
//3、调用service完成密码更新
userService.updatePwd(newPwd);
return Result.success();
}
1.2 Service层
来到UserService,代码如下:
//更新用户密码
void updatePwd(String newPwd);
1.3 Impl层
来到UserServiceImpl中,添加代码如下:
@Override
public void updatePwd(String newPwd) {
//从ThreadLocal中获取用户id
Map<String, Object> map = ThreadLocalUtil.get();
Integer id = (Integer) map.get("id");
userMapper.updatePwd(Md5Util.getMD5String(newPwd));// 传入加密后的新密码
}
1.4 Mapper层
来到UserMapper
添加代码如下:
//根据id更新更新用户密码
@Update("update user set password=#{md5String},update_time=now() where id=#{id}")
void updatePwd(String md5String, Integer id);
1.5 测试接口
写一个新的接口如下:
old_pwd注意看你的数据库中的原密码
成功修改
这里一直给我说9090端口被占用,我这里在aqqlication.yml把端口号改成9091了
之后修好后会改回9090的
破案了,挂的梯子占用9090端口了,我真的服了