大致分為這三步
首先在usercontroller中增加updatePwd方法
@PatchMapping ("/updatePwd")public Result updatePwd(@RequestBody Map<String,String> params){//1.校驗參數String oldPwd = params.get("old_pwd");String newPwd = params.get("new_pwd");String rePwd = params.get("re_pwd");if (!StringUtils.hasLength(oldPwd)||!StringUtils.hasLength(newPwd)||!StringUtils.hasLength(rePwd)){return Result.error("參數有誤");}//原密碼是否正確//調用userservice根據用戶名拿到原密碼,再和old_pwd進行比較Map<String,Object> map=ThreadLocalUtil.get();String username = (String) map.get("username");User loginUser = userService.findByUsername(username);if (!loginUser.getPassword().equals(Md5Util.getMD5String(oldPwd))){return Result.error("原密碼錯誤");}//newPwd和rePwd是否一樣if (!newPwd.equals(rePwd)){return Result.error("兩次密碼不一致");}//2.調用service完成密碼更新userService.updatePwd(newPwd);return Result.success();}```然后再userservice中增加
//更新密碼void updatePwd(String newPwd);再在userserviceimpl實現類中增加```java
@Overridepublic void updatePwd(String newPwd) {Map<String,Object> map= ThreadLocalUtil.get();Integer id = (Integer) map.get("id");userMapper.updatePwd(Md5Util.getMD5String(newPwd),id);}
最后修改mapper層代碼
@Update("update user set password=#{md5String},update_time=now() where id=#{id}")void updatePwd(String md5String, Integer id);
okk~