提交 bbc558e8 作者: chenshiqiang

Merge remote-tracking branch 'origin/master'

......@@ -3,6 +3,7 @@ package com.zzsn.knowbase.controller;
import com.zzsn.knowbase.entity.KbAuthorizedUser;
import com.zzsn.knowbase.service.KbAuthorizedUserService;
import com.zzsn.knowbase.vo.AddUserPermissKnowsVo;
import com.zzsn.knowbase.vo.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
......@@ -41,6 +42,11 @@ public class KbAuthorizedUserController {
public Result<?> add(@RequestBody List<KbAuthorizedUser> authorizedUser){
return authorizedUserService.add(authorizedUser);
}
/**给某个用户授权分类节点下某些知识资讯*/
@PostMapping("/addUserPermissKnows")
public Result<?> addUserPermissKnows(@RequestBody AddUserPermissKnowsVo addUserPermissKnowsVo){
return authorizedUserService.addUserPermitsKnows(addUserPermissKnowsVo);
}
/**
* 编辑授权用户
......@@ -54,8 +60,12 @@ public class KbAuthorizedUserController {
* 删除授权用户
* */
@GetMapping("/del")
public Result<?> del(@RequestParam(name="id",required=true) String id){
return Result.OK(authorizedUserService.removeById(id));
public Result<?> del(
@RequestParam(name="id",required=true) String id,
@RequestParam(name="knowledgeProjectId",required=true) String knowledgeProjectId
){
return Result.OK(authorizedUserService.delById(id,knowledgeProjectId));
}
@GetMapping("/list")
......
......@@ -9,6 +9,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import java.util.List;
/**
* <p>
......@@ -99,10 +100,12 @@ public class KbKnowledgeProject extends Model<KbKnowledgeProject> {
@TableField("project_description")
private String projectDescription;
/**
* 用户在这个节点的角色
* 用户在这个节点的角色和权限
*/
@TableField(exist = false)
private String role_code;
private List<KbRole> roles;
@TableField(exist = false)
private List<KbPermissions> permissions;
......
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.toolkit.Constants;
import com.zzsn.knowbase.entity.KbAuthorizedUser;
import com.zzsn.knowbase.entity.KbRole;
import com.zzsn.knowbase.entity.KbUserRoleMap;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* <p>
......@@ -15,4 +23,9 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
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,6 +2,7 @@ package com.zzsn.knowbase.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zzsn.knowbase.entity.KbAuthorizedUser;
import com.zzsn.knowbase.vo.AddUserPermissKnowsVo;
import com.zzsn.knowbase.vo.Result;
import java.util.List;
......@@ -30,4 +31,9 @@ public interface KbAuthorizedUserService extends IService<KbAuthorizedUser> {
Result<?> doCheckAndGetUser(String token);
Result<?> add(List<KbAuthorizedUser> authorizedUser);
Result<?> delById(String id, String knowledgeProjectId);
Result<?> addUserPermitsKnows(AddUserPermissKnowsVo addUserPermissKnowsVo);
}
......@@ -2,6 +2,7 @@ package com.zzsn.knowbase.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
......@@ -12,6 +13,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zzsn.knowbase.entity.*;
import com.zzsn.knowbase.mapper.KbAuthorizedUserMapper;
import com.zzsn.knowbase.service.*;
import com.zzsn.knowbase.vo.AddUserPermissKnowsVo;
import com.zzsn.knowbase.vo.Result;
import com.zzsn.knowbase.vo.UserInfoVo;
import org.apache.commons.lang3.StringUtils;
......@@ -48,6 +50,8 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
KbAuthuserKnowledgeprojectMapService authuserKnowledgeprojectMapService;
@Autowired
KbKnowledgeProjectService knowledgeProjectService;
@Autowired
KbAuthuserKnowMapService kbAuthuserKnowMapService;
/**
* 校验第三方用户接口地址
......@@ -94,6 +98,7 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
}
@Override
@Transactional
public Result<?> add(List<KbAuthorizedUser> authorizedUsers) {
if (CollectionUtil.isEmpty(authorizedUsers)){
......@@ -219,6 +224,72 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
return Result.OK();
}
@Override
@Transactional
public Result<?> delById(String id, String knowledgeProjectId) {
//移除知识库分类节点下所有的子节点下的这个用户
List<KbKnowledgeProject> knowPros = knowledgeProjectService.list(Wrappers.<KbKnowledgeProject>lambdaQuery()
.like(KbKnowledgeProject::getFullPath, knowledgeProjectId)
);
List<String> knowProIds = knowPros.stream().map(KbKnowledgeProject::getId).collect(Collectors.toList());
kbUserRoleMapService.remove(Wrappers.<KbUserRoleMap>lambdaQuery()
.eq(KbUserRoleMap::getUserId,id)
.in(KbUserRoleMap::getKnowledgeProjectId,knowProIds)
);
authuserKnowledgeprojectMapService.remove(Wrappers.<KbAuthuserKnowledgeprojectMap>lambdaQuery()
.eq(KbAuthuserKnowledgeprojectMap::getAuthUserId,id)
.in(KbAuthuserKnowledgeprojectMap::getKnowledgeProjectId,knowProIds));
kbAuthuserKnowMapService.remove(Wrappers.<KbAuthuserKnowMap>lambdaQuery()
.eq(KbAuthuserKnowMap::getAuthUserId,id)
.in(KbAuthuserKnowMap::getKnowledgeProjectId,knowProIds));
return Result.OK();
}
@Override
@Transactional
public Result<?> addUserPermitsKnows(AddUserPermissKnowsVo addUserPermissKnowsVo) {
String knowledgeProjectId = addUserPermissKnowsVo.getKnowledgeProjectId();
List<KbAuthorizedUser> authorizedUsers = addUserPermissKnowsVo.getAuthorizedUsers();
List<String> knowledgeIds = addUserPermissKnowsVo.getKnowledgeIds();
if (StrUtil.isBlank(knowledgeProjectId)||CollectionUtil.isEmpty(authorizedUsers)||CollectionUtil.isEmpty(knowledgeIds)){
return Result.error("请检查参数,授权节点、授权用户,授权资讯不能为空");
}
List<String> userIds = authorizedUsers.stream().map(KbAuthorizedUser::getId).collect(Collectors.toList());
List<KbAuthuserKnowledgeprojectMap> list = authuserKnowledgeprojectMapService.list(Wrappers.<KbAuthuserKnowledgeprojectMap>lambdaQuery()
.in(KbAuthuserKnowledgeprojectMap::getAuthUserId, userIds)
.eq(KbAuthuserKnowledgeprojectMap::getKnowledgeProjectId, knowledgeProjectId)
.eq(KbAuthuserKnowledgeprojectMap::getSign, 0)
);
if (CollectionUtil.isNotEmpty(list)){
StringBuffer res = new StringBuffer();
list.forEach(e->{
res.append("用户"+e.getAuthUserId()+"在"+e.getKnowledgeProjectId()+"节点下已有完全权限。请先移除用户在此节点下的完全权限,再在此节点对用户进行单独资讯的授权\r\n");
});
return Result.error(res.toString());
}
List<KbAuthuserKnowMap> saves = new ArrayList<>();
List<KbAuthuserKnowledgeprojectMap> saves1 = new ArrayList<>();
authorizedUsers.forEach(user->{
KbAuthuserKnowledgeprojectMap kbAuthuserKnowledgeprojectMap = new KbAuthuserKnowledgeprojectMap();
kbAuthuserKnowledgeprojectMap.setAuthUserId(user.getId());
kbAuthuserKnowledgeprojectMap.setKnowledgeProjectId(knowledgeProjectId);
kbAuthuserKnowledgeprojectMap.setSign(1);
knowledgeIds.forEach(know->{
KbAuthuserKnowMap kbAuthuserKnowMap = new KbAuthuserKnowMap();
kbAuthuserKnowMap.setAuthUserId(user.getId());
kbAuthuserKnowMap.setCreateDate(new Date());
kbAuthuserKnowMap.setKnowledgeId(know);
kbAuthuserKnowMap.setKnowledgeProjectId(knowledgeProjectId);
});
});
kbAuthuserKnowMapService.saveBatch(saves);
authuserKnowledgeprojectMapService.saveBatch(saves1);
return Result.OK();
}
@Override
@Transactional
......
......@@ -2,19 +2,16 @@ package com.zzsn.knowbase.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
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.extension.service.impl.ServiceImpl;
import com.zzsn.knowbase.entity.KbAuthorizedUser;
import com.zzsn.knowbase.entity.KbAuthuserKnowMap;
import com.zzsn.knowbase.entity.KbAuthuserKnowledgeprojectMap;
import com.zzsn.knowbase.entity.KbKnowledgeProject;
import com.zzsn.knowbase.entity.*;
import com.zzsn.knowbase.mapper.KbKnowledgeProjectMapper;
import com.zzsn.knowbase.service.KbAuthorizedUserService;
import com.zzsn.knowbase.service.KbAuthuserKnowMapService;
import com.zzsn.knowbase.service.KbAuthuserKnowledgeprojectMapService;
import com.zzsn.knowbase.service.KbKnowledgeProjectService;
import com.zzsn.knowbase.mapper.KbUserRoleMapMapper;
import com.zzsn.knowbase.service.*;
import com.zzsn.knowbase.util.SpringContextUtils;
import com.zzsn.knowbase.vo.Result;
import org.apache.commons.lang3.ObjectUtils;
......@@ -45,9 +42,18 @@ public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjec
KbAuthuserKnowledgeprojectMapService authuserKnowledgeprojectMapService;
@Autowired
KbAuthuserKnowMapService kbAuthuserKnowMapService;
@Autowired
KbUserRoleMapService kbUserRoleMapService;
@Autowired
KbUserRoleMapMapper userRoleMapMapper;
@Autowired
private KbAuthuserKnowMapService authuserKnowMapService;
@Autowired
KbRolePermissionMapService rolePermissionMapService;
@Autowired
KbPermissionsService permissionsService;
@Autowired
KbRoleService roleService;
@Override
@Transactional
public Result<?> add(KbKnowledgeProject knowledgeProject) {
......@@ -166,32 +172,87 @@ public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjec
return Result.OK(kbKnowledgeProjects);
}else {
List<KbKnowledgeProject> kbKnowledgeProjects ;
String userId = userInfo.getId();
if ("1".equals(sign)&&StringUtils.isBlank(projectId)){
String id = userInfo.getId();
List<KbAuthuserKnowledgeprojectMap> list = authuserKnowledgeprojectMapService.list(Wrappers.<KbAuthuserKnowledgeprojectMap>lambdaQuery()
.eq(KbAuthuserKnowledgeprojectMap::getAuthUserId,id)
);
List<KbKnowledgeProject> list1 = super.list(Wrappers.<KbKnowledgeProject>lambdaQuery()
.in(KbKnowledgeProject::getId, list.stream().map(KbAuthuserKnowledgeprojectMap::getKnowledgeProjectId).collect(Collectors.toList()))
);
list1.forEach(e -> {
String s = e.getFullPath().split(",")[0];
List<KbAuthuserKnowledgeprojectMap> list = authuserKnowledgeprojectMapService.list(Wrappers.<KbAuthuserKnowledgeprojectMap>lambdaQuery()
.eq(KbAuthuserKnowledgeprojectMap::getAuthUserId, userId)
);
List<KbKnowledgeProject> allknowProjectPermissId = super.list(Wrappers.<KbKnowledgeProject>lambdaQuery()
.in(KbKnowledgeProject::getId, list.stream().map(KbAuthuserKnowledgeprojectMap::getKnowledgeProjectId).collect(Collectors.toList()))
);
//查询出所有需要展示的节点
Set<String> hasViewId = new HashSet<>();
allknowProjectPermissId.forEach(e -> {
Arrays.asList(e.getFullPath().split(",")).forEach(ee->{
hasViewId.add(ee);
});
});
if ("1".equals(sign)&&StringUtils.isBlank(projectId)){
kbKnowledgeProjects = super.list(Wrappers.<KbKnowledgeProject>lambdaQuery()
.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 {
kbKnowledgeProjects = super.list(Wrappers.<KbKnowledgeProject>lambdaQuery()
.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);
}
}
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
public List<KbKnowledgeProject> getTreeListBy(String id) {
return baseMapper.selectList(new LambdaQueryWrapper<KbKnowledgeProject>()
......
package com.zzsn.knowbase.vo;
import com.zzsn.knowbase.entity.KbAuthorizedUser;
import lombok.Data;
import java.util.List;
/**
* Description:
*
* @author: EDY
* @since: 2024/1/13
*/
@Data
public class AddUserPermissKnowsVo {
private String knowledgeProjectId;
private List<KbAuthorizedUser> authorizedUsers;
private List<String> knowledgeIds;
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论