提交 9ab5572d 作者: yanxin

知识库兼容个人素材查询

上级 d86f28c5
......@@ -4,6 +4,8 @@ import java.util.HashMap;
import java.util.Map;
public class Constants {
//个人素材一级分类id
public static final String SC_CATEGORY = "1826201944893501441";
//个人素材知识库id
public static final String SC_USER = "1826201830565163010";
//redis缓存 key常量
......
......@@ -39,6 +39,7 @@ public class KbKnowledgeProjectTypeController {
queryWrapper.orderByAsc(KbKnowledgeProjectType::getSort);
List<KbKnowledgeProjectType> typelist = knowledgeProjectTypeService.list(queryWrapper);
List<KbKnowledgeProject> list = knowledgeProjectService.list();
list.addAll(knowledgeProjectService.getUserList());
List<Node> treeList = knowledgeProjectTypeService.getTreeList(typelist,list);
return Result.OK(treeList);
}
......
......@@ -73,6 +73,9 @@ public class KnowledgeController {
IPage<KnowledgeVO> pageList = knowledgeService.listFromPython(knowledgeParam, pageNo, pageSize, column, order);
return Result.OK(pageList);
}
if(Constants.SC_CATEGORY.equals(knowledgeParam.getTypeIds()) && "0".equals(knowledgeParam.getKnowledgeProjectId())){
knowledgeParam.setKnowledgeProjectId(null);
}
IPage<KnowledgeVO> pageList = knowledgeService.queryPageList(knowledgeParam, pageNo, pageSize, column, order);
return Result.OK(pageList);
}
......
......@@ -16,6 +16,7 @@ import com.zzsn.knowbase.vo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
......@@ -58,12 +59,13 @@ public class KnowledgeUserController {
return Result.error("用户未登录!");
}
knowledgeProject.setPid(loginUser.getId());
knowledgeProject.setFullPath(loginUser.getId());
knowledgeProject.setHasChild("0");
knowledgeProject.setCategory("user");
knowledgeProject.setCategory(Constants.SC_CATEGORY);
knowledgeProject.setCreateTime(new Date());
log.info("新增用户分组:{}", knowledgeProject);
knowledgeProjectService.save(knowledgeProject);
knowledgeProject.setFullPath(loginUser.getId() + "," + knowledgeProject.getId());
knowledgeProjectService.updateById(knowledgeProject);
return Result.OK("保存成功!");
}
/**
......@@ -128,6 +130,7 @@ public class KnowledgeUserController {
return Result.error("用户未登录!");
}
knowledgeParam.setKbKnowledgeId(Constants.SC_USER);
knowledgeParam.setTypeIds(Constants.SC_CATEGORY);
knowledgeParam.setUserId(loginUser.getId());
IPage<KnowledgeVO> pageList = knowledgeService.queryPageList(knowledgeParam, pageNo, pageSize, column, order);
return Result.OK(pageList);
......@@ -150,6 +153,11 @@ public class KnowledgeUserController {
knowledge.setUserId(loginUser.getId());
//对应个人素材知识库
knowledge.setKbKnowledgeId(Constants.SC_USER);
knowledge.setTypeId(Constants.SC_CATEGORY);
if(StringUtils.isEmpty(knowledge.getKnowledgeProjectId())){
//未设置分组时使用用户id作为分组
knowledge.setKnowledgeProjectId(loginUser.getId());
}
MultipartHttpServletRequest multipartRequest = WebUtils.getNativeRequest(request, MultipartHttpServletRequest.class);
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
......
......@@ -60,4 +60,5 @@ public class KnowledgeMessage {
private List<Content> contents;
private String userId;
}
package com.zzsn.knowbase.kafka.producer;
import com.alibaba.fastjson.JSON;
import com.zzsn.knowbase.constant.Constants;
import com.zzsn.knowbase.kafka.cloudstream.KnowledgeChannel;
import com.zzsn.knowbase.kafka.message.KnowledgeMessage;
import lombok.extern.slf4j.Slf4j;
......@@ -28,6 +29,10 @@ public class ProduceInfo {
* @author chenshiqiang
*/
public void sendKnowledgeContents(KnowledgeMessage knowledgeMessage) {
if(Constants.SC_USER.equals(knowledgeMessage.getKbKnowledgeId())){
//个人素材在推送到个人知识库
knowledgeMessage.setKbKnowledgeId(knowledgeMessage.getUserId());
}
String msg = JSON.toJSONString(knowledgeMessage);
Message<String> message = MessageBuilder.withPayload(msg).build();
channel.knowledgeContents().send(message);
......
......@@ -3,6 +3,7 @@ package com.zzsn.knowbase.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zzsn.knowbase.entity.KbKnowledgeProject;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
......@@ -18,6 +19,6 @@ import java.util.List;
@Mapper
public interface KbKnowledgeProjectMapper extends BaseMapper<KbKnowledgeProject> {
@Select("")
List<KbKnowledgeProject> getListByUser();
@Select("<script>select id,CONCAT(realname,'(',username,')') as typeName, '1826201944893501441' as pid from nt_system.sys_user where id in <foreach collection='userIds' open='(' separator=',' close=')' item='id'>#{id}</foreach></script>")
List<KbKnowledgeProject> getListByUser(@Param("userIds") List<String> userIds);
}
......@@ -65,4 +65,6 @@ public interface IKnowledgeService {
String exportPackage(String ids);
String comprocessByName(List<String> list, String filePath);
List<String> groupUserList(String kbKnowledgeId);
}
......@@ -49,4 +49,6 @@ public interface KbKnowledgeProjectService extends IService<KbKnowledgeProject>
List<KbAuthuserKnowledgeprojectMap> getKnowledgeProjectListByUserId(String userId);
List<KbKnowledgeProject> listByUserId(String userid);
List<KbKnowledgeProject> getUserList();
}
......@@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zzsn.knowbase.constant.Constants;
import com.zzsn.knowbase.entity.*;
import com.zzsn.knowbase.mapper.KbAuthorizedUserMapper;
import com.zzsn.knowbase.mapper.KbKnowledgeProjectMapper;
......@@ -56,6 +57,8 @@ public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjec
KbRoleService roleService;
@Autowired
KbAuthorizedUserMapper authorizedUserMapper;
@Autowired
private IKnowledgeService knowledgeService;
@Override
@Transactional
public Result<?> add(KbKnowledgeProject knowledgeProject) {
......@@ -362,6 +365,12 @@ public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjec
return this.list(queryWrapper);
}
@Override
public List<KbKnowledgeProject> getUserList() {
List<String> userIds = knowledgeService.groupUserList(Constants.SC_USER);
return kbKnowledgeProjectMapper.getListByUser(userIds);
}
/**
* 根据所传pid查询旧的父级节点的子节点并修改相应状态值
* @param pid
......
......@@ -46,6 +46,11 @@ import org.elasticsearch.index.query.MultiMatchQueryBuilder;
import org.elasticsearch.index.query.NestedQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.aggregations.Aggregation;
import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.terms.IncludeExclude;
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.sort.SortOrder;
import org.jsoup.Jsoup;
......@@ -108,7 +113,9 @@ class KnowledgeServiceImpl implements IKnowledgeService {
public void addKnowledge(KnowFile knowFile, Knowledge knowledge, KbAuthorizedUser userInfo) {
log.info("addKnowledge knowledge :{}", knowledge);
log.info("addKnowledge knowFile :{}", knowFile);
knowledge.setAuthor(userInfo.getName());
if(StringUtils.isEmpty(knowledge.getAuthor())){
knowledge.setAuthor(userInfo.getName());
}
if (null == knowledge.getVerifyStatus()) {
knowledge.setVerifyStatus(0);
}
......@@ -440,6 +447,8 @@ class KnowledgeServiceImpl implements IKnowledgeService {
} else {
catList = treeList;
}
//兼容选择用户查询个人素材的情况
catList.addAll(Arrays.asList(knowledgeParam.getKnowledgeProjectId().split(",")));
}else if(StringUtils.isNotEmpty(knowledgeParam.getKnowledgeProjectId())){
catList = Arrays.asList(knowledgeParam.getKnowledgeProjectId().split(","));
}
......@@ -547,6 +556,9 @@ class KnowledgeServiceImpl implements IKnowledgeService {
if (StringUtils.isNotEmpty(knowledgeParam.getKbKnowledgeId())) {
boolQuery.must(QueryBuilders.termsQuery("kbKnowledgeId", Arrays.asList(knowledgeParam.getKbKnowledgeId().split(","))));
}
if (StringUtils.isNotEmpty(knowledgeParam.getExcludeKbKnowledgeId())) {
boolQuery.mustNot(QueryBuilders.termsQuery("kbKnowledgeId", Arrays.asList(knowledgeParam.getExcludeKbKnowledgeId().split(","))));
}
if (null != knowledgeParam.getVerifyStatus()) {
boolQuery.must(QueryBuilders.termQuery("verifyStatus", knowledgeParam.getVerifyStatus()));
}
......@@ -773,12 +785,16 @@ class KnowledgeServiceImpl implements IKnowledgeService {
@Override
public void doExcel(HttpServletRequest request, String fileSuffix, String userId) {
String kbKnowledgeId = request.getParameter("kbKnowledgeId");
String knowledgeProjectId = request.getParameter("knowledgeProjectId");
String typeId = request.getParameter("typeId");
if(request.getRequestURI().contains("/user/")){
//个人素材上传
kbKnowledgeId = Constants.SC_USER;
typeId = Constants.SC_CATEGORY;
if(StringUtils.isEmpty(knowledgeProjectId)){
knowledgeProjectId = userId;
}
}
String knowledgeProjectId = request.getParameter("knowledgeProjectId");
String typeId = request.getParameter("typeId");
try {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
......@@ -887,7 +903,34 @@ class KnowledgeServiceImpl implements IKnowledgeService {
return tmpFile+downloadFileName+".zip";
}
@Override
public List<String> groupUserList(String kbKnowledgeId) {
List<String> userIds = new ArrayList<>();
SearchRequest searchRequest = new SearchRequest();
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.size(0);
TermsAggregationBuilder aggTerms = AggregationBuilders.terms("userId").field("userId").size(1000);
searchSourceBuilder.aggregation(aggTerms);
//创建查询对象
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
boolQuery.must(QueryBuilders.termQuery("kbKnowledgeId", kbKnowledgeId));
boolQuery.mustNot(QueryBuilders.matchQuery("deleteFlag", "1"));
searchSourceBuilder.query(boolQuery);
searchRequest.source(searchSourceBuilder);
try {
SearchResponse search = client.search(searchRequest, RequestOptions.DEFAULT);
for (Aggregation aggregation : search.getAggregations()) {
if("userId".equals(aggregation.getName())){
for (Terms.Bucket bucket : ((Terms) aggregation).getBuckets()) {
userIds.add(bucket.getKeyAsString());
}
}
}
} catch (IOException e) {
log.error("es聚合查询失败");
}
return userIds;
}
//导入发布库数据
......
......@@ -88,4 +88,6 @@ public class KnowledgeParam {
*/
private String userId;
//排除的知识库id
private String excludeKbKnowledgeId;
}
......@@ -57,4 +57,5 @@ public class KnowledgeVO {
*/
private String verifierName;
private Integer deleteFlag;
private String userId;
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论