Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
K
know-base
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
张京坤
know-base
Commits
adc7c161
提交
adc7c161
authored
7月 15, 2024
作者:
yanxin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
文件预览、编辑、导出逻辑优化
上级
bf3ec374
隐藏空白字符变更
内嵌
并排
正在显示
17 个修改的文件
包含
379 行增加
和
45 行删除
+379
-45
pom.xml
pom.xml
+2
-1
KbKnowledgeProjectTypeController.java
...knowbase/controller/KbKnowledgeProjectTypeController.java
+17
-0
KnowledgeController.java
...ava/com/zzsn/knowbase/controller/KnowledgeController.java
+85
-8
Enclosure.java
src/main/java/com/zzsn/knowbase/entity/Enclosure.java
+3
-0
KnowledgeExcel.java
src/main/java/com/zzsn/knowbase/entity/KnowledgeExcel.java
+11
-22
IEnclosureService.java
...ain/java/com/zzsn/knowbase/service/IEnclosureService.java
+4
-0
IKnowledgeService.java
...ain/java/com/zzsn/knowbase/service/IKnowledgeService.java
+2
-0
KbKnowledgeProjectTypeService.java
.../zzsn/knowbase/service/KbKnowledgeProjectTypeService.java
+5
-0
EnclosureServiceImpl.java
.../com/zzsn/knowbase/service/impl/EnclosureServiceImpl.java
+9
-0
KbAuthorizedUserServiceImpl.java
...sn/knowbase/service/impl/KbAuthorizedUserServiceImpl.java
+8
-7
KbKnowledgeProjectTypeServiceImpl.java
...wbase/service/impl/KbKnowledgeProjectTypeServiceImpl.java
+25
-0
KnowledgeServiceImpl.java
.../com/zzsn/knowbase/service/impl/KnowledgeServiceImpl.java
+42
-5
MinioUtil.java
src/main/java/com/zzsn/knowbase/util/MinioUtil.java
+4
-1
SpringContextUtils.java
src/main/java/com/zzsn/knowbase/util/SpringContextUtils.java
+2
-1
Node.java
src/main/java/com/zzsn/knowbase/util/tree/Node.java
+21
-0
TreeUtil.java
src/main/java/com/zzsn/knowbase/util/tree/TreeUtil.java
+138
-0
KnowledgeVO.java
src/main/java/com/zzsn/knowbase/vo/KnowledgeVO.java
+1
-0
没有找到文件。
pom.xml
浏览文件 @
adc7c161
...
...
@@ -68,7 +68,7 @@
<dependency>
<groupId>
cn.hutool
</groupId>
<artifactId>
hutool-all
</artifactId>
<version>
5.
3.8
</version>
<version>
5.
5.7
</version>
</dependency>
<!-- jsoup html解析 -->
<dependency>
...
...
@@ -219,6 +219,7 @@
</dependency>
</dependencies>
<build>
<finalName>
know-base
</finalName>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
...
...
src/main/java/com/zzsn/knowbase/controller/KbKnowledgeProjectTypeController.java
浏览文件 @
adc7c161
package
com
.
zzsn
.
knowbase
.
controller
;
import
com.zzsn.knowbase.entity.KbKnowledgeProject
;
import
com.zzsn.knowbase.entity.KbKnowledgeProjectType
;
import
com.zzsn.knowbase.service.KbKnowledgeProjectService
;
import
com.zzsn.knowbase.service.KbKnowledgeProjectTypeService
;
import
com.zzsn.knowbase.util.tree.Node
;
import
com.zzsn.knowbase.vo.Result
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
/**
* <p>
* 前端控制器
...
...
@@ -20,8 +25,20 @@ import org.springframework.web.bind.annotation.*;
public
class
KbKnowledgeProjectTypeController
{
@Autowired
KbKnowledgeProjectTypeService
knowledgeProjectTypeService
;
@Autowired
KbKnowledgeProjectService
knowledgeProjectService
;
/**
* 树形结构分类配置查询
* */
@GetMapping
(
"treeList"
)
public
Result
<?>
treeList
(){
List
<
KbKnowledgeProjectType
>
typelist
=
knowledgeProjectTypeService
.
list
();
List
<
KbKnowledgeProject
>
list
=
knowledgeProjectService
.
list
();
List
<
Node
>
treeList
=
knowledgeProjectTypeService
.
getTreeList
(
typelist
,
list
);
return
Result
.
OK
(
treeList
);
}
/**
* 根据id查询
* */
@GetMapping
...
...
src/main/java/com/zzsn/knowbase/controller/KnowledgeController.java
浏览文件 @
adc7c161
package
com
.
zzsn
.
knowbase
.
controller
;
import
cn.hutool.core.util.ZipUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.zzsn.knowbase.entity.KbAuthorizedUser
;
import
com.zzsn.knowbase.entity.KnowFile
;
import
com.zzsn.knowbase.entity.Knowledge
;
import
com.zzsn.knowbase.entity.KnowledgeExcel
;
import
com.zzsn.knowbase.constant.Constants
;
import
com.zzsn.knowbase.entity.*
;
import
com.zzsn.knowbase.service.IEnclosureService
;
import
com.zzsn.knowbase.service.IKnowledgeService
;
import
com.zzsn.knowbase.service.ILocalFileService
;
import
com.zzsn.knowbase.util.*
;
...
...
@@ -18,6 +18,8 @@ import io.swagger.annotations.Api;
import
io.swagger.annotations.ApiOperation
;
import
lombok.Data
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.web.bind.annotation.*
;
...
...
@@ -27,8 +29,8 @@ import org.springframework.web.util.WebUtils;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.File
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.net.URLEncoder
;
import
java.util.*
;
import
java.util.concurrent.CompletableFuture
;
...
...
@@ -55,6 +57,9 @@ public class KnowledgeController {
@Autowired
private
RedisUtil
redisUtil
;
@Autowired
private
IEnclosureService
enclosureService
;
/**
* 分页列表查询
*/
...
...
@@ -90,6 +95,28 @@ public class KnowledgeController {
}
return
Result
.
OK
(
knowledgeVO
);
}
/**
* 根据附件id查询详情
*/
@GetMapping
(
value
=
"/getEnclosureById"
)
public
Result
<?>
getEnclosureById
(
@RequestParam
String
id
)
{
Enclosure
byId
=
enclosureService
.
getById
(
id
);
if
(
byId
==
null
){
return
Result
.
OK
(
"文件不存在!"
);
}
byId
.
setUrlDomain
(
MinioUtil
.
getDomainUrl
());
return
Result
.
OK
(
byId
);
}
/**
* 附件上传
*/
@PostMapping
(
value
=
"/uploadFile"
)
public
Result
<?>
uploadFile
(
HttpServletRequest
request
)
{
MultipartHttpServletRequest
multipartRequest
=
WebUtils
.
getNativeRequest
(
request
,
MultipartHttpServletRequest
.
class
);
Map
<
String
,
MultipartFile
>
fileMap
=
multipartRequest
.
getFileMap
();
Result
<
List
<
KnowFile
>>
result
=
localFileService
.
upload
(
fileMap
);
return
Result
.
OK
(
result
);
}
@GetMapping
(
value
=
"/listFromPython"
)
...
...
@@ -209,9 +236,8 @@ public class KnowledgeController {
@RequestMapping
(
value
=
"/download"
)
public
Result
<?>
download
(
HttpServletRequest
request
,
HttpServletResponse
response
)
{
try
{
File
fileDir
=
ExcelExportUtil
.
getFileDir
();
List
<
KnowledgeExcel
>
dataList
=
new
ArrayList
<>();
String
filePath
=
fileDir
.
getAbsolutePath
()
+
File
.
separator
+
"info
.xlsx"
;
String
filePath
=
Constants
.
TEMP_FILES_DIR
+
"template
.xlsx"
;
ExcelExportUtil
.
writeExcelFront
(
dataList
,
"知识库列表导入模板"
,
filePath
,
KnowledgeExcel
.
class
);
ExcelExportUtil
.
download
(
response
,
filePath
,
true
);
}
catch
(
Exception
e
)
{
...
...
@@ -298,7 +324,58 @@ public class KnowledgeController {
}
}
/**
* Minio多文件打包下载
* @param response
*/
@GetMapping
(
"/downloadMinioFiles"
)
public
void
downloadMinioFiles
(
String
fileIds
,
HttpServletResponse
response
)
throws
IOException
{
List
<
Enclosure
>
fileList
=
enclosureService
.
getFilePathByIds
(
fileIds
);
//被压缩文件InputStream
InputStream
[]
srcFiles
=
new
InputStream
[
fileList
.
size
()];
//被压缩文件名称
String
[]
srcFileNames
=
new
String
[
fileList
.
size
()];
for
(
int
i
=
0
;
i
<
fileList
.
size
();
i
++)
{
String
fileUrl
=
fileList
.
get
(
i
).
getUrlPath
();
if
(
fileUrl
.
startsWith
(
"/"
)){
fileUrl
=
fileUrl
.
substring
(
1
);
}
//提取存储桶名
String
bucketName
=
fileUrl
.
split
(
"/"
)[
0
];
String
fileName
=
fileUrl
.
replace
(
bucketName
+
"/"
,
""
);
InputStream
inputStream
=
MinioUtil
.
getMinioFile
(
bucketName
,
fileName
);
if
(
inputStream
==
null
)
{
continue
;
}
srcFiles
[
i
]
=
inputStream
;
srcFileNames
[
i
]
=
fileList
.
get
(
i
).
getName
();
}
response
.
setCharacterEncoding
(
"UTF-8"
);
response
.
setHeader
(
"Content-Disposition"
,
"attachment;filename="
+
URLEncoder
.
encode
(
"下载测试.zip"
,
"UTF-8"
));
//多个文件压缩成压缩包返回
ZipUtil
.
zip
(
response
.
getOutputStream
(),
srcFileNames
,
srcFiles
);
}
/**
* 文本类数据导出
* @param response
*/
@RequestMapping
(
value
=
"/downloadNewsFiles"
)
public
void
downloadNewsFiles
(
String
newsIds
,
HttpServletResponse
response
)
throws
Exception
{
List
<
KnowledgeVO
>
knowledgeList
=
knowledgeService
.
queryListByIds
(
newsIds
);
//封装数据
List
<
KnowledgeExcel
>
dataList
=
new
ArrayList
<>();
for
(
KnowledgeVO
knowledgeVO
:
knowledgeList
)
{
KnowledgeExcel
knowledgeExcel
=
new
KnowledgeExcel
();
BeanUtils
.
copyProperties
(
knowledgeVO
,
knowledgeExcel
);
dataList
.
add
(
knowledgeExcel
);
if
(
StringUtils
.
isEmpty
(
knowledgeExcel
.
getContent
())){
knowledgeExcel
.
setContent
(
ContentUtility
.
TransferHTML2Text
(
knowledgeExcel
.
getContentWithTag
()));
}
}
String
filePath
=
Constants
.
TEMP_FILES_DIR
+
"downloadNewsFiles.xlsx"
;
ExcelExportUtil
.
writeExcelFront
(
dataList
,
"数据导出"
,
filePath
,
KnowledgeExcel
.
class
);
ExcelExportUtil
.
download
(
response
,
filePath
,
true
);
}
}
@Data
...
...
src/main/java/com/zzsn/knowbase/entity/Enclosure.java
浏览文件 @
adc7c161
...
...
@@ -60,4 +60,7 @@ public class Enclosure implements Serializable {
@ApiModelProperty
(
value
=
"fileSize"
)
private
Long
fileSize
;
@TableField
(
exist
=
false
)
private
String
urlDomain
;
}
src/main/java/com/zzsn/knowbase/entity/KnowledgeExcel.java
浏览文件 @
adc7c161
...
...
@@ -25,33 +25,22 @@ import java.util.List;
@AllArgsConstructor
public
class
KnowledgeExcel
{
/**
* 标题
*/
@ExcelProperty
(
value
=
"标题"
,
index
=
0
)
@ExcelProperty
(
value
=
"数据id"
,
index
=
0
)
private
String
id
;
@ExcelProperty
(
value
=
"标题"
,
index
=
1
)
private
String
title
;
@ExcelProperty
(
value
=
"正文"
,
index
=
1
)
@ExcelProperty
(
value
=
"正文"
,
index
=
2
)
private
String
content
;
/**
* 作者
*/
@ExcelProperty
(
value
=
"作者"
,
index
=
2
)
@ExcelProperty
(
value
=
"正文(带标签)"
,
index
=
3
)
private
String
contentWithTag
;
@ExcelProperty
(
value
=
"作者"
,
index
=
4
)
private
String
author
;
/**
* 来源
*/
@ExcelProperty
(
value
=
"来源"
,
index
=
3
)
@ExcelProperty
(
value
=
"来源"
,
index
=
5
)
private
String
origin
;
/**
* 发布时间
*/
@ExcelProperty
(
value
=
"发布时间"
,
index
=
4
)
@ExcelProperty
(
value
=
"发布时间"
,
index
=
6
)
private
String
publishDate
;
@ExcelProperty
(
value
=
"原文链接"
,
index
=
7
)
private
String
sourceAddress
;
}
src/main/java/com/zzsn/knowbase/service/IEnclosureService.java
浏览文件 @
adc7c161
...
...
@@ -4,6 +4,8 @@ package com.zzsn.knowbase.service;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.zzsn.knowbase.entity.Enclosure
;
import
java.util.List
;
/**
* @Description: 附件表
...
...
@@ -14,4 +16,6 @@ import com.zzsn.knowbase.entity.Enclosure;
public
interface
IEnclosureService
extends
IService
<
Enclosure
>
{
Enclosure
getByMd5
(
String
contentMd5
);
List
<
Enclosure
>
getFilePathByIds
(
String
ids
);
}
src/main/java/com/zzsn/knowbase/service/IKnowledgeService.java
浏览文件 @
adc7c161
...
...
@@ -48,6 +48,8 @@ public interface IKnowledgeService {
*/
IPage
<
KnowledgeVO
>
queryPageList
(
KnowledgeParam
knowledgeParam
,
Integer
pageNo
,
Integer
pageSize
,
String
column
,
String
order
);
List
<
KnowledgeVO
>
queryListByIds
(
String
ids
);
IPage
<
KnowledgeVO
>
listFromPython
(
KnowledgeParam
knowledgeParam
,
Integer
pageNo
,
Integer
pageSize
,
String
column
,
String
order
);
KnowledgeVO
getById
(
String
id
);
...
...
src/main/java/com/zzsn/knowbase/service/KbKnowledgeProjectTypeService.java
浏览文件 @
adc7c161
package
com
.
zzsn
.
knowbase
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.zzsn.knowbase.entity.KbKnowledgeProject
;
import
com.zzsn.knowbase.entity.KbKnowledgeProjectType
;
import
com.zzsn.knowbase.util.tree.Node
;
import
java.util.List
;
/**
* <p>
...
...
@@ -13,4 +17,5 @@ import com.zzsn.knowbase.entity.KbKnowledgeProjectType;
*/
public
interface
KbKnowledgeProjectTypeService
extends
IService
<
KbKnowledgeProjectType
>
{
List
<
Node
>
getTreeList
(
List
<
KbKnowledgeProjectType
>
typelist
,
List
<
KbKnowledgeProject
>
list
);
}
src/main/java/com/zzsn/knowbase/service/impl/EnclosureServiceImpl.java
浏览文件 @
adc7c161
...
...
@@ -8,6 +8,8 @@ import com.zzsn.knowbase.mapper.EnclosureMapper;
import
com.zzsn.knowbase.service.IEnclosureService
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* @Description: 附件表
* @Author: jeecg-boot
...
...
@@ -23,4 +25,11 @@ public class EnclosureServiceImpl extends ServiceImpl<EnclosureMapper, Enclosure
queryWrapper
.
eq
(
Enclosure:
:
getContentMd5
,
contentMd5
);
return
this
.
getOne
(
queryWrapper
);
}
@Override
public
List
<
Enclosure
>
getFilePathByIds
(
String
ids
)
{
LambdaQueryWrapper
<
Enclosure
>
queryWrapper
=
Wrappers
.
lambdaQuery
();
queryWrapper
.
in
(
Enclosure:
:
getId
,
ids
.
split
(
","
));
return
this
.
list
(
queryWrapper
);
}
}
src/main/java/com/zzsn/knowbase/service/impl/KbAuthorizedUserServiceImpl.java
浏览文件 @
adc7c161
...
...
@@ -6,6 +6,7 @@ import cn.hutool.core.util.ObjectUtil;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.http.HttpRequest
;
import
cn.hutool.json.JSONUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
...
...
@@ -460,9 +461,9 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
.
form
(
"username"
,
user
.
getUsername
())
.
form
(
"excludeIds"
,
finalExists
)
.
execute
().
body
();
Result
bean
=
JSON
Util
.
toBean
(
body
,
Result
.
class
);
Result
bean
=
JSON
.
parseObject
(
body
,
Result
.
class
);
Page
page
=
JSON
Util
.
toBean
(
JSONUtil
.
toJsonStr
(
bean
.
getResult
()),
Page
.
class
);
Page
page
=
JSON
.
parseObject
(
JSONUtil
.
toJsonStr
(
bean
.
getResult
()),
Page
.
class
);
List
<
KbAuthorizedUser
>
list
=
JSONUtil
.
toList
(
JSONUtil
.
parseArray
(
JSONUtil
.
toJsonStr
(
page
.
getRecords
())),
KbAuthorizedUser
.
class
);
Page
<
KbAuthorizedUser
>
result
=
new
Page
<>();
...
...
@@ -831,7 +832,7 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
boolean
success
=
res
.
isSuccess
();
if
(
200
==
res
.
getCode
()
&&
success
){
/**校验成功,获取到第三方用户信息*/
KbAuthorizedUser
one
=
JSON
Util
.
toBean
(
JSONUtil
.
toJsonStr
(
res
.
getResult
()),
KbAuthorizedUser
.
class
);
KbAuthorizedUser
one
=
JSON
.
parseObject
(
JSONUtil
.
toJsonStr
(
res
.
getResult
()),
KbAuthorizedUser
.
class
);
one
.
setIsAll
(
0
);
one
.
setRoleId
(
"1742844597970673665"
);
/**校验第三方用户是否进行了授权*//*
...
...
@@ -918,9 +919,9 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
.
form
(
"username"
,
username
)
.
form
(
"excludeIds"
,
finalExists
)
.
execute
().
body
();
Result
bean
=
JSON
Util
.
toBean
(
body
,
Result
.
class
);
Result
bean
=
JSON
.
parseObject
(
body
,
Result
.
class
);
Page
page
=
JSON
Util
.
toBean
(
JSONUtil
.
toJsonStr
(
bean
.
getResult
()),
Page
.
class
);
Page
page
=
JSON
.
parseObject
(
JSONUtil
.
toJsonStr
(
bean
.
getResult
()),
Page
.
class
);
List
<
KbAuthorizedUser
>
list
=
JSONUtil
.
toList
(
JSONUtil
.
parseArray
(
JSONUtil
.
toJsonStr
(
page
.
getRecords
())),
KbAuthorizedUser
.
class
);
Page
<
KbAuthorizedUser
>
result
=
new
Page
<>();
...
...
@@ -937,7 +938,7 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
String
body
=
HttpRequest
.
post
(
checkuserurl
).
header
(
"X-Access-Token"
,
token
).
execute
().
body
();
Result
bean
=
null
;
try
{
bean
=
JSON
Util
.
toBean
(
body
,
Result
.
class
);
bean
=
JSON
.
parseObject
(
body
,
Result
.
class
);
}
catch
(
Exception
e
)
{
return
Result
.
error
(
"第三方用户校验异常"
);
}
...
...
@@ -950,7 +951,7 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
boolean
success
=
res
.
isSuccess
();
if
(
200
==
res
.
getCode
()
&&
success
)
{
/**校验成功,获取到第三方用户信息*/
KbAuthorizedUser
bean
=
JSON
Util
.
toBean
(
JSONUtil
.
toJsonStr
(
res
.
getResult
()),
KbAuthorizedUser
.
class
);
KbAuthorizedUser
bean
=
JSON
.
parseObject
(
JSONUtil
.
toJsonStr
(
res
.
getResult
()),
KbAuthorizedUser
.
class
);
// /**校验第三方用户是否进行了授权*/
// List<KbAuthorizedUser> list = super.list(Wrappers.<KbAuthorizedUser>lambdaQuery().eq(KbAuthorizedUser::getUserId, bean.getUserId()));
// if (CollectionUtil.isEmpty(list)) {
...
...
src/main/java/com/zzsn/knowbase/service/impl/KbKnowledgeProjectTypeServiceImpl.java
浏览文件 @
adc7c161
...
...
@@ -2,11 +2,17 @@ package com.zzsn.knowbase.service.impl;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.zzsn.knowbase.entity.KbKnowledgeProject
;
import
com.zzsn.knowbase.entity.KbKnowledgeProjectType
;
import
com.zzsn.knowbase.mapper.KbKnowledgeProjectTypeMapper
;
import
com.zzsn.knowbase.service.KbKnowledgeProjectTypeService
;
import
com.zzsn.knowbase.util.tree.Node
;
import
com.zzsn.knowbase.util.tree.TreeUtil
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* <p>
* 服务实现类
...
...
@@ -18,4 +24,23 @@ import org.springframework.stereotype.Service;
@Service
public
class
KbKnowledgeProjectTypeServiceImpl
extends
ServiceImpl
<
KbKnowledgeProjectTypeMapper
,
KbKnowledgeProjectType
>
implements
KbKnowledgeProjectTypeService
{
@Override
public
List
<
Node
>
getTreeList
(
List
<
KbKnowledgeProjectType
>
typelist
,
List
<
KbKnowledgeProject
>
list
)
{
List
<
Node
>
nodes
=
new
ArrayList
<>();
for
(
KbKnowledgeProjectType
type
:
typelist
)
{
Node
node
=
new
Node
();
node
.
setId
(
type
.
getId
());
node
.
setName
(
type
.
getName
());
node
.
setPid
(
"0"
);
nodes
.
add
(
node
);
}
for
(
KbKnowledgeProject
item
:
list
)
{
Node
node
=
new
Node
();
node
.
setId
(
item
.
getId
());
node
.
setName
(
item
.
getTypeName
());
node
.
setPid
(
"0"
.
equals
(
item
.
getPid
())?
item
.
getCategory
():
item
.
getPid
());
nodes
.
add
(
node
);
}
return
TreeUtil
.
tree
(
nodes
,
"0"
);
}
}
src/main/java/com/zzsn/knowbase/service/impl/KnowledgeServiceImpl.java
浏览文件 @
adc7c161
...
...
@@ -119,14 +119,15 @@ class KnowledgeServiceImpl implements IKnowledgeService {
knowledge
.
setDeleteFlag
(
0
);
KnowledgeMessage
knowledgeMessage
=
new
KnowledgeMessage
();
if
(
Integer
.
valueOf
(
"0"
).
equals
(
knowledge
.
getImportData
())
)
{
if
(
knowledge
.
getImportData
()!=
null
&&
knowledge
.
getImportData
()!=
1
)
{
//创建临时文件
File
file
=
null
;
try
{
File
dirFile
=
new
File
(
Constants
.
TEMP_FILES_DIR
);
dirFile
.
mkdirs
();
file
=
File
.
createTempFile
(
Constants
.
TEMP_FILES_DIR
,
knowFile
.
getFileType
(),
dirFile
);
}
catch
(
IOException
e
)
{
log
.
info
(
"创建临时文件失败
"
);
log
.
info
(
"创建临时文件失败
e:{}"
,
e
.
getMessage
(),
e
);
return
;
}
try
(
FileOutputStream
fos
=
new
FileOutputStream
(
file
)){
...
...
@@ -369,12 +370,12 @@ class KnowledgeServiceImpl implements IKnowledgeService {
@Override
public
void
updateKnowledge
(
Knowledge
knowledge
)
{
esOpUtil
.
docSavaByEntity
(
Constants
.
ES_DATA_FOR_KNOWLEDGE
,
knowledge
.
getId
(),
knowledge
);
//sync data
KbAuthorizedUser
userInfo
=
SpringContextUtils
.
getUserInfo
();
if
(
null
==
userInfo
)
{
return
;
}
esOpUtil
.
docSavaByEntity
(
Constants
.
ES_DATA_FOR_KNOWLEDGE
,
knowledge
.
getId
(),
knowledge
);
KnowledgeVO
knowledgeVO
=
this
.
getById
(
knowledge
.
getId
());
addKnowledge
(
knowledgeVO
.
getFiles
().
get
(
0
),
knowledge
,
userInfo
);
}
...
...
@@ -575,7 +576,7 @@ class KnowledgeServiceImpl implements IKnowledgeService {
List
<
KnowledgeVO
>
list
=
new
ArrayList
<>();
for
(
SearchHit
hit
:
searchHits
)
{
String
queryInfo
=
hit
.
getSourceAsString
();
KnowledgeVO
info
=
JSON
Util
.
toBean
(
queryInfo
,
KnowledgeVO
.
class
);
KnowledgeVO
info
=
JSON
.
parseObject
(
queryInfo
,
KnowledgeVO
.
class
);
info
.
setPublishDate
(
EsDateUtil
.
esFieldDateMapping
(
info
.
getPublishDate
()));
info
.
setVerifyTime
(
EsDateUtil
.
esFieldDateMapping
(
info
.
getVerifyTime
()));
list
.
add
(
info
);
...
...
@@ -590,6 +591,42 @@ class KnowledgeServiceImpl implements IKnowledgeService {
}
@Override
public
List
<
KnowledgeVO
>
queryListByIds
(
String
ids
)
{
List
<
String
>
idList
=
Arrays
.
asList
(
ids
.
split
(
","
));
SearchRequest
searchRequest
=
new
SearchRequest
(
Constants
.
ES_DATA_FOR_KNOWLEDGE
);
SearchSourceBuilder
searchSourceBuilder
=
new
SearchSourceBuilder
();
//设置分页参数
searchSourceBuilder
.
size
(
idList
.
size
());
searchSourceBuilder
.
from
(
0
);
//按发布时间倒序
searchSourceBuilder
.
sort
(
"publishDate"
,
SortOrder
.
DESC
);
//默认最大数量是10000,设置为true后,显示准确数量
searchSourceBuilder
.
trackTotalHits
(
true
);
//创建查询对象
BoolQueryBuilder
boolQuery
=
QueryBuilders
.
boolQuery
();
boolQuery
.
must
(
QueryBuilders
.
termsQuery
(
"id"
,
idList
));
searchSourceBuilder
.
query
(
boolQuery
);
searchRequest
.
source
(
searchSourceBuilder
);
SearchResponse
searchResponse
=
null
;
try
{
searchResponse
=
client
.
search
(
searchRequest
,
RequestOptions
.
DEFAULT
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
List
<
KnowledgeVO
>
list
=
new
ArrayList
<>();
if
(
null
!=
searchResponse
&&
null
!=
searchResponse
.
getHits
())
{
SearchHit
[]
searchHits
=
searchResponse
.
getHits
().
getHits
();
for
(
SearchHit
hit
:
searchHits
)
{
String
queryInfo
=
hit
.
getSourceAsString
();
KnowledgeVO
info
=
JSON
.
parseObject
(
queryInfo
,
KnowledgeVO
.
class
);
info
.
setPublishDate
(
EsDateUtil
.
esFieldDateMapping
(
info
.
getPublishDate
()));
info
.
setVerifyTime
(
EsDateUtil
.
esFieldDateMapping
(
info
.
getVerifyTime
()));
list
.
add
(
info
);
}
}
return
list
;
}
@Override
public
IPage
<
KnowledgeVO
>
listFromPython
(
KnowledgeParam
knowledgeParam
,
Integer
pageNo
,
Integer
pageSize
,
String
column
,
String
order
)
{
Object
data
=
redisUtil
.
get
(
genKey
(
knowledgeParam
));
...
...
@@ -775,7 +812,7 @@ class KnowledgeServiceImpl implements IKnowledgeService {
for
(
SearchHit
hit
:
searchHits
)
{
String
queryInfo
=
hit
.
getSourceAsString
();
KnowledgeVO
info
=
JSON
Util
.
toBean
(
queryInfo
,
KnowledgeVO
.
class
);
KnowledgeVO
info
=
JSON
.
parseObject
(
queryInfo
,
KnowledgeVO
.
class
);
info
.
setPublishDate
(
EsDateUtil
.
esFieldDateMapping
(
info
.
getPublishDate
()));
list
.
add
(
info
);
}
...
...
src/main/java/com/zzsn/knowbase/util/MinioUtil.java
浏览文件 @
adc7c161
...
...
@@ -9,6 +9,7 @@ import org.apache.commons.lang3.StringUtils;
import
org.springframework.web.multipart.MultipartFile
;
import
java.io.ByteArrayInputStream
;
import
java.io.FileInputStream
;
import
java.io.InputStream
;
import
java.net.URLDecoder
;
import
java.util.Date
;
...
...
@@ -42,7 +43,9 @@ public class MinioUtil {
public
static
String
getMinioUrl
()
{
return
minioUrl
;
}
public
static
String
getDomainUrl
()
{
return
minioUrl
.
substring
(
0
,
minioUrl
.
lastIndexOf
(
"/"
));
}
public
static
String
getBucketName
()
{
return
bucketName
;
}
...
...
src/main/java/com/zzsn/knowbase/util/SpringContextUtils.java
浏览文件 @
adc7c161
...
...
@@ -2,6 +2,7 @@ package com.zzsn.knowbase.util;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.zzsn.knowbase.constant.Constants
;
import
com.zzsn.knowbase.entity.KbAuthorizedUser
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -142,6 +143,6 @@ public class SpringContextUtils implements ApplicationContextAware {
return
null
;
}
return
JSON
Util
.
toBean
(
request
.
getAttribute
(
Constants
.
USER_INFO
).
toString
(),
KbAuthorizedUser
.
class
);
return
JSON
.
parseObject
(
request
.
getAttribute
(
Constants
.
USER_INFO
).
toString
(),
KbAuthorizedUser
.
class
);
}
}
src/main/java/com/zzsn/knowbase/util/tree/Node.java
0 → 100644
浏览文件 @
adc7c161
package
com
.
zzsn
.
knowbase
.
util
.
tree
;
import
lombok.Data
;
import
java.util.List
;
/**
* @author lkg
* @description: 树形节点
* @date 2021/12/15 14:11
*/
@Data
public
class
Node
{
private
String
id
;
private
String
name
;
private
String
pid
;
private
Integer
level
;
private
Integer
orderNo
;
private
Integer
hasChild
;
private
List
<?
extends
Node
>
children
;
}
src/main/java/com/zzsn/knowbase/util/tree/TreeUtil.java
0 → 100644
浏览文件 @
adc7c161
package
com
.
zzsn
.
knowbase
.
util
.
tree
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.ObjectUtils
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
* @author lkg
* @description: 构造树形结构工具类
* @date 2021/12/15 14:18
*/
public
class
TreeUtil
{
/**
* 单个树
*
* @param list 数据集合
* @param node 根节点数据
* @author lkg
* @date 2021/12/17 16:33
*/
public
static
<
T
extends
Node
>
void
tree
(
List
<
T
>
list
,
T
node
)
{
String
id
=
node
.
getId
();
List
<
T
>
tree
=
tree
(
list
,
id
);
node
.
setChildren
(
tree
);
}
/**
* 树 集合
*
* @param list 数据集合
* @param rootId 根节点id
* @author lkg
* @date 2021/12/17 16:33
*/
public
static
<
T
extends
Node
>
List
<
T
>
tree
(
List
<
T
>
list
,
String
rootId
)
{
Map
<
String
,
List
<
T
>>
treeMap
=
new
HashMap
<>();
for
(
T
item
:
list
)
{
String
parentId
=
item
.
getPid
();
List
<
T
>
children
;
if
(
treeMap
.
containsKey
(
parentId
))
{
children
=
treeMap
.
get
(
parentId
);
}
else
{
children
=
new
ArrayList
<>();
treeMap
.
put
(
parentId
,
children
);
}
children
.
add
(
item
);
}
return
getTreeByMap
(
treeMap
,
rootId
);
}
/**
* 根据当前节点获取所有上级节点
*
* @param list 数据集合
* @param currentNode 当前节点
* @param flag 是否包含自己本身(true-是;false-否)
* @author lkg
* @date 2022/12/27 11:32
*/
public
static
<
T
extends
Node
>
LinkedHashSet
<
T
>
getUpList
(
List
<
T
>
list
,
T
currentNode
,
boolean
flag
)
{
if
(
ObjectUtils
.
isNotEmpty
(
currentNode
))
{
LinkedHashSet
<
T
>
treeSet
=
new
LinkedHashSet
<>();
if
(
flag
)
{
treeSet
.
add
(
currentNode
);
}
String
pid
=
currentNode
.
getPid
();
List
<
T
>
parentNodes
=
list
.
stream
().
filter
(
node
->
node
.
getId
().
equals
(
pid
)).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isNotEmpty
(
parentNodes
))
{
T
parentNode
=
parentNodes
.
get
(
0
);
treeSet
.
add
(
parentNode
);
LinkedHashSet
<
T
>
upTreeSet
=
getUpList
(
list
,
parentNode
,
flag
);
if
(
CollectionUtils
.
isNotEmpty
(
upTreeSet
))
{
treeSet
.
addAll
(
upTreeSet
);
}
}
return
treeSet
;
}
return
null
;
}
/**
* 获取某节点下所有节点id得集合
*
* @param list: 数据集合
* @param rootId: 节点id
* @param flag: 是否包含自己本身(true-是;false-否)
* @author lkg
* @date 2023/2/23
*/
public
static
<
T
extends
Node
>
List
<
String
>
belowList
(
List
<
T
>
list
,
String
rootId
,
boolean
flag
)
{
List
<
String
>
nodes
=
new
ArrayList
<>();
if
(
flag
)
{
nodes
.
add
(
rootId
);
}
Map
<
String
,
List
<
T
>>
treeMap
=
new
HashMap
<>();
for
(
T
item
:
list
)
{
String
parentId
=
item
.
getPid
();
List
<
T
>
children
;
if
(
treeMap
.
containsKey
(
parentId
))
{
children
=
treeMap
.
get
(
parentId
);
}
else
{
children
=
new
ArrayList
<>();
treeMap
.
put
(
parentId
,
children
);
}
children
.
add
(
item
);
}
getBelowList
(
treeMap
,
rootId
,
nodes
);
return
nodes
;
}
private
static
<
T
extends
Node
>
List
<
T
>
getBelowList
(
Map
<
String
,
List
<
T
>>
treeMap
,
String
parentId
,
List
<
String
>
belowList
)
{
List
<
T
>
children
=
treeMap
.
get
(
parentId
);
if
(
children
==
null
)
{
return
null
;
}
for
(
T
item
:
children
)
{
belowList
.
add
(
item
.
getId
());
item
.
setChildren
(
getBelowList
(
treeMap
,
item
.
getId
(),
belowList
));
}
return
children
;
}
private
static
<
T
extends
Node
>
List
<
T
>
getTreeByMap
(
Map
<
String
,
List
<
T
>>
treeMap
,
String
parentId
)
{
List
<
T
>
children
=
treeMap
.
get
(
parentId
);
if
(
children
==
null
)
{
return
null
;
}
for
(
Node
item
:
children
)
{
item
.
setChildren
(
getTreeByMap
(
treeMap
,
item
.
getId
()));
}
return
children
;
}
}
src/main/java/com/zzsn/knowbase/vo/KnowledgeVO.java
浏览文件 @
adc7c161
...
...
@@ -36,6 +36,7 @@ public class KnowledgeVO {
private
String
subjectId
;
private
String
contentWithTag
;
private
String
contentAll
;
private
String
sourceAddress
;;
private
List
<
Content
>
contents
;
private
List
<
KnowFile
>
files
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论