3.3 用户中心查询用户权限
3.3.1 需求分析
认证服务请求用户中心查询用户信息,用户需要将用户基本信息和用户权限一同返回给认证服务。
本小节实现用户查询查询用户权限,并将用户权限信息添加到的用户信息中返回给认证服务。
以上需求需要修改如下接口:
[mw_shl_code=applescript,true]@GetMapping("/getuserext") public XcUserExt getUserext(@RequestParam("username") String username);
[/mw_shl_code]
3.3.2 DAO
在用户中心服务中编写dao,实现根据用户id查询权限。 1、定义XcMenuMapper.java
在com.xuecheng.ucenter.dao包下定义:
[mw_shl_code=applescript,true]@Mapper public interface XcMenuMapper {
public List selectPermissionByUserId(String userid); }
[/mw_shl_code]
2、XcMenuMapper.xml
在com.xuecheng.ucenter.dao下定义XcMenuMapper.xml
[mw_shl_code=applescript,true]<?xml version="1.0" encoding="UTF‐8" ?> //mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis‐3mapper.dtd" >
SELECT
id,
CODE,
p_id pId,
menu_name menuName,
url,
is_menu isMenu,
LEVEL,
sort,
STATUS,
icon,
create_time createTime,
update_time updateTiem
FROM
xc_menu
WHERE id IN(
SELECT menu_id FROM xc_permission WHERE role_id IN(
SELECT role_id FROM xc_user_role WHERE user_id = #{id}
)
)
[/mw_shl_code]
其它Dao采用spring data 编写如下:
3.3.3 Service
修改UserService的getUserExt方法,查询用户权限。
[mw_shl_code=applescript,true]//根据账号查询用户的信息,返回用户扩展信息 public XcUserExt getUserExt(String username){ XcUser xcUser = this.findXcUserByUsername(username);
if(xcUser == null){
return null;
}
//根据用户id查询用户权限
String userId = xcUser.getId();
List xcMenus = xcMenuMapper.selectPermissionByUserId(userId);
XcUserExt xcUserExt = new XcUserExt();
BeanUtils.copyProperties(xcUser,xcUserExt);
//用户的权限
xcUserExt.setPermissions(xcMenus);
return xcUserExt; }
[/mw_shl_code]