提交 d9ddfde4 作者: obcy

左侧树查询

上级 f929b1ea
...@@ -9,6 +9,7 @@ import lombok.Data; ...@@ -9,6 +9,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* <p> * <p>
...@@ -99,10 +100,12 @@ public class KbKnowledgeProject extends Model<KbKnowledgeProject> { ...@@ -99,10 +100,12 @@ public class KbKnowledgeProject extends Model<KbKnowledgeProject> {
@TableField("project_description") @TableField("project_description")
private String projectDescription; private String projectDescription;
/** /**
* 用户在这个节点的角色 * 用户在这个节点的角色和权限
*/ */
@TableField(exist = false) @TableField(exist = false)
private String role_code; private List<KbRole> roles;
@TableField(exist = false)
private List<KbPermissions> permissions;
......
package com.zzsn.knowbase.mapper; package com.zzsn.knowbase.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.zzsn.knowbase.entity.KbAuthorizedUser;
import com.zzsn.knowbase.entity.KbRole;
import com.zzsn.knowbase.entity.KbUserRoleMap; import com.zzsn.knowbase.entity.KbUserRoleMap;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/** /**
* <p> * <p>
...@@ -15,4 +23,9 @@ import org.apache.ibatis.annotations.Mapper; ...@@ -15,4 +23,9 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper @Mapper
public interface KbUserRoleMapMapper extends BaseMapper<KbUserRoleMap> { public interface KbUserRoleMapMapper extends BaseMapper<KbUserRoleMap> {
@Select("SELECT b.* FROM kb_user_role_map a LEFT JOIN kb_role b ON a.role_id = b.id " +
"${ew.customSqlSegment}"
)
List<KbRole> getRoles(@Param(Constants.WRAPPER) QueryWrapper<KbAuthorizedUser> query);
} }
...@@ -2,19 +2,16 @@ package com.zzsn.knowbase.service.impl; ...@@ -2,19 +2,16 @@ package com.zzsn.knowbase.service.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zzsn.knowbase.entity.KbAuthorizedUser; import com.zzsn.knowbase.entity.*;
import com.zzsn.knowbase.entity.KbAuthuserKnowMap;
import com.zzsn.knowbase.entity.KbAuthuserKnowledgeprojectMap;
import com.zzsn.knowbase.entity.KbKnowledgeProject;
import com.zzsn.knowbase.mapper.KbKnowledgeProjectMapper; import com.zzsn.knowbase.mapper.KbKnowledgeProjectMapper;
import com.zzsn.knowbase.service.KbAuthorizedUserService; import com.zzsn.knowbase.mapper.KbUserRoleMapMapper;
import com.zzsn.knowbase.service.KbAuthuserKnowMapService; import com.zzsn.knowbase.service.*;
import com.zzsn.knowbase.service.KbAuthuserKnowledgeprojectMapService;
import com.zzsn.knowbase.service.KbKnowledgeProjectService;
import com.zzsn.knowbase.util.SpringContextUtils; import com.zzsn.knowbase.util.SpringContextUtils;
import com.zzsn.knowbase.vo.Result; import com.zzsn.knowbase.vo.Result;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
...@@ -45,9 +42,18 @@ public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjec ...@@ -45,9 +42,18 @@ public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjec
KbAuthuserKnowledgeprojectMapService authuserKnowledgeprojectMapService; KbAuthuserKnowledgeprojectMapService authuserKnowledgeprojectMapService;
@Autowired @Autowired
KbAuthuserKnowMapService kbAuthuserKnowMapService; KbAuthuserKnowMapService kbAuthuserKnowMapService;
@Autowired
KbUserRoleMapService kbUserRoleMapService;
@Autowired
KbUserRoleMapMapper userRoleMapMapper;
@Autowired @Autowired
private KbAuthuserKnowMapService authuserKnowMapService; private KbAuthuserKnowMapService authuserKnowMapService;
@Autowired
KbRolePermissionMapService rolePermissionMapService;
@Autowired
KbPermissionsService permissionsService;
@Autowired
KbRoleService roleService;
@Override @Override
@Transactional @Transactional
public Result<?> add(KbKnowledgeProject knowledgeProject) { public Result<?> add(KbKnowledgeProject knowledgeProject) {
...@@ -166,32 +172,87 @@ public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjec ...@@ -166,32 +172,87 @@ public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjec
return Result.OK(kbKnowledgeProjects); return Result.OK(kbKnowledgeProjects);
}else { }else {
List<KbKnowledgeProject> kbKnowledgeProjects ; List<KbKnowledgeProject> kbKnowledgeProjects ;
String userId = userInfo.getId();
if ("1".equals(sign)&&StringUtils.isBlank(projectId)){ List<KbAuthuserKnowledgeprojectMap> list = authuserKnowledgeprojectMapService.list(Wrappers.<KbAuthuserKnowledgeprojectMap>lambdaQuery()
String id = userInfo.getId(); .eq(KbAuthuserKnowledgeprojectMap::getAuthUserId, userId)
List<KbAuthuserKnowledgeprojectMap> list = authuserKnowledgeprojectMapService.list(Wrappers.<KbAuthuserKnowledgeprojectMap>lambdaQuery() );
.eq(KbAuthuserKnowledgeprojectMap::getAuthUserId,id) List<KbKnowledgeProject> allknowProjectPermissId = super.list(Wrappers.<KbKnowledgeProject>lambdaQuery()
); .in(KbKnowledgeProject::getId, list.stream().map(KbAuthuserKnowledgeprojectMap::getKnowledgeProjectId).collect(Collectors.toList()))
List<KbKnowledgeProject> list1 = super.list(Wrappers.<KbKnowledgeProject>lambdaQuery() );
.in(KbKnowledgeProject::getId, list.stream().map(KbAuthuserKnowledgeprojectMap::getKnowledgeProjectId).collect(Collectors.toList())) //查询出所有需要展示的节点
); Set<String> hasViewId = new HashSet<>();
allknowProjectPermissId.forEach(e -> {
list1.forEach(e -> { Arrays.asList(e.getFullPath().split(",")).forEach(ee->{
String s = e.getFullPath().split(",")[0]; hasViewId.add(ee);
}); });
});
if ("1".equals(sign)&&StringUtils.isBlank(projectId)){
kbKnowledgeProjects = super.list(Wrappers.<KbKnowledgeProject>lambdaQuery() kbKnowledgeProjects = super.list(Wrappers.<KbKnowledgeProject>lambdaQuery()
.eq(KbKnowledgeProject::getPid, KbKnowledgeProjectService.ROOT_PID_VALUE) .eq(KbKnowledgeProject::getPid, KbKnowledgeProjectService.ROOT_PID_VALUE)
.eq(StrUtil.isNotBlank(category),KbKnowledgeProject::getCategory,category)); .eq(StrUtil.isNotBlank(category),KbKnowledgeProject::getCategory,category)
.in(KbKnowledgeProject::getId,hasViewId));
}else { }else {
kbKnowledgeProjects = super.list(Wrappers.<KbKnowledgeProject>lambdaQuery() kbKnowledgeProjects = super.list(Wrappers.<KbKnowledgeProject>lambdaQuery()
.eq(KbKnowledgeProject::getPid,projectId) .eq(KbKnowledgeProject::getPid,projectId)
.eq(StrUtil.isNotBlank(category),KbKnowledgeProject::getCategory,category)); .eq(StrUtil.isNotBlank(category),KbKnowledgeProject::getCategory,category)
.in(KbKnowledgeProject::getId,hasViewId));
} }
//查询用户在每个节点对应的权限
// Map<Long, KbRolePermissionMap> rolePermissionMap = rolePermissionMapService.list().stream().collect(Collectors.toMap(KbRolePermissionMap::getId, e -> e));
// Map<String, KbPermissions> permissions = permissionsService.list().stream().collect(Collectors.toMap(KbPermissions::getId, e -> e));
// List<String> ids = allknowProjectPermissId.stream().map(KbKnowledgeProject::getId).collect(Collectors.toList());
Map<String, KbKnowledgeProject> collect = allknowProjectPermissId.stream().collect(Collectors.toMap(KbKnowledgeProject::getId, e -> e));
// List<KbUserRoleMap> allIdsRoles = kbUserRoleMapService.list(Wrappers.<KbUserRoleMap>lambdaQuery().eq(KbUserRoleMap::getUserId, userId).in(KbUserRoleMap::getKnowledgeProjectId, ids));
//// Map<String, KbUserRoleMap> collect1 = allIdsRoles.stream().collect(Collectors.toMap(KbUserRoleMap::getKnowledgeProjectId, e -> e));
// Map<String, List<KbUserRoleMap>> collect1 = allIdsRoles.stream().collect(Collectors.groupingBy(KbUserRoleMap::getKnowledgeProjectId));
// Map<String, List<KbRole>> collect2 = new HashMap<>();
// collect1.forEach((k,v)->{
// List<String> collect3 = v.stream().map(KbUserRoleMap::getRoleId).collect(Collectors.toList());
// });
// List<KbRolePermissionMap> permissionMaps = rolePermissionMapService.list(Wrappers.<KbRolePermissionMap>lambdaQuery().in(KbRolePermissionMap::getRoleId, Arrays.asList(one.getRoleId().split(","))));
// List<KbPermissions> permissions = permissionsService.list(Wrappers.<KbPermissions>lambdaQuery().in(KbPermissions::getId, permissionMaps.stream().map(KbRolePermissionMap::getPermissionId).collect(Collectors.toList())));
kbKnowledgeProjects.forEach(e->{
KbKnowledgeProject kbKnowledgeProject = collect.get(e.getId());
if (ObjectUtil.isNotEmpty(kbKnowledgeProject)){
QueryWrapper<KbAuthorizedUser> query = new QueryWrapper<>();
query.eq("a.user_id",userId);
query.eq("a.knowledge_project_id",e.getId());
e.setRoles(userRoleMapMapper.getRoles(query));
}
if (CollectionUtil.isNotEmpty(e.getRoles())){
List<KbRolePermissionMap> permissionMaps = rolePermissionMapService.list(Wrappers.<KbRolePermissionMap>lambdaQuery().in(KbRolePermissionMap::getRoleId, e.getRoles().stream().map(KbRole::getId).collect(Collectors.toList())));
List<KbPermissions> permissions = permissionsService.list(Wrappers.<KbPermissions>lambdaQuery().in(KbPermissions::getId, permissionMaps.stream().map(KbRolePermissionMap::getPermissionId).collect(Collectors.toList())));
e.setPermissions(permissions);
}
});
return Result.OK(kbKnowledgeProjects); return Result.OK(kbKnowledgeProjects);
} }
} }
private Set<String> getHasPermissId(String userId) {
List<KbAuthuserKnowledgeprojectMap> list = authuserKnowledgeprojectMapService.list(Wrappers.<KbAuthuserKnowledgeprojectMap>lambdaQuery()
.eq(KbAuthuserKnowledgeprojectMap::getAuthUserId, userId)
);
List<KbKnowledgeProject> list1 = super.list(Wrappers.<KbKnowledgeProject>lambdaQuery()
.in(KbKnowledgeProject::getId, list.stream().map(KbAuthuserKnowledgeprojectMap::getKnowledgeProjectId).collect(Collectors.toList()))
);
Set<String> hasPermissId = new HashSet<>();
list1.forEach(e -> {
Arrays.asList(e.getFullPath().split(",")).forEach(ee->{
hasPermissId.add(ee);
});
});
return hasPermissId;
}
@Override @Override
public List<KbKnowledgeProject> getTreeListBy(String id) { public List<KbKnowledgeProject> getTreeListBy(String id) {
return baseMapper.selectList(new LambdaQueryWrapper<KbKnowledgeProject>() return baseMapper.selectList(new LambdaQueryWrapper<KbKnowledgeProject>()
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论