优化sql树形结构的查询-改为查询出所有的数据后用steam进行children Set
正在显示
10 个修改的文件
包含
262 行增加
和
21 行删除
| @@ -28,6 +28,9 @@ public interface ROLEMapper { | @@ -28,6 +28,9 @@ public interface ROLEMapper { | ||
| 28 | List<ROLE> findAll(@Param("roleName") String roleName, | 28 | List<ROLE> findAll(@Param("roleName") String roleName, |
| 29 | @Param("type") String type); | 29 | @Param("type") String type); |
| 30 | 30 | ||
| 31 | + List<ROLE> findAllWithOutTree(@Param("roleName") String roleName, | ||
| 32 | + @Param("type") String type); | ||
| 33 | + | ||
| 31 | int updateByPrimaryKeySelective(ROLE record); | 34 | int updateByPrimaryKeySelective(ROLE record); |
| 32 | 35 | ||
| 33 | int updateByPrimaryKey(ROLE record); | 36 | int updateByPrimaryKey(ROLE record); |
| @@ -20,6 +20,8 @@ public interface USERSMapper { | @@ -20,6 +20,8 @@ public interface USERSMapper { | ||
| 20 | 20 | ||
| 21 | List<USERS> selectByUsername(String userName); | 21 | List<USERS> selectByUsername(String userName); |
| 22 | 22 | ||
| 23 | + USERS selectByUsernameWithRoleAndPerm(String userName); | ||
| 24 | + | ||
| 23 | List<USERS> selectAllUser(USERS users); | 25 | List<USERS> selectAllUser(USERS users); |
| 24 | 26 | ||
| 25 | } | 27 | } |
| @@ -11,6 +11,7 @@ import org.springframework.security.web.util.matcher.AntPathRequestMatcher; | @@ -11,6 +11,7 @@ import org.springframework.security.web.util.matcher.AntPathRequestMatcher; | ||
| 11 | import org.springframework.stereotype.Service; | 11 | import org.springframework.stereotype.Service; |
| 12 | import org.springframework.util.AntPathMatcher; | 12 | import org.springframework.util.AntPathMatcher; |
| 13 | 13 | ||
| 14 | +import javax.annotation.Resource; | ||
| 14 | import javax.servlet.http.HttpServletRequest; | 15 | import javax.servlet.http.HttpServletRequest; |
| 15 | import java.util.*; | 16 | import java.util.*; |
| 16 | 17 | ||
| @@ -21,8 +22,9 @@ import java.util.*; | @@ -21,8 +22,9 @@ import java.util.*; | ||
| 21 | @Service | 22 | @Service |
| 22 | public class MyInvocationSecurityMetadataSourceService implements FilterInvocationSecurityMetadataSource{ | 23 | public class MyInvocationSecurityMetadataSourceService implements FilterInvocationSecurityMetadataSource{ |
| 23 | 24 | ||
| 24 | - @Autowired | 25 | + @Resource |
| 25 | PERMISSIONMapper permissionMapper; | 26 | PERMISSIONMapper permissionMapper; |
| 27 | + | ||
| 26 | AntPathMatcher pathMatcher = new AntPathMatcher(); | 28 | AntPathMatcher pathMatcher = new AntPathMatcher(); |
| 27 | 29 | ||
| 28 | private HashMap<String, Collection<ConfigAttribute>> map =null; | 30 | private HashMap<String, Collection<ConfigAttribute>> map =null; |
| @@ -8,16 +8,15 @@ import com.tianbo.warehouse.annotation.cache.annotation.RedisCacheEvict; | @@ -8,16 +8,15 @@ import com.tianbo.warehouse.annotation.cache.annotation.RedisCacheEvict; | ||
| 8 | import com.tianbo.warehouse.annotation.cache.annotation.RedisCacheable; | 8 | import com.tianbo.warehouse.annotation.cache.annotation.RedisCacheable; |
| 9 | import com.tianbo.warehouse.dao.PERMISSIONMapper; | 9 | import com.tianbo.warehouse.dao.PERMISSIONMapper; |
| 10 | import com.tianbo.warehouse.model.PERMISSION; | 10 | import com.tianbo.warehouse.model.PERMISSION; |
| 11 | +import com.tianbo.warehouse.model.ROLE; | ||
| 11 | import com.tianbo.warehouse.service.PermissionService; | 12 | import com.tianbo.warehouse.service.PermissionService; |
| 12 | import lombok.extern.slf4j.Slf4j; | 13 | import lombok.extern.slf4j.Slf4j; |
| 13 | import org.springframework.stereotype.Service; | 14 | import org.springframework.stereotype.Service; |
| 14 | 15 | ||
| 15 | import javax.annotation.Resource; | 16 | import javax.annotation.Resource; |
| 16 | import javax.validation.constraints.NotNull; | 17 | import javax.validation.constraints.NotNull; |
| 17 | -import java.util.ArrayList; | ||
| 18 | -import java.util.HashMap; | ||
| 19 | -import java.util.List; | ||
| 20 | -import java.util.Map; | 18 | +import java.util.*; |
| 19 | +import java.util.stream.Collectors; | ||
| 21 | 20 | ||
| 22 | @Slf4j | 21 | @Slf4j |
| 23 | @Service("PermissionService") | 22 | @Service("PermissionService") |
| @@ -84,6 +83,17 @@ public class PermissionServiceImp implements PermissionService { | @@ -84,6 +83,17 @@ public class PermissionServiceImp implements PermissionService { | ||
| 84 | try { | 83 | try { |
| 85 | //查询所有菜单 | 84 | //查询所有菜单 |
| 86 | List<PERMISSION> allMenu = permissionMapper.findByUserId(userId); | 85 | List<PERMISSION> allMenu = permissionMapper.findByUserId(userId); |
| 86 | + | ||
| 87 | + List<PERMISSION> allTreeMenu = allMenu.stream() | ||
| 88 | + .filter(perm -> perm.getParentId() == 0) | ||
| 89 | + .map((perm) ->{ | ||
| 90 | + perm.setChildren(getChildrens(perm, allMenu)); | ||
| 91 | + return perm; | ||
| 92 | + }).sorted((befor,after) -> { | ||
| 93 | + return (befor.getPermissionOrder() == null ? 0 : Integer.parseInt(befor.getPermissionOrder())) - (after.getPermissionOrder() == null ? 0 : Integer.parseInt(after.getPermissionOrder())); | ||
| 94 | + }).collect(Collectors.toList()); | ||
| 95 | + | ||
| 96 | + | ||
| 87 | // //根节点 | 97 | // //根节点 |
| 88 | // List<PERMISSION> rootMenu = new ArrayList<PERMISSION>(); | 98 | // List<PERMISSION> rootMenu = new ArrayList<PERMISSION>(); |
| 89 | // for (PERMISSION nav : allMenu) { | 99 | // for (PERMISSION nav : allMenu) { |
| @@ -105,7 +115,7 @@ public class PermissionServiceImp implements PermissionService { | @@ -105,7 +115,7 @@ public class PermissionServiceImp implements PermissionService { | ||
| 105 | * | 115 | * |
| 106 | */ | 116 | */ |
| 107 | data.put("success", "true"); | 117 | data.put("success", "true"); |
| 108 | - data.put("list", allMenu); | 118 | + data.put("list", allTreeMenu); |
| 109 | return data; | 119 | return data; |
| 110 | } catch (Exception e) { | 120 | } catch (Exception e) { |
| 111 | data.put("success", "false"); | 121 | data.put("success", "false"); |
| @@ -184,7 +194,32 @@ public class PermissionServiceImp implements PermissionService { | @@ -184,7 +194,32 @@ public class PermissionServiceImp implements PermissionService { | ||
| 184 | @Override | 194 | @Override |
| 185 | // @RedisCacheable(cacheKey = "getUserMenuTreeByUserId") | 195 | // @RedisCacheable(cacheKey = "getUserMenuTreeByUserId") |
| 186 | public List<PERMISSION> getUserMenuTreeByUserId(@NotNull Integer userId) { | 196 | public List<PERMISSION> getUserMenuTreeByUserId(@NotNull Integer userId) { |
| 187 | - return permissionMapper.getUserMenuTreeByUserId(userId); | 197 | + List<PERMISSION> loginedUserMenus = permissionMapper.getUserMenuTreeByUserId(userId); |
| 198 | + List<PERMISSION> loginedUserMenusTree = loginedUserMenus.stream() | ||
| 199 | + .filter(perm -> perm.getParentId() == 0) | ||
| 200 | + .map((perm) ->{ | ||
| 201 | + perm.setChildren(getChildrens(perm, loginedUserMenus)); | ||
| 202 | + return perm; | ||
| 203 | + }).sorted((befor,after) -> { | ||
| 204 | + return (befor.getPermissionOrder() == null ? 0 : Integer.parseInt(befor.getPermissionOrder())) - (after.getPermissionOrder() == null ? 0 : Integer.parseInt(after.getPermissionOrder())); | ||
| 205 | + }).collect(Collectors.toList()); | ||
| 206 | + return loginedUserMenusTree; | ||
| 207 | + } | ||
| 208 | + | ||
| 209 | + //递归查找所有菜单的子菜单 | ||
| 210 | + private List<PERMISSION> getChildrens(PERMISSION root, List<PERMISSION> listAll) { | ||
| 211 | + List<PERMISSION> children = listAll.stream().filter(categoryEntity -> { | ||
| 212 | + return categoryEntity.getParentId().equals(root.getPermissionId()); | ||
| 213 | + }).map(categoryEntity -> { | ||
| 214 | + //1、找到子菜单(递归) | ||
| 215 | + categoryEntity.setChildren(getChildrens(categoryEntity, listAll)); | ||
| 216 | + return categoryEntity; | ||
| 217 | + }).sorted((befor,after) -> { | ||
| 218 | + return (befor.getPermissionOrder() == null ? 0 : Integer.parseInt(befor.getPermissionOrder())) - (after.getPermissionOrder() == null ? 0 : Integer.parseInt(after.getPermissionOrder())); | ||
| 219 | + }).collect(Collectors.toList()); | ||
| 220 | + | ||
| 221 | + return children; | ||
| 222 | + | ||
| 188 | } | 223 | } |
| 189 | 224 | ||
| 190 | } | 225 | } |
| @@ -15,32 +15,76 @@ import org.springframework.beans.factory.annotation.Autowired; | @@ -15,32 +15,76 @@ import org.springframework.beans.factory.annotation.Autowired; | ||
| 15 | import org.springframework.stereotype.Service; | 15 | import org.springframework.stereotype.Service; |
| 16 | import org.springframework.transaction.annotation.Transactional; | 16 | import org.springframework.transaction.annotation.Transactional; |
| 17 | 17 | ||
| 18 | +import javax.annotation.Resource; | ||
| 19 | +import java.util.Comparator; | ||
| 18 | import java.util.List; | 20 | import java.util.List; |
| 21 | +import java.util.stream.Collectors; | ||
| 19 | 22 | ||
| 20 | @Service(value = "roleService") | 23 | @Service(value = "roleService") |
| 21 | public class RoleServiceImp implements RoleService{ | 24 | public class RoleServiceImp implements RoleService{ |
| 22 | 25 | ||
| 23 | - @Autowired | 26 | + @Resource |
| 24 | private ROLEMapper roleMapper; | 27 | private ROLEMapper roleMapper; |
| 25 | 28 | ||
| 26 | - @Autowired | 29 | + @Resource |
| 27 | private RolePermissionMapper rolePermissionMapper; | 30 | private RolePermissionMapper rolePermissionMapper; |
| 28 | 31 | ||
| 29 | - @Autowired | 32 | + @Resource |
| 30 | DepartmentMapper departmentMapper; | 33 | DepartmentMapper departmentMapper; |
| 31 | 34 | ||
| 32 | @Autowired | 35 | @Autowired |
| 33 | PermissionService permissionService; | 36 | PermissionService permissionService; |
| 34 | 37 | ||
| 38 | + /** | ||
| 39 | + * | ||
| 40 | + * @param pageNum | ||
| 41 | + * @param pageSize | ||
| 42 | + * @param roleName | ||
| 43 | + * @param type | ||
| 44 | + * @return 返回树形结构 | ||
| 45 | + */ | ||
| 35 | @Override | 46 | @Override |
| 36 | public PageInfo<ROLE> findAll(int pageNum, int pageSize, String roleName, String type){ | 47 | public PageInfo<ROLE> findAll(int pageNum, int pageSize, String roleName, String type){ |
| 37 | Page<ROLE> page = PageHelper.startPage(pageNum,pageSize); | 48 | Page<ROLE> page = PageHelper.startPage(pageNum,pageSize); |
| 38 | List<ROLE> list = roleMapper.findAll(roleName, type); | 49 | List<ROLE> list = roleMapper.findAll(roleName, type); |
| 50 | + | ||
| 51 | +// List<ROLE> treeList = list.stream() | ||
| 52 | +// .filter(role -> role.getParentid() == 0) | ||
| 53 | +// .map((role) ->{ | ||
| 54 | +// role.setChildren(getChildrens(role, list)); | ||
| 55 | +// return role; | ||
| 56 | +// }) | ||
| 57 | +// .sorted(Comparator.comparingInt(ROLE::getRsort)) | ||
| 58 | +// .collect(Collectors.toList()); | ||
| 59 | + | ||
| 39 | PageInfo<ROLE> result = new PageInfo<ROLE>(list); | 60 | PageInfo<ROLE> result = new PageInfo<ROLE>(list); |
| 40 | 61 | ||
| 41 | return result; | 62 | return result; |
| 42 | } | 63 | } |
| 43 | 64 | ||
| 65 | + /** | ||
| 66 | + * sql查询出所有的组织机构,再根据结果集进行children Set | ||
| 67 | + * @param roleName | ||
| 68 | + * @param type | ||
| 69 | + * @return | ||
| 70 | + */ | ||
| 71 | + public PageInfo<ROLE> findAllWithOutTree(String roleName, String type){ | ||
| 72 | + List<ROLE> list = roleMapper.findAllWithOutTree(roleName, type); | ||
| 73 | + | ||
| 74 | + List<ROLE> treeList = list.stream() | ||
| 75 | + .filter(role -> role.getParentid() == 0) | ||
| 76 | + .map((role) ->{ | ||
| 77 | + role.setChildren(getChildrens(role, list)); | ||
| 78 | + return role; | ||
| 79 | + }) | ||
| 80 | + .sorted(Comparator.comparingInt(ROLE::getRsort)) | ||
| 81 | + .collect(Collectors.toList()); | ||
| 82 | + | ||
| 83 | + PageInfo<ROLE> result = new PageInfo<ROLE>(treeList); | ||
| 84 | + | ||
| 85 | + return result; | ||
| 86 | + } | ||
| 87 | + | ||
| 44 | @Override | 88 | @Override |
| 45 | public int insertSelective(ROLE record){ | 89 | public int insertSelective(ROLE record){ |
| 46 | return roleMapper.insertSelective(record); | 90 | return roleMapper.insertSelective(record); |
| @@ -88,4 +132,21 @@ public class RoleServiceImp implements RoleService{ | @@ -88,4 +132,21 @@ public class RoleServiceImp implements RoleService{ | ||
| 88 | } | 132 | } |
| 89 | } | 133 | } |
| 90 | 134 | ||
| 135 | + | ||
| 136 | + //递归查找所有菜单的子菜单 | ||
| 137 | + private List<ROLE> getChildrens(ROLE root, List<ROLE> listAll) { | ||
| 138 | + List<ROLE> children = listAll.stream().filter(categoryEntity -> { | ||
| 139 | + return categoryEntity.getParentid().equals(root.getRoleId()); | ||
| 140 | + }).map(categoryEntity -> { | ||
| 141 | + //1、找到子菜单(递归) | ||
| 142 | + categoryEntity.setChildren(getChildrens(categoryEntity, listAll)); | ||
| 143 | + return categoryEntity; | ||
| 144 | + }).sorted(Comparator.comparingInt(ROLE::getRsort)) | ||
| 145 | + .collect(Collectors.toList()); | ||
| 146 | + | ||
| 147 | + return children; | ||
| 148 | + | ||
| 149 | + } | ||
| 150 | + | ||
| 151 | + | ||
| 91 | } | 152 | } |
| @@ -44,11 +44,30 @@ public class UserServiceImpl implements UserService{ | @@ -44,11 +44,30 @@ public class UserServiceImpl implements UserService{ | ||
| 44 | @Override | 44 | @Override |
| 45 | public USERS loadByUsername(String username){ | 45 | public USERS loadByUsername(String username){ |
| 46 | List<USERS> userList = usersMapper.selectByUsername(username); | 46 | List<USERS> userList = usersMapper.selectByUsername(username); |
| 47 | + USERS userInfo = usersMapper.selectByUsernameWithRoleAndPerm(username); | ||
| 47 | 48 | ||
| 49 | + //新SQL MYBATIS SQL 绑定role跟perm的方法,以减少数据库查询次数 | ||
| 50 | + if (userInfo!=null){ | ||
| 51 | + if (userInfo.getRoles()!=null && userInfo.getRoles().isEmpty()){ | ||
| 52 | + List<ROLE> topRoles = roleMapper.selectTopByChildID(userInfo.getRoles().get(0).getRoleId()); | ||
| 53 | + topRoles.removeAll(Collections.singleton(null)); | ||
| 54 | + | ||
| 55 | + if (!topRoles.isEmpty()){ | ||
| 56 | + userInfo.setCompanyId(topRoles.get(0).getRoleId()); | ||
| 57 | + userInfo.setCompanyName(topRoles.get(0).getRoleName()); | ||
| 58 | + topRoles.get(0).setChildren(null); | ||
| 59 | + topRoles.get(0).setPermissions(null); | ||
| 60 | + userInfo.setCompanyInfo(topRoles.get(0)); | ||
| 61 | + } | ||
| 62 | + } | ||
| 63 | + return userInfo; | ||
| 64 | + } | ||
| 65 | + | ||
| 66 | + //旧方法 | ||
| 48 | if (userList != null && userList.size() > 0) { | 67 | if (userList != null && userList.size() > 0) { |
| 49 | USERS user = userList.get(0); | 68 | USERS user = userList.get(0); |
| 50 | 69 | ||
| 51 | - //获取用户角色列表,用户没有配置相关组织机构时,获取不到权限 | 70 | + //获取用户角色列表-非树形结构,用户没有配置相关组织机构时,获取不到权限 |
| 52 | List<ROLE> roleList = roleMapper.findRolesByUserId(user.getUserId()); | 71 | List<ROLE> roleList = roleMapper.findRolesByUserId(user.getUserId()); |
| 53 | //用户未绑定组织机构时会查询出null数组信息,现象为All elements are null | 72 | //用户未绑定组织机构时会查询出null数组信息,现象为All elements are null |
| 54 | 73 | ||
| @@ -69,7 +88,7 @@ public class UserServiceImpl implements UserService{ | @@ -69,7 +88,7 @@ public class UserServiceImpl implements UserService{ | ||
| 69 | user.setRoles(roleList); | 88 | user.setRoles(roleList); |
| 70 | } | 89 | } |
| 71 | 90 | ||
| 72 | - //用户权限列表 | 91 | + //用户权限列表-非树形 |
| 73 | List<PERMISSION> permissionList = permissionService.findByUserIdWithLogin(user.getUserId()); | 92 | List<PERMISSION> permissionList = permissionService.findByUserIdWithLogin(user.getUserId()); |
| 74 | if (!permissionList.isEmpty()){ | 93 | if (!permissionList.isEmpty()){ |
| 75 | user.setPermissions(permissionList); | 94 | user.setPermissions(permissionList); |
| @@ -92,6 +111,7 @@ public class UserServiceImpl implements UserService{ | @@ -92,6 +111,7 @@ public class UserServiceImpl implements UserService{ | ||
| 92 | for (USERS user: list) { | 111 | for (USERS user: list) { |
| 93 | // List<PERMISSION> permissionList = permissionMapper.findByUserId(user.getUserId()); | 112 | // List<PERMISSION> permissionList = permissionMapper.findByUserId(user.getUserId()); |
| 94 | // user.setPermissions(permissionList); | 113 | // user.setPermissions(permissionList); |
| 114 | + //为了前端role配置的适配 | ||
| 95 | List<ROLE> roleList = roleMapper.findRolesByUserId(user.getUserId()); | 115 | List<ROLE> roleList = roleMapper.findRolesByUserId(user.getUserId()); |
| 96 | user.setRoles(roleList); | 116 | user.setRoles(roleList); |
| 97 | } | 117 | } |
| @@ -101,7 +101,7 @@ FROM | @@ -101,7 +101,7 @@ FROM | ||
| 101 | LEFT JOIN role R ON R.role_id= RP.role_id | 101 | LEFT JOIN role R ON R.role_id= RP.role_id |
| 102 | where P.url = #{permissionUrl,jdbcType=VARCHAR} ORDER BY permission_order | 102 | where P.url = #{permissionUrl,jdbcType=VARCHAR} ORDER BY permission_order |
| 103 | </select> | 103 | </select> |
| 104 | - <select id="findByUserId" parameterType="java.lang.Integer" resultMap="treeResultMap"> | 104 | + <select id="findByUserId" parameterType="java.lang.Integer" resultMap="BaseResultMap"> |
| 105 | SELECT | 105 | SELECT |
| 106 | P.* | 106 | P.* |
| 107 | FROM | 107 | FROM |
| @@ -129,7 +129,6 @@ where P.url = #{permissionUrl,jdbcType=VARCHAR} ORDER BY permission_order | @@ -129,7 +129,6 @@ where P.url = #{permissionUrl,jdbcType=VARCHAR} ORDER BY permission_order | ||
| 129 | ) | 129 | ) |
| 130 | ) | 130 | ) |
| 131 | ) | 131 | ) |
| 132 | - AND P.parent_id = 0 | ||
| 133 | ORDER BY permission_order | 132 | ORDER BY permission_order |
| 134 | </select> | 133 | </select> |
| 135 | <select id="findByUserIdWithLogin" parameterType="java.lang.Integer" resultMap="BaseResultMap"> | 134 | <select id="findByUserIdWithLogin" parameterType="java.lang.Integer" resultMap="BaseResultMap"> |
| @@ -325,14 +324,12 @@ where P.url = #{permissionUrl,jdbcType=VARCHAR} ORDER BY permission_order | @@ -325,14 +324,12 @@ where P.url = #{permissionUrl,jdbcType=VARCHAR} ORDER BY permission_order | ||
| 325 | where permission_id = #{permissionId,jdbcType=INTEGER} | 324 | where permission_id = #{permissionId,jdbcType=INTEGER} |
| 326 | </update> | 325 | </update> |
| 327 | 326 | ||
| 328 | - <select id="getUserMenuTreeByUserId" parameterType="java.lang.Integer" resultMap="treeMap"> | 327 | + <select id="getUserMenuTreeByUserId" parameterType="java.lang.Integer" resultMap="BaseResultMap"> |
| 329 | SELECT | 328 | SELECT |
| 330 | P.* | 329 | P.* |
| 331 | FROM | 330 | FROM |
| 332 | permission P | 331 | permission P |
| 333 | WHERE | 332 | WHERE |
| 334 | - parent_id = 0 | ||
| 335 | - AND | ||
| 336 | ismenu = 1 | 333 | ismenu = 1 |
| 337 | AND | 334 | AND |
| 338 | P.permission_id IN ( | 335 | P.permission_id IN ( |
| @@ -13,9 +13,36 @@ | @@ -13,9 +13,36 @@ | ||
| 13 | <result column="business_license" jdbcType="VARCHAR" property="businessLicense" /> | 13 | <result column="business_license" jdbcType="VARCHAR" property="businessLicense" /> |
| 14 | <result column="departmentId" jdbcType="VARCHAR" property="departmentid" /> | 14 | <result column="departmentId" jdbcType="VARCHAR" property="departmentid" /> |
| 15 | <result column="mq_code" jdbcType="VARCHAR" property="mqcode" /> | 15 | <result column="mq_code" jdbcType="VARCHAR" property="mqcode" /> |
| 16 | + </resultMap> | ||
| 17 | + <resultMap id="TreeWithPermResultMap" type="com.tianbo.warehouse.model.ROLE"> | ||
| 18 | + <id column="role_id" jdbcType="INTEGER" property="roleId" /> | ||
| 19 | + <result column="role_name" jdbcType="VARCHAR" property="roleName" /> | ||
| 20 | + <result column="role_sign" jdbcType="VARCHAR" property="roleSign" /> | ||
| 21 | + <result column="description" jdbcType="VARCHAR" property="description" /> | ||
| 22 | + <result column="type" jdbcType="VARCHAR" property="type" /> | ||
| 23 | + <result column="parentId" jdbcType="INTEGER" property="parentid" /> | ||
| 24 | + <result column="rsort" jdbcType="INTEGER" property="rsort" /> | ||
| 25 | + <result column="customs_reg_code" jdbcType="VARCHAR" property="customsRegCode" /> | ||
| 26 | + <result column="business_license" jdbcType="VARCHAR" property="businessLicense" /> | ||
| 27 | + <result column="departmentId" jdbcType="VARCHAR" property="departmentid" /> | ||
| 28 | + <result column="mq_code" jdbcType="VARCHAR" property="mqcode" /> | ||
| 16 | <collection column="role_id" javaType="java.util.ArrayList" ofType="com.tianbo.warehouse.model.PERMISSION" property="permissions" select="com.tianbo.warehouse.dao.PERMISSIONMapper.getRolePermisson" /> | 29 | <collection column="role_id" javaType="java.util.ArrayList" ofType="com.tianbo.warehouse.model.PERMISSION" property="permissions" select="com.tianbo.warehouse.dao.PERMISSIONMapper.getRolePermisson" /> |
| 17 | <collection column="role_id" property="children" select="selectByParentId" /> | 30 | <collection column="role_id" property="children" select="selectByParentId" /> |
| 18 | </resultMap> | 31 | </resultMap> |
| 32 | + <resultMap id="TreeWithResultMap" type="com.tianbo.warehouse.model.ROLE"> | ||
| 33 | + <id column="role_id" jdbcType="INTEGER" property="roleId" /> | ||
| 34 | + <result column="role_name" jdbcType="VARCHAR" property="roleName" /> | ||
| 35 | + <result column="role_sign" jdbcType="VARCHAR" property="roleSign" /> | ||
| 36 | + <result column="description" jdbcType="VARCHAR" property="description" /> | ||
| 37 | + <result column="type" jdbcType="VARCHAR" property="type" /> | ||
| 38 | + <result column="parentId" jdbcType="INTEGER" property="parentid" /> | ||
| 39 | + <result column="rsort" jdbcType="INTEGER" property="rsort" /> | ||
| 40 | + <result column="customs_reg_code" jdbcType="VARCHAR" property="customsRegCode" /> | ||
| 41 | + <result column="business_license" jdbcType="VARCHAR" property="businessLicense" /> | ||
| 42 | + <result column="departmentId" jdbcType="VARCHAR" property="departmentid" /> | ||
| 43 | + <result column="mq_code" jdbcType="VARCHAR" property="mqcode" /> | ||
| 44 | + <collection column="role_id" property="children" select="selectByParentId" /> | ||
| 45 | + </resultMap> | ||
| 19 | <sql id="Base_Column_List"> | 46 | <sql id="Base_Column_List"> |
| 20 | role_id, role_name, role_sign, description, type, parentId, rsort, customs_reg_code, | 47 | role_id, role_name, role_sign, description, type, parentId, rsort, customs_reg_code, |
| 21 | business_license, departmentId, mq_code | 48 | business_license, departmentId, mq_code |
| @@ -26,7 +53,7 @@ | @@ -26,7 +53,7 @@ | ||
| 26 | from role | 53 | from role |
| 27 | where role_id = #{roleId,jdbcType=INTEGER} | 54 | where role_id = #{roleId,jdbcType=INTEGER} |
| 28 | </select> | 55 | </select> |
| 29 | - <select id="selectByParentId" parameterType="java.lang.Integer" resultMap="BaseResultMap"> | 56 | + <select id="selectByParentId" parameterType="java.lang.Integer" resultMap="TreeWithResultMap"> |
| 30 | select | 57 | select |
| 31 | <include refid="Base_Column_List" /> | 58 | <include refid="Base_Column_List" /> |
| 32 | from role | 59 | from role |
| @@ -205,18 +232,20 @@ WHERE | @@ -205,18 +232,20 @@ WHERE | ||
| 205 | where role_id = #{roleId,jdbcType=INTEGER} | 232 | where role_id = #{roleId,jdbcType=INTEGER} |
| 206 | </update> | 233 | </update> |
| 207 | 234 | ||
| 208 | - <select id="findAll" parameterType="java.lang.String" resultMap="BaseResultMap"> | 235 | + <select id="findAll" parameterType="java.lang.String" resultMap="TreeWithResultMap"> |
| 209 | SELECT | 236 | SELECT |
| 210 | <include refid="Base_Column_List" /> | 237 | <include refid="Base_Column_List" /> |
| 211 | FROM role | 238 | FROM role |
| 212 | - where parentId=0 | ||
| 213 | - and 1=1 | 239 | + <where> |
| 240 | + parentId = 0 | ||
| 214 | <if test="roleName != '' and roleName !=null"> | 241 | <if test="roleName != '' and roleName !=null"> |
| 215 | and role_name = #{roleName, jdbcType=VARCHAR} | 242 | and role_name = #{roleName, jdbcType=VARCHAR} |
| 216 | </if> | 243 | </if> |
| 217 | <if test="type != '' and type !=null"> | 244 | <if test="type != '' and type !=null"> |
| 218 | and type like '%' #{type} '%' | 245 | and type like '%' #{type} '%' |
| 219 | </if> | 246 | </if> |
| 247 | + </where> | ||
| 248 | + order by rsort | ||
| 220 | </select> | 249 | </select> |
| 221 | <select id="findRolesByUserId" parameterType="java.lang.Integer" resultMap="BaseResultMap"> | 250 | <select id="findRolesByUserId" parameterType="java.lang.Integer" resultMap="BaseResultMap"> |
| 222 | SELECT | 251 | SELECT |
| @@ -227,4 +256,19 @@ WHERE | @@ -227,4 +256,19 @@ WHERE | ||
| 227 | LEFT JOIN role R ON R.role_id= UR.role_id | 256 | LEFT JOIN role R ON R.role_id= UR.role_id |
| 228 | where U.user_id = #{userId,jdbcType=INTEGER} | 257 | where U.user_id = #{userId,jdbcType=INTEGER} |
| 229 | </select> | 258 | </select> |
| 259 | + | ||
| 260 | + <select id="findAllWithOutTree" parameterType="java.lang.String" resultMap="BaseResultMap"> | ||
| 261 | + SELECT | ||
| 262 | + <include refid="Base_Column_List" /> | ||
| 263 | + FROM role | ||
| 264 | + <where> | ||
| 265 | + <if test="roleName != '' and roleName !=null"> | ||
| 266 | + and role_name = #{roleName, jdbcType=VARCHAR} | ||
| 267 | + </if> | ||
| 268 | + <if test="type != '' and type !=null"> | ||
| 269 | + and type like '%' #{type} '%' | ||
| 270 | + </if> | ||
| 271 | + </where> | ||
| 272 | + order by parentId,rsort | ||
| 273 | + </select> | ||
| 230 | </mapper> | 274 | </mapper> |
| @@ -32,6 +32,35 @@ | @@ -32,6 +32,35 @@ | ||
| 32 | <result column="age" property="age" jdbcType="INTEGER" /> | 32 | <result column="age" property="age" jdbcType="INTEGER" /> |
| 33 | <result column="company_id" property="companyId" jdbcType="INTEGER" /> | 33 | <result column="company_id" property="companyId" jdbcType="INTEGER" /> |
| 34 | </resultMap> | 34 | </resultMap> |
| 35 | + <resultMap id="WithRoleAndPermResultMap" type="com.tianbo.warehouse.model.USERS" extends="BaseResultMap"> | ||
| 36 | + <collection property="roles" javaType="java.util.ArrayList" ofType="com.tianbo.warehouse.model.ROLE"> | ||
| 37 | + <result column="role_id" jdbcType="INTEGER" property="roleId" /> | ||
| 38 | + <result column="role_name" jdbcType="VARCHAR" property="roleName" /> | ||
| 39 | + <result column="role_sign" jdbcType="VARCHAR" property="roleSign" /> | ||
| 40 | + <result column="rdescription" jdbcType="VARCHAR" property="description" /> | ||
| 41 | + <result column="type" jdbcType="VARCHAR" property="type" /> | ||
| 42 | + <result column="parentId" jdbcType="INTEGER" property="parentid" /> | ||
| 43 | + <result column="rsort" jdbcType="INTEGER" property="rsort" /> | ||
| 44 | + <result column="customs_reg_code" jdbcType="VARCHAR" property="customsRegCode" /> | ||
| 45 | + <result column="business_license" jdbcType="VARCHAR" property="businessLicense" /> | ||
| 46 | + <result column="departmentId" jdbcType="VARCHAR" property="departmentid" /> | ||
| 47 | + <result column="mq_code" jdbcType="VARCHAR" property="mqcode" /> | ||
| 48 | + </collection> | ||
| 49 | + <collection property="permissions" javaType="java.util.ArrayList" ofType="com.tianbo.warehouse.model.PERMISSION"> | ||
| 50 | + <result column="permission_id" property="permissionId" jdbcType="INTEGER" /> | ||
| 51 | + <result column="name" property="name" jdbcType="VARCHAR" /> | ||
| 52 | + <result column="permission_order" property="permissionOrder" jdbcType="VARCHAR" /> | ||
| 53 | + <result column="pdescription" property="description" jdbcType="VARCHAR" /> | ||
| 54 | + <result column="ismenu" property="ismenu" jdbcType="BOOLEAN" /> | ||
| 55 | + <result column="hidden" property="hidden" jdbcType="BOOLEAN" /> | ||
| 56 | + <result column="parent_id" property="parentId" jdbcType="INTEGER" /> | ||
| 57 | + <result column="path" property="path" jdbcType="VARCHAR" /> | ||
| 58 | + <result column="url" property="url" jdbcType="VARCHAR" /> | ||
| 59 | + <result column="method" property="method" jdbcType="VARCHAR" /> | ||
| 60 | + <result column="iconCls" property="iconCls" jdbcType="VARCHAR" /> | ||
| 61 | + <result column="component" property="component" jdbcType="VARCHAR" /> | ||
| 62 | + </collection> | ||
| 63 | + </resultMap> | ||
| 35 | <sql id="Base_Column_List" > | 64 | <sql id="Base_Column_List" > |
| 36 | user_id, username, password, birthday, sex, address, state, mobilePhone, creatTime, | 65 | user_id, username, password, birthday, sex, address, state, mobilePhone, creatTime, |
| 37 | updateTime, userFace, realName, email, age,company_id | 66 | updateTime, userFace, realName, email, age,company_id |
| @@ -51,6 +80,27 @@ | @@ -51,6 +80,27 @@ | ||
| 51 | from users | 80 | from users |
| 52 | where username = #{username,jdbcType=VARCHAR} | 81 | where username = #{username,jdbcType=VARCHAR} |
| 53 | </select> | 82 | </select> |
| 83 | + | ||
| 84 | + <select id="selectByUsernameWithRoleAndPerm" resultMap="WithRoleAndPermResultMap" parameterType="java.lang.String" > | ||
| 85 | + select | ||
| 86 | + u.user_id, username, password, birthday, sex, address, state, mobilePhone, creatTime, | ||
| 87 | + updateTime, userFace, realName, email, age,company_id, | ||
| 88 | + | ||
| 89 | + r.role_id, role_name, role_sign, r.description as rdescription, `type`, parentId, rsort, customs_reg_code, | ||
| 90 | + business_license, departmentId, mq_code, | ||
| 91 | + | ||
| 92 | + p.permission_id, `name`, permission_order, p.description as pdescription, ismenu,hidden,parent_id, | ||
| 93 | + path, url, method, iconCls, component | ||
| 94 | + from | ||
| 95 | + (select | ||
| 96 | + <include refid="Base_Column_List" /> | ||
| 97 | + from users | ||
| 98 | + where username = 'nmms') u | ||
| 99 | + left join user_role ur on u.user_id = ur.user_id | ||
| 100 | + left join role r on r.role_id = ur.role_id | ||
| 101 | + left join role_permission rp on r.role_id = rp.role_id | ||
| 102 | + left join permission p on rp.permission_id = p.permission_id | ||
| 103 | + </select> | ||
| 54 | <select id="selectAllUser" resultMap="BaseResultMap" parameterType="com.tianbo.warehouse.model.USERS" > | 104 | <select id="selectAllUser" resultMap="BaseResultMap" parameterType="com.tianbo.warehouse.model.USERS" > |
| 55 | select | 105 | select |
| 56 | <!-- <include refid="Base_Column_List" />--> | 106 | <!-- <include refid="Base_Column_List" />--> |
| 1 | +package com.tianbo.warehouse; | ||
| 2 | + | ||
| 3 | +import com.tianbo.warehouse.WarehouseApplication; | ||
| 4 | +import com.tianbo.warehouse.security.CustomUserDetailService; | ||
| 5 | +import lombok.extern.slf4j.Slf4j; | ||
| 6 | +import org.junit.Test; | ||
| 7 | +import org.junit.runner.RunWith; | ||
| 8 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 9 | +import org.springframework.boot.test.context.SpringBootTest; | ||
| 10 | +import org.springframework.security.core.userdetails.UserDetails; | ||
| 11 | +import org.springframework.test.context.junit4.SpringRunner; | ||
| 12 | + | ||
| 13 | +@RunWith(SpringRunner.class) | ||
| 14 | +@SpringBootTest(classes = WarehouseApplication.class,webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) | ||
| 15 | +@Slf4j | ||
| 16 | +public class UserTest { | ||
| 17 | + | ||
| 18 | + @Autowired | ||
| 19 | + CustomUserDetailService customUserDetailService; | ||
| 20 | + | ||
| 21 | + @Test | ||
| 22 | + public void contextLoads() { | ||
| 23 | + | ||
| 24 | + UserDetails u = customUserDetailService.loadUserByUsername("nmms"); | ||
| 25 | + log.info("ok"); | ||
| 26 | + } | ||
| 27 | +} |
-
请 注册 或 登录 后发表评论