提交 a288f6f9 作者: chenshiqiang

Merge remote-tracking branch 'origin/master'

......@@ -57,7 +57,7 @@ public class KbKnowledgeProjectController {
public Result<?> list(
@RequestParam(name="sign",defaultValue = "1") String sign,
@RequestParam(name="category",required = false) String category,
@RequestParam(name="projectId",required = false) String projectId,
@RequestParam(name="projectId",defaultValue = "0") String projectId,
HttpServletRequest httpServletRequest
){
if (!"1".equals(sign)){
......
......@@ -6,10 +6,13 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zzsn.knowbase.entity.KbAuthorizedUser;
import com.zzsn.knowbase.vo.UserKnowPermissionVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* <p>
* Mapper 接口
......@@ -30,6 +33,22 @@ public interface KbAuthorizedUserMapper extends BaseMapper<KbAuthorizedUser> {
)
IPage<KbAuthorizedUser> pageList(Page<KbAuthorizedUser> page, @Param(Constants.WRAPPER) QueryWrapper<KbAuthorizedUser> query);
@Select("SELECT a.*,GROUP_CONCAT(b.role_id SEPARATOR ',') as roleId,GROUP_CONCAT(c.role_name SEPARATOR ',') as roleName, b.knowledge_project_id FROM kb_authorized_user a " +
"LEFT JOIN kb_user_role_map b ON a.id = b.user_id " +
"LEFT JOIN kb_role c ON c.id = b.role_id " +
"${ew.customSqlSegment}"+
"GROUP BY a.id"
)
List<KbAuthorizedUser> listByUserIdAndProId(@Param(Constants.WRAPPER) QueryWrapper<KbAuthorizedUser> query);
@Select("SELECT a.user_id,a.knowledge_project_id,a.role_id,b.role_code,b.role_name,d.permission_code,d.permission_name FROM kb_user_role_map a " +
"LEFT JOIN kb_role b ON a.role_id = b.id " +
"LEFT JOIN kb_role_permission_map c ON b.id = c.role_id " +
"LEFT JOIN kb_permissions d ON c.permission_id = d.id " +
"WHERE a.user_id = #{userId}"
)
List<UserKnowPermissionVo> getUserPermission(String userId);
@Select("SELECT a.*,GROUP_CONCAT(b.role_id SEPARATOR ',') as roleId,GROUP_CONCAT(c.role_name SEPARATOR ',') as roleName FROM kb_authorized_user a " +
"LEFT JOIN kb_user_role_map b ON a.id = b.user_id " +
......
......@@ -389,36 +389,67 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
String knowProId = authorizedUser.getKnowledgeProjectId();
authorizedUser.setUpdateTime(new Date());
super.updateById(authorizedUser);
/**修改用户角色关系表*/
if (StringUtils.isNotBlank(newRole)){
//所编辑知识库分类节点下所有的子节点
List<KbKnowledgeProject> knowPros = knowledgeProjectService.list(Wrappers.<KbKnowledgeProject>lambdaQuery()
.like(KbKnowledgeProject::getFullPath, knowProId)
);
List<String> knowProIds = knowPros.stream().map(KbKnowledgeProject::getId).collect(Collectors.toList());
if (!"0".equals(knowProId)) {
/**修改用户角色关系表*/
if (StringUtils.isNotBlank(newRole)){
//所编辑知识库分类节点下所有的子节点
List<KbKnowledgeProject> knowPros = knowledgeProjectService.list(Wrappers.<KbKnowledgeProject>lambdaQuery()
.like(KbKnowledgeProject::getFullPath, knowProId)
);
kbUserRoleMapService.remove(Wrappers.<KbUserRoleMap>lambdaQuery()
.eq(KbUserRoleMap::getUserId,authorizedUser.getId())
.in(KbUserRoleMap::getKnowledgeProjectId,knowProIds)
);
List<String> list = Arrays.asList(newRole.split(","));
List<KbUserRoleMap> maps = new ArrayList<>();
list.forEach(e->{
knowProIds.forEach(ee->{
List<String> knowProIds = knowPros.stream().map(KbKnowledgeProject::getId).collect(Collectors.toList());
kbUserRoleMapService.remove(Wrappers.<KbUserRoleMap>lambdaQuery()
.eq(KbUserRoleMap::getUserId,authorizedUser.getId())
.in(KbUserRoleMap::getKnowledgeProjectId,knowProIds)
);
List<String> list = Arrays.asList(newRole.split(","));
List<KbUserRoleMap> maps = new ArrayList<>();
list.forEach(e->{
knowProIds.forEach(ee->{
KbUserRoleMap kbUserRoleMap = new KbUserRoleMap();
kbUserRoleMap.setUserId(authorizedUser.getId());
kbUserRoleMap.setRoleId(e);
kbUserRoleMap.setKnowledgeProjectId(ee);
kbUserRoleMap.setCreateDate(new Date());
maps.add(kbUserRoleMap);
});
});
kbUserRoleMapService.saveBatch(maps);
}
}else {
kbUserRoleMapService.remove(Wrappers.<KbUserRoleMap>lambdaQuery().eq(KbUserRoleMap::getUserId,authorizedUser.getId()));
authuserKnowledgeprojectMapService.remove(Wrappers.<KbAuthuserKnowledgeprojectMap>lambdaQuery().eq(KbAuthuserKnowledgeprojectMap::getAuthUserId,authorizedUser.getId()));
kbAuthuserKnowMapService.remove(Wrappers.<KbAuthuserKnowMap>lambdaQuery().eq(KbAuthuserKnowMap::getAuthUserId,authorizedUser.getId()));
/**插入用户知识库权限关系表*/
if (StringUtils.isNotBlank(authorizedUser.getKnowledgeProjectId())){
KbAuthuserKnowledgeprojectMap kbAuthuserKnowledgeprojectMap = new KbAuthuserKnowledgeprojectMap();
kbAuthuserKnowledgeprojectMap.setAuthUserId(authorizedUser.getId());
kbAuthuserKnowledgeprojectMap.setKnowledgeProjectId(authorizedUser.getKnowledgeProjectId());
kbAuthuserKnowledgeprojectMap.setSign(0);
authuserKnowledgeprojectMapService.save(kbAuthuserKnowledgeprojectMap);
}
/**插入用户角色关系表*/
if (StringUtils.isNotBlank(authorizedUser.getRoleId())){
String roleId = authorizedUser.getRoleId();
List<String> list = Arrays.asList(roleId.split(","));
List<KbUserRoleMap> maps = new ArrayList<>();
list.forEach(e->{
KbUserRoleMap kbUserRoleMap = new KbUserRoleMap();
kbUserRoleMap.setUserId(authorizedUser.getId());
kbUserRoleMap.setRoleId(e);
kbUserRoleMap.setKnowledgeProjectId(ee);
kbUserRoleMap.setCreateDate(new Date());
kbUserRoleMap.setKnowledgeProjectId(authorizedUser.getKnowledgeProjectId());
maps.add(kbUserRoleMap);
});
});
kbUserRoleMapService.saveBatch(maps);
kbUserRoleMapService.saveBatch(maps);
}
}
return Result.OK();
}
......@@ -460,9 +491,17 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
}
/**查询授权用户的角色和权限*/
UserInfoVo userInfoVo = new UserInfoVo();
/**查询授权用户,“所有”节点的角色优先*/
QueryWrapper<KbAuthorizedUser> query = new QueryWrapper<>();
query.eq("a.user_id",bean.getUserId());
query.eq("b.knowledge_project_id","0");
KbAuthorizedUser one = authorizedUserMapper.getOne(query);
if (ObjectUtil.isEmpty(one) || StringUtils.isBlank(one.getRoleId())){
QueryWrapper<KbAuthorizedUser> query1 = new QueryWrapper<>();
query.eq("a.user_id",bean.getUserId());
one = authorizedUserMapper.getOne(query1);
}
/**是否是所有节点的管理员*/
List<KbAuthuserKnowledgeprojectMap> list1 = authuserKnowledgeprojectMapService.list(Wrappers.<KbAuthuserKnowledgeprojectMap>lambdaQuery()
.eq(KbAuthuserKnowledgeprojectMap::getAuthUserId, one.getId())
......@@ -503,7 +542,7 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
@Override
public Result<?> thirdpartyUsers(String token, String name, String username, String knowledgeProjectId, Integer pageNum, Integer pageSize) {
//查询出这个节点已经受过权的用户
List<KbAuthuserKnowledgeprojectMap> list1 = authuserKnowledgeprojectMapService.list(Wrappers.<KbAuthuserKnowledgeprojectMap>lambdaQuery().and(i -> i.eq(KbAuthuserKnowledgeprojectMap::getKnowledgeProjectId, knowledgeProjectId).or().eq(KbAuthuserKnowledgeprojectMap::getKnowledgeProjectId,"0")));
List<KbAuthuserKnowledgeprojectMap> list1 = authuserKnowledgeprojectMapService.list(Wrappers.<KbAuthuserKnowledgeprojectMap>lambdaQuery().eq(KbAuthuserKnowledgeprojectMap::getKnowledgeProjectId, knowledgeProjectId));
StringBuffer exists = new StringBuffer();
if (CollectionUtil.isNotEmpty(list1)){
List<String> collect = list1.stream().map(KbAuthuserKnowledgeprojectMap::getAuthUserId).collect(Collectors.toList());
......@@ -557,10 +596,16 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
if (CollectionUtil.isEmpty(list)) {
return Result.error("该用户还未进行授权访问,请联系管理员进行授权");
}
/**查询授权用户*/
/**查询授权用户,“所有”节点的角色优先*/
QueryWrapper<KbAuthorizedUser> query = new QueryWrapper<>();
query.eq("a.user_id",bean.getUserId());
query.eq("b.knowledge_project_id","0");
KbAuthorizedUser one = authorizedUserMapper.getOne(query);
if (ObjectUtil.isEmpty(one) || StringUtils.isBlank(one.getRoleId())){
QueryWrapper<KbAuthorizedUser> query1 = new QueryWrapper<>();
query.eq("a.user_id",bean.getUserId());
one = authorizedUserMapper.getOne(query1);
}
/**是否是所有节点的管理员*/
List<KbAuthuserKnowledgeprojectMap> list1 = authuserKnowledgeprojectMapService.list(Wrappers.<KbAuthuserKnowledgeprojectMap>lambdaQuery()
.eq(KbAuthuserKnowledgeprojectMap::getAuthUserId, one.getId())
......
......@@ -9,11 +9,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zzsn.knowbase.entity.*;
import com.zzsn.knowbase.mapper.KbAuthorizedUserMapper;
import com.zzsn.knowbase.mapper.KbKnowledgeProjectMapper;
import com.zzsn.knowbase.mapper.KbUserRoleMapMapper;
import com.zzsn.knowbase.service.*;
import com.zzsn.knowbase.util.SpringContextUtils;
import com.zzsn.knowbase.vo.Result;
import com.zzsn.knowbase.vo.UserKnowPermissionVo;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -54,6 +56,8 @@ public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjec
KbPermissionsService permissionsService;
@Autowired
KbRoleService roleService;
@Autowired
KbAuthorizedUserMapper authorizedUserMapper;
@Override
@Transactional
public Result<?> add(KbKnowledgeProject knowledgeProject) {
......@@ -147,6 +151,9 @@ public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjec
}
}
super.updateBatchById(list);
}else {
knowledgeProject.setUpdateTime(new Date());
super.updateById(knowledgeProject);
}
return Result.OK();
......@@ -169,7 +176,7 @@ public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjec
if (0 == userInfo.getIsAll()) {
List<KbKnowledgeProject> kbKnowledgeProjects ;
if ("1".equals(sign)&&StringUtils.isBlank(projectId)){
if ("1".equals(sign)&&"0".equals(projectId)){
kbKnowledgeProjects = super.list(Wrappers.<KbKnowledgeProject>lambdaQuery()
.eq(KbKnowledgeProject::getPid, KbKnowledgeProjectService.ROOT_PID_VALUE)
.eq(StrUtil.isNotBlank(category),KbKnowledgeProject::getCategory,category));
......@@ -179,13 +186,50 @@ public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjec
.eq(StrUtil.isNotBlank(category),KbKnowledgeProject::getCategory,category));
}
List<KbPermissions> list = permissionsService.list(Wrappers.<KbPermissions>lambdaQuery().in(KbPermissions::getPermissionCode,Arrays.asList("p_look","p_edit","p_del")));
List<KbRole> rManager = roleService.list(Wrappers.<KbRole>lambdaQuery().eq(KbRole::getRoleCode, "r_manager"));
List<KbRole> list = roleService.list(Wrappers.<KbRole>lambdaQuery().eq(KbRole::getId, userInfo.getRoleId()));
List<KbRolePermissionMap> permissionMaps = rolePermissionMapService.list(Wrappers.<KbRolePermissionMap>lambdaQuery().in(KbRolePermissionMap::getRoleId, list.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())));
kbKnowledgeProjects.forEach(e -> {
e.setPermissions(list);
e.setRoles(rManager);
e.setRoles(list);
e.setPermissions(permissions);
});
//查询此用户,在其他节点有无特殊权限
List<UserKnowPermissionVo> res = authorizedUserMapper.getUserPermission(userInfo.getId());
List<UserKnowPermissionVo> collect = res.stream().filter(f -> !"0".equals(f.getKnowledgeProjectId())).collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(collect)){
//其他节点有额外权限
kbKnowledgeProjects.forEach(e -> {
List<UserKnowPermissionVo> collect1 = collect.stream().filter(f -> f.getKnowledgeProjectId().equals(e.getId())).collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(collect1)){
Map<String, List<UserKnowPermissionVo>> collect2 = collect1.stream().collect(Collectors.groupingBy(UserKnowPermissionVo::getRoleId));
List<KbRole> roles = new ArrayList<>();
List<KbPermissions> permissionsList = new ArrayList<>();
collect2.forEach((key,v)->{
KbRole kbRole = new KbRole();
kbRole.setRoleCode(v.get(0).getRoleCode());
kbRole.setRoleName(v.get(0).getRoleName());
kbRole.setId(key);
roles.add(kbRole);
v.forEach(p -> {
KbPermissions kbPermission = new KbPermissions();
kbPermission.setId(p.getPermissionId());
kbPermission.setPermissionCode(p.getPermissionCode());
kbPermission.setPermissionName(p.getPermissionName());
permissionsList.add(kbPermission);
});
});
e.setRoles(roles);
e.setPermissions(permissionsList);
}
});
}
return Result.OK(kbKnowledgeProjects);
}else {
List<KbKnowledgeProject> kbKnowledgeProjects ;
String userId = userInfo.getId();
......
package com.zzsn.knowbase.vo;
import lombok.Data;
/**
* Description:
*
* @author: EDY
* @since: 2024/1/16
*/
@Data
public class UserKnowPermissionVo {
private String userId;
private String knowledgeProjectId;
private String roleId;
private String roleCode;
private String roleName;
private String permissionCode;
private String permissionName;
private String permissionId;
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论