Commit 85d8723a by chamberone

feat: 返回权限结果排序

1 parent b78b3d3c
package com.dituhui.pea.pojo; package com.dituhui.pea.pojo;
import java.util.List;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import lombok.Data; import lombok.Data;
...@@ -23,6 +25,9 @@ public class ResourceInfo { ...@@ -23,6 +25,9 @@ public class ResourceInfo {
* 用户自定义条件 * 用户自定义条件
*/ */
private String extra; private String extra;
// 菜单字段
private String code;
private Integer order;
/** /**
* 描述 * 描述
*/ */
...@@ -32,4 +37,6 @@ public class ResourceInfo { ...@@ -32,4 +37,6 @@ public class ResourceInfo {
*/ */
private Integer type; private Integer type;
private List<ResourceInfo> children;
} }
...@@ -22,6 +22,14 @@ public interface ResourceDao extends JpaRepository<ResourceEntity, String>, ...@@ -22,6 +22,14 @@ public interface ResourceDao extends JpaRepository<ResourceEntity, String>,
*/ */
List<ResourceEntity> findByIdIn(List<String> ids); List<ResourceEntity> findByIdIn(List<String> ids);
/**
* 查询子资源
*
* @param parentIds
* @return
*/
List<ResourceEntity> findByParentId(String parentId);
} }
package com.dituhui.pea.user.service; package com.dituhui.pea.user.service;
import java.util.Comparator;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -31,6 +32,7 @@ import com.dituhui.pea.user.dao.RoleDao; ...@@ -31,6 +32,7 @@ import com.dituhui.pea.user.dao.RoleDao;
import com.dituhui.pea.user.dao.RoleResourceDao; import com.dituhui.pea.user.dao.RoleResourceDao;
import com.dituhui.pea.user.dao.UserDao; import com.dituhui.pea.user.dao.UserDao;
import com.dituhui.pea.user.dao.UserRoleDao; import com.dituhui.pea.user.dao.UserRoleDao;
import com.dituhui.pea.user.entity.ResourceEntity;
import com.dituhui.pea.user.entity.RoleEntity; import com.dituhui.pea.user.entity.RoleEntity;
import com.dituhui.pea.user.entity.RoleResourceEntity; import com.dituhui.pea.user.entity.RoleResourceEntity;
import com.dituhui.pea.user.entity.UserEntity; import com.dituhui.pea.user.entity.UserEntity;
...@@ -111,19 +113,41 @@ public class UserService { ...@@ -111,19 +113,41 @@ public class UserService {
// 获取资源 // 获取资源
List<RoleResourceEntity> roleResources = roleResourceDao.findByRoleIdIn(ids); List<RoleResourceEntity> roleResources = roleResourceDao.findByRoleIdIn(ids);
log.info("role size:{} roleResources:{}", ids.size(), CollectionUtils.isNotEmpty(roleResources)); log.info("role : {} roleResources:{}", ids, CollectionUtils.isNotEmpty(roleResources));
if (CollectionUtils.isNotEmpty(roleResources)) { if (CollectionUtils.isNotEmpty(roleResources)) {
List<String> resourceIds = roleResources.stream().map(r -> r.getResourceId()) List<String> resourceIds = roleResources.stream().map(r -> r.getResourceId())
.collect(Collectors.toList()); .collect(Collectors.toList());
userDTO.setResources(resourceDao.findAllById(resourceIds).stream() List<ResourceEntity> resources = resourceDao.findAllById(resourceIds);
.map(r -> BeanUtil.copyProperties(r, ResourceInfo.class)).collect(Collectors.toList())); // 子菜单嵌套处理+菜单排序
List<ResourceInfo> levelOne = resources.stream()
.filter(r -> StringUtils.isNotEmpty(r.getParentId()) && r.getType() == 1)
.map(r -> BeanUtil.copyProperties(r, ResourceInfo.class)).collect(Collectors.toList());
for (ResourceInfo resourceInfo : levelOne) {
splitExtra(resourceInfo);
List<ResourceEntity> levelTow = resourceDao.findByParentId(resourceInfo.getId());
List<ResourceInfo> levelTowResourceInfo = levelTow.stream().map(r -> {
ResourceInfo res = BeanUtil.copyProperties(r, ResourceInfo.class);
splitExtra(res);
return res;
}).sorted(Comparator.comparing(ResourceInfo::getOrder)).collect(Collectors.toList());
resourceInfo.setChildren(levelTowResourceInfo);
}
levelOne = levelOne.stream().sorted(Comparator.comparing(ResourceInfo::getOrder))
.collect(Collectors.toList());
userDTO.setResources(levelOne);
} }
} }
} }
return userDTO; return userDTO;
} }
private void splitExtra(ResourceInfo resourceInfo) {
String[] temp = resourceInfo.getExtra().split(",");
resourceInfo.setCode(temp[0]);
resourceInfo.setOrder(Integer.parseInt(temp[1]));
resourceInfo.setExtra(null);
}
public Result<?> getUserInfo(String token) { public Result<?> getUserInfo(String token) {
UserEntity user = (UserEntity) redisService.get(RedisKeyGroup.authToken + ":" + token); UserEntity user = (UserEntity) redisService.get(RedisKeyGroup.authToken + ":" + token);
UserLoginDTO userDTO = convertToUserLoginDTO(user); UserLoginDTO userDTO = convertToUserLoginDTO(user);
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!