写在前面
上一篇中我们介绍了登录状态下重置密码功能开发,更新用户个人信息功能开发。那么本篇我们就来介绍如何获取用户详细信息的功能开发从而完成所有用户信息功能的开发。里面的内容很多,希望大家对此有一个提前的认识。
获取用户详细信息的功能开发
我们的开发顺序是service-->mybatis-->dao
,所以再次强调它的重要性!!!
打开UserController.java文件,写入以下代码:
/***
*
* 登录状态下的获取用户的详细信息
*/
@RequestMapping(value = "get_information.do",method = RequestMethod.POST) //这里就是具体的每个方法的url链接
@ResponseBody //自动序列化json功能
public ServerResponse<User> getInformation(HttpSession session){
User currentUser =(User)session.getAttribute(Const.CURRENT_USER); //注意这里我们已经在session里面拿到了用户的信息,因此后面使用的就是user对象本身了
if(currentUser ==null){
return ServerResponse.createByErrorCodeMessage(ResponseCode.NEED_LOGIN.getCode(),"用户未登录需要强制登录,状态status为10");
}
return iUserService.getInformation(currentUser.getId());
}
接着打开UserServiceImpl.java文件:
/***
*
* 登录状态下的获取用户的详细信息
*/
public ServerResponse<User> getInformation(Integer userId){
User user =userMapper.selectByPrimaryKey(userId);
if(user ==null){//根据用户id来获取其详细信息
return ServerResponse.createByErrorMessage("该用户不存在");
}
user.setPassword(StringUtils.EMPTY); //将密码这种关键信息设置为空
return ServerResponse.createBySuccess(user);
}
注意一下,我们这里使用了selectByPrimaryKey
方法,目的就是根据userId来进行个人信息查询的。当然我们需要在后台提供一个管理员登录的方法,不会允许任何人都可以使用个人信息查询功能,只有管理员才有登录后台的权限。我们在controller 包下面再新建一个名为backend的包(backend顾名思义就是后台模块),然后在backend包下面新建UserManageController.java文件,在里面写入以下代码:
package top.store.controller.backend;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import top.store.common.Const;
import top.store.common.ServerResponse;
import top.store.pojo.User;
import top.store.service.IUserService;
import javax.servlet.http.HttpSession;
@Controller
@RequestMapping("/manage/user")
public class UserManageController {
@Autowired
private IUserService iUserService;
@RequestMapping(value = "login.do",method = RequestMethod.POST)
@ResponseBody //自动序列化json功能
public ServerResponse<User> login (String username, String password, HttpSession session){
ServerResponse<User> response =iUserService.login(username,password);
if(response.isSuccess()){ //请求成功
User user = response.getData();
if(user.getRole() == Const.Role.ROLE_ADMIN){ //说明登录的是管理员
session.setAttribute(Const.CURRENT_USER,user); //把用户添加到session里面
return response;
}else {
return ServerResponse.createByErrorMessage("不是管理员,无法登录");
}
}
return response;
}
}
最后记得去IUserService.java文件里面添加接口类的声明:
ServerResponse<User> getInformation(Integer userId); //登录状态下的获取用户的详细信息
这样我们登录状态下获取用户个人详细信息的功能就开发完毕了。
最后记得去打开UserController.java文件,将里面目前为止所有的method = RequestMethod.GET
修改为method = RequestMethod.POST
,可以按住Ctrl+F调出搜索框,然后直接进行替换就可以了。
Md5加盐值的问题
这个问题后面会教大家如何使用,现在大家了解这个网站就行:cmd5
单元测试
到目前为止,关于个人用户的信息的开发已经完成了,接下来进行模块单元测试。
首先确保我们的tomcat的配置没有问题,打开logback.xml文件,具体检查的内容包括:项目日志的File和fileNamePattern的前一部分相同,然后启动我们的tomcat:
正常浏览器会自动打开http://localhost:8080/
页面,上面只有Hello World,但是并不影响我们的测试,我们然后打开我们的restlet client进行模块测试,我这里以注册为例进行说明(注意需要打开数据库,实时观察数据的变动):
上面的测试过程非常简单,选择post提交方式,根据你在UserController里的mapping设置,补充完整url,然后选择form,输入你在接口类声明的参数,点击提交就能出现结果了(具体的结果根据你参数的填写而有所不同):
上图是用户板块所有的测试接口,下面则是我们在测试时打印的日志:
通过上面的测试我们发现上面的接口都没有问题。
至此,我们关于用户的相关功能的实现就全部结束了,接下来我们开始进行商品信息的相关配置,感谢你的赏阅!
网友评论