提交 bcb9fb81 作者: obcy

修改

上级 304e7777
......@@ -31,16 +31,16 @@ public class KnowInterceptor implements HandlerInterceptor {
// 在请求处理之前进行调用(Controller方法调用之前)
// 返回true才会继续执行后续的Interceptor和Controller
// 返回false则取消当前请求
// String token = request.getHeader("X-Access-Token");
//
// KbAuthorizedUserService userService = SpringContextUtils.getBean(KbAuthorizedUserService.class);
// Result<?> result = userService.doCheckAndGetUser(token);
// /**第三方用户验证未通过,直接拦截请求并返回提示*/
// if (!result.isSuccess()){
// doRes(request,response);
// return false;
// }
// request.setAttribute(Constants.USER_INFO, JSONUtil.toJsonStr(result.getResult()));
String token = request.getHeader("X-Access-Token");
KbAuthorizedUserService userService = SpringContextUtils.getBean(KbAuthorizedUserService.class);
Result<?> result = userService.doCheckAndGetUser(token);
/**第三方用户验证未通过,直接拦截请求并返回提示*/
if (!result.isSuccess()){
doRes(request,response);
return false;
}
request.setAttribute(Constants.USER_INFO, JSONUtil.toJsonStr(result.getResult()));
return true;
}
......
......@@ -110,6 +110,11 @@ public class KbAuthorizedUser extends Model<KbAuthorizedUser> {
*/
@TableField(exist = false)
private String knowledgeProjectId;
/**
* 是否有所有节点的权限,0是,1否
*/
@TableField(exist = false)
private Integer isAll;
}
package com.zzsn.knowbase.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
......@@ -31,13 +30,18 @@ public class KbUserRoleMap extends Model<KbUserRoleMap> {
* 授权用户id
*/
@TableField("user_id")
private Long userId;
private String userId;
/**
* 角色id
*/
@TableField("role_id")
private Long roleId;
private String roleId;
/**
* 知识库分类id
*/
@TableField("knowledge_project_id")
private String knowledgeProjectId;
......
......@@ -72,25 +72,26 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
authorizedUser.setCreateTime(new Date());
super.save(authorizedUser);
/**插入用户角色关系表*/
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(Long.parseLong(authorizedUser.getId()));
kbUserRoleMap.setRoleId(Long.parseLong(e));
maps.add(kbUserRoleMap);
});
kbUserRoleMapService.saveBatch(maps);
}
/**插入用户知识库权限关系表*/
if (StringUtils.isNotBlank(authorizedUser.getKnowledgeProjectId())){
KbAuthuserKnowledgeprojectMap kbAuthuserKnowledgeprojectMap = new KbAuthuserKnowledgeprojectMap();
kbAuthuserKnowledgeprojectMap.setAuthUserId(authorizedUser.getId());
kbAuthuserKnowledgeprojectMap.setKnowledgeProjectId(authorizedUser.getKnowledgeProjectId());
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);
maps.add(kbUserRoleMap);
});
kbUserRoleMapService.saveBatch(maps);
}
}
return Result.OK();
}
......@@ -103,50 +104,83 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
}
List<KbAuthorizedUser> kbAuthorizedUsers = authorizedUserMapper.selectList(Wrappers.<KbAuthorizedUser>lambdaQuery().in(KbAuthorizedUser::getUserId, authorizedUsers.stream().map(KbAuthorizedUser::getUserId).collect(Collectors.toList())));
List<String> collect = kbAuthorizedUsers.stream().map(KbAuthorizedUser::getUserId).collect(Collectors.toList());
authorizedUsers.forEach(e-> {
List<String> collect = kbAuthorizedUsers.stream().map(KbAuthorizedUser::getUserId).collect(Collectors.toList());
//已经授权过的用户在用户表里不用重复插入
List<KbAuthorizedUser> notExist = authorizedUsers.stream().filter(f -> !collect.contains(f.getUserId())).collect(Collectors.toList());
notExist.forEach(e-> {
/**保存授权用户*/
e.setStatus("0");
e.setCreateTime(new Date());
});
super.saveBatch(authorizedUsers);
super.saveBatch(notExist);
//获取这一批下面的其中一个用户,获取这批用户关联的知识库分类
KbAuthorizedUser kbAuthorizedUser = authorizedUsers.get(0);
if (!"0".equals(kbAuthorizedUser.getKnowledgeProjectId())) {
List<KbKnowledgeProject> projectTypes = knowledgeProjectService.list(Wrappers.<KbKnowledgeProject>lambdaQuery().like(KbKnowledgeProject::getFullPath, kbAuthorizedUser.getKnowledgeProjectId()));
//查询授权节点和其子节点,一起授权
List<KbKnowledgeProject> projectTypes = knowledgeProjectService.list(Wrappers.<KbKnowledgeProject>lambdaQuery().like(KbKnowledgeProject::getFullPath, kbAuthorizedUser.getKnowledgeProjectId()));
List<KbUserRoleMap> maps = new ArrayList<>();
List<KbAuthuserKnowledgeprojectMap> userknows = new ArrayList<>();
List<KbUserRoleMap> maps = new ArrayList<>();
List<KbAuthuserKnowledgeprojectMap> userknows = new ArrayList<>();
authorizedUsers.forEach(authorizedUser->{
/**插入用户知识库分类权限关系表*/
if (CollectionUtil.isNotEmpty(projectTypes)){
projectTypes.forEach(e -> {
KbAuthuserKnowledgeprojectMap kbAuthuserKnowledgeprojectMap = new KbAuthuserKnowledgeprojectMap();
kbAuthuserKnowledgeprojectMap.setAuthUserId(authorizedUser.getId());
kbAuthuserKnowledgeprojectMap.setKnowledgeProjectId(e.getId());
kbAuthuserKnowledgeprojectMap.setSign(0);
userknows.add(kbAuthuserKnowledgeprojectMap);
/**插入用户角色关系表*/
if (StringUtils.isNotBlank(authorizedUser.getRoleId())){
String roleId = authorizedUser.getRoleId();
List<String> list = Arrays.asList(roleId.split(","));
list.forEach(ee->{
KbUserRoleMap kbUserRoleMap = new KbUserRoleMap();
kbUserRoleMap.setUserId(authorizedUser.getId());
kbUserRoleMap.setRoleId(ee);
kbUserRoleMap.setKnowledgeProjectId(e.getId());
maps.add(kbUserRoleMap);
});
}
});
}
});
authorizedUsers.forEach(authorizedUser->{
/**插入用户角色关系表*/
if (StringUtils.isNotBlank(authorizedUser.getRoleId())){
String roleId = authorizedUser.getRoleId();
List<String> list = Arrays.asList(roleId.split(","));
list.forEach(e->{
KbUserRoleMap kbUserRoleMap = new KbUserRoleMap();
kbUserRoleMap.setUserId(Long.parseLong(authorizedUser.getId()));
kbUserRoleMap.setRoleId(Long.parseLong(e));
maps.add(kbUserRoleMap);
});
}
/**插入用户知识库分类权限关系表*/
if (CollectionUtil.isNotEmpty(projectTypes)){
projectTypes.forEach(e -> {
kbUserRoleMapService.saveBatch(maps);
authuserKnowledgeprojectMapService.saveBatch(userknows);
}else {
authorizedUsers.forEach(authorizedUser->{
/**插入用户知识库权限关系表*/
if (StringUtils.isNotBlank(authorizedUser.getKnowledgeProjectId())){
KbAuthuserKnowledgeprojectMap kbAuthuserKnowledgeprojectMap = new KbAuthuserKnowledgeprojectMap();
kbAuthuserKnowledgeprojectMap.setAuthUserId(authorizedUser.getId());
kbAuthuserKnowledgeprojectMap.setKnowledgeProjectId(e.getId());
userknows.add(kbAuthuserKnowledgeprojectMap);
});
}
});
kbUserRoleMapService.saveBatch(maps);
authuserKnowledgeprojectMapService.saveBatch(userknows);
kbAuthuserKnowledgeprojectMap.setKnowledgeProjectId(authorizedUser.getKnowledgeProjectId());
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(authorizedUser.getKnowledgeProjectId());
maps.add(kbUserRoleMap);
});
kbUserRoleMapService.saveBatch(maps);
}
});
}
return Result.OK();
......@@ -168,8 +202,8 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
List<KbUserRoleMap> maps = new ArrayList<>();
list.forEach(e->{
KbUserRoleMap kbUserRoleMap = new KbUserRoleMap();
kbUserRoleMap.setUserId(Long.parseLong(authorizedUser.getId()));
kbUserRoleMap.setRoleId(Long.parseLong(e));
kbUserRoleMap.setUserId( authorizedUser.getId());
kbUserRoleMap.setRoleId(e);
maps.add(kbUserRoleMap);
});
kbUserRoleMapService.saveBatch(maps);
......@@ -215,6 +249,19 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
QueryWrapper<KbAuthorizedUser> query = new QueryWrapper<>();
query.eq("a.user_id",bean.getUserId());
KbAuthorizedUser one = authorizedUserMapper.getOne(query);
/**是否是所有节点的管理员*/
List<KbAuthuserKnowledgeprojectMap> list1 = authuserKnowledgeprojectMapService.list(Wrappers.<KbAuthuserKnowledgeprojectMap>lambdaQuery()
.eq(KbAuthuserKnowledgeprojectMap::getAuthUserId, one.getId())
.eq(KbAuthuserKnowledgeprojectMap::getKnowledgeProjectId, "0")
.eq(KbAuthuserKnowledgeprojectMap::getSign, 0)
);
if (CollectionUtil.isNotEmpty(list1)){
one.setIsAll(0);
}else {
one.setIsAll(1);
}
List<KbRole> kbRoles = roleService.listByIds(Arrays.asList(one.getRoleId().split(",")));
List<KbRolePermissionMap> permissionMaps = rolePermissionMapService.list(Wrappers.<KbRolePermissionMap>lambdaQuery().in(KbRolePermissionMap::getRoleId, Arrays.asList(one.getRoleId().split(","))));
......@@ -284,6 +331,18 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
QueryWrapper<KbAuthorizedUser> query = new QueryWrapper<>();
query.eq("a.user_id",bean.getUserId());
KbAuthorizedUser one = authorizedUserMapper.getOne(query);
/**是否是所有节点的管理员*/
List<KbAuthuserKnowledgeprojectMap> list1 = authuserKnowledgeprojectMapService.list(Wrappers.<KbAuthuserKnowledgeprojectMap>lambdaQuery()
.eq(KbAuthuserKnowledgeprojectMap::getAuthUserId, one.getId())
.eq(KbAuthuserKnowledgeprojectMap::getKnowledgeProjectId, "0")
.eq(KbAuthuserKnowledgeprojectMap::getSign, 0)
);
if (CollectionUtil.isNotEmpty(list1)){
one.setIsAll(0);
}else {
one.setIsAll(1);
}
return Result.OK(one);
}else {
return Result.error("第三方系统未通过用户校验");
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论