1、修改之前应该先获取到用户的登陆信息。用户登陆的时候信息会存储到缓存中,因此我们只需要在缓存中直接取出即可,主要的代码实现:
/*
* 获取用户的个人资料,用于编辑的接口使用
* */
@RequestMapping(value = "/getUserData.json", method = RequestMethod.POST)
@ApiOperation(value = "获取用户的个人资料")
@ResponseBody
public String getUserData(
@ApiParam(name = "authentication", required = true, value = "鉴权码") @RequestParam() String authentication,
HttpServletRequest request){
//从缓存中获取到登录的信息
APIPrincipal apiPrincipal=(APIPrincipal) request.getSession()
.getAttribute(APIPrincipal.PREFIX_USER_SESSION);
return ApiResult.success(apiPrincipal);
}
2、修改用户的头像、昵称、性别、出生日期是一个接口。需要注意性别只能有二种情况(男或者女)没有第三种情况;出生日期我们需要使用的是日期的接受形式(@DateTimeFormat(pattern="yyyy-MM-dd-HH-mm-ss") Date birth)。用户的信息修改之后我们我们需要更新的不止是数据库,还有缓存中的数据(redisService.updateKeys(APIPrincipal.PREFIX_USER_SESSION + principal.getId() + "_*", principal);)
代码实现的主要思路:先从缓存中获取当前的用户信息,根据缓存中获取到的用户id就能查询出数据库中对于的记录。接下来就能修改用户的信息了。代码部分:
/**
*
* @author hou
* @desc 更新用户头像、昵称、性别、出生日期接口
* @param param
* @param authentication
* @param request
* @return
*/
@RequestMapping(value = "/updateUserInfo.json", method = RequestMethod.POST)
@ApiOperation(value = "更新用户头像、昵称、性别、出生日期接口")
@ResponseBody
public String updateUserInfo(
@ApiParam(value = "用户头像") @RequestParam(required=false) String photo ,
@ApiParam(value = "昵称