1.更新用户的头像
获取线程中的用户ID
//更新用户的头像
@Override
public void updateAvatar(String avatarUrl) {
//获取线程中用户的ID
Map<String ,Object> map = ThreadLocalUtil.get();
Integer id = (Integer) map.get("id");
userMapper.updateAvatar(avatarUrl,id);
}
Controller层的代码
//更新用户的头像
@PatchMapping("/updateAvatar")
public Result updateAvatar(@RequestParam String avatarUrl){
userService.updateAvatar(avatarUrl);
return Result.success();
}
Mapper层的代码
@Update("update user set user_pic=#{avatarUrl},update_time=now() where id=#{id}")
void updateAvatar(String avatarUrl,Integer id);
进行测试
我们看到此处虽然不是照片,但是也操作成功
我们要对参数进行合法性校验
我们要让图片变成一个url地址
添加注解
测试结果如图所示
测试合法参数
- 我们看到了两个参数的注解,@RequestBody和@RequestParam
- 他们分别有什么作用?
- 区别在哪里?
注解 @RequestParam接收的参数是来自requestHeader中,即 请求头。 通常用于GET请求,像POST、DELETE等其它类型的请求也可以使用。
注解 @RequestBody接收的参数是来自requestBody中,即请求体。一般用于处理非 Content-Type: application/x-www-form-urlencoded编码格式的数据,比如:application/json、application/xml等类型的数据。通常用于接收POST、DELETE等类型的请求数据,GET类型也可以适用。
2.更新用户的密码
代码如下
Controller层
//更新用户的密码
@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("缺少密码");
}
//查询原密码是否正确
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("原密码错误");
}
//两次输入的密码是否一致
if (!rePwd.equals(newPwd)){
return Result.error("两次填写的密码不一致");
}
//2.进行更新密码
userService.updatePwd(newPwd);
return Result.success();
}
Service层
@Override
public void updatePwd(String newPwd) {
//获取线程中用户的ID
Map<String ,Object> map = ThreadLocalUtil.get();
Integer id = (Integer) map.get("id");
userMapper.updatePwd(Md5Util.getMD5String(newPwd),id);
}
Mapper层
@Update("update user set password=#{password},update_time=now() where id=#{id}")
void updatePwd(String password, Integer id);