3.3 用户中心查询用户权限
3.3.1 需求分析
认证服务请求用户中心查询用户信息,用户需要将用户基本信息和用户权限一同返回给认证服务。
本小节实现用户查询查询用户权限,并将用户权限信息添加到的用户信息中返回给认证服务。
以上需求需要修改如下接口:
[AppleScript] 纯文本查看 复制代码 @GetMapping("/getuserext") public XcUserExt getUserext(@RequestParam("username") String username);
3.3.2 DAO
在用户中心服务中编写dao,实现根据用户id查询权限。 1、定义XcMenuMapper.java
在com.xuecheng.ucenter.dao包下定义:
[AppleScript] 纯文本查看 复制代码 @Mapper public interface XcMenuMapper {
public List<XcMenu> selectPermissionByUserId(String userid); }
2、XcMenuMapper.xml
在com.xuecheng.ucenter.dao下定义XcMenuMapper.xml
[AppleScript] 纯文本查看 复制代码 <?xml version="1.0" encoding="UTF‐8" ?> <!DOCTYPE mapper PUBLIC "‐//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis‐3mapper.dtd" > <mapper namespace="com.xuecheng.ucenter.dao.XcMenuMapper" >
<select id="selectPermissionByUserId" resultType="com.xuecheng.framework.domain.ucenter.XcMenu" parameterType="java.lang.String" >
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}
)
)
</select>
</mapper>
其它Dao采用spring data 编写如下:
3.3.3 Service
修改UserService的getUserExt方法,查询用户权限。
[AppleScript] 纯文本查看 复制代码 //根据账号查询用户的信息,返回用户扩展信息 public XcUserExt getUserExt(String username){ XcUser xcUser = this.findXcUserByUsername(username);
if(xcUser == null){
return null;
}
//根据用户id查询用户权限
String userId = xcUser.getId();
List<XcMenu> xcMenus = xcMenuMapper.selectPermissionByUserId(userId);
XcUserExt xcUserExt = new XcUserExt();
BeanUtils.copyProperties(xcUser,xcUserExt);
//用户的权限
xcUserExt.setPermissions(xcMenus);
return xcUserExt; }
|