Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
K
know-base
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
张京坤
know-base
Commits
5ad06d27
提交
5ad06d27
authored
1月 09, 2024
作者:
ChenShiQiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
commit temp
上级
862304bd
显示空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
752 行增加
和
22 行删除
+752
-22
RedisConfig.java
src/main/java/com/zzsn/knowbase/config/RedisConfig.java
+32
-0
KnowInterceptor.java
...com/zzsn/knowbase/config/interceptor/KnowInterceptor.java
+12
-12
KnowledgeController.java
...ava/com/zzsn/knowbase/controller/KnowledgeController.java
+17
-3
Knowledge.java
src/main/java/com/zzsn/knowbase/entity/Knowledge.java
+1
-0
IKnowledgeService.java
...ain/java/com/zzsn/knowbase/service/IKnowledgeService.java
+2
-0
KnowledgeServiceImpl.java
.../com/zzsn/knowbase/service/impl/KnowledgeServiceImpl.java
+87
-2
RedisUtil.java
src/main/java/com/zzsn/knowbase/util/RedisUtil.java
+595
-0
KnowledgeParam.java
src/main/java/com/zzsn/knowbase/vo/KnowledgeParam.java
+4
-2
application.yml
src/main/resources/application.yml
+2
-3
没有找到文件。
src/main/java/com/zzsn/knowbase/config/RedisConfig.java
0 → 100644
浏览文件 @
5ad06d27
package
com
.
zzsn
.
knowbase
.
config
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.data.redis.connection.RedisConnectionFactory
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer
;
import
org.springframework.data.redis.serializer.StringRedisSerializer
;
/**
* redisConfig
*
* @author ShiQiangChen
* @date 2024/1/8
*/
@Configuration
public
class
RedisConfig
{
@Bean
public
RedisTemplate
<
String
,
?>
getRedisTemplate
(
RedisConnectionFactory
factory
)
{
RedisTemplate
<
String
,
?>
template
=
new
RedisTemplate
<>();
template
.
setKeySerializer
(
new
StringRedisSerializer
());
template
.
setHashKeySerializer
(
new
StringRedisSerializer
());
template
.
setHashValueSerializer
(
new
GenericJackson2JsonRedisSerializer
());
template
.
setValueSerializer
(
new
GenericJackson2JsonRedisSerializer
());
template
.
setEnableTransactionSupport
(
true
);
template
.
setConnectionFactory
(
factory
);
return
template
;
}
}
\ No newline at end of file
src/main/java/com/zzsn/knowbase/config/interceptor/KnowInterceptor.java
浏览文件 @
5ad06d27
...
@@ -26,18 +26,18 @@ import java.util.Map;
...
@@ -26,18 +26,18 @@ import java.util.Map;
public
class
KnowInterceptor
implements
HandlerInterceptor
{
public
class
KnowInterceptor
implements
HandlerInterceptor
{
@Override
@Override
public
boolean
preHandle
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Object
handler
)
throws
Exception
{
public
boolean
preHandle
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Object
handler
)
throws
Exception
{
// 在请求处理之前进行调用(Controller方法调用之前)
//
// 在请求处理之前进行调用(Controller方法调用之前)
// 返回true才会继续执行后续的Interceptor和Controller
//
// 返回true才会继续执行后续的Interceptor和Controller
// 返回false则取消当前请求
//
// 返回false则取消当前请求
String
token
=
request
.
getHeader
(
"X-Access-Token"
);
//
String token = request.getHeader("X-Access-Token");
//
KbAuthorizedUserService
userService
=
SpringContextUtils
.
getBean
(
KbAuthorizedUserService
.
class
);
//
KbAuthorizedUserService userService = SpringContextUtils.getBean(KbAuthorizedUserService.class);
Result
<?>
result
=
userService
.
doCheck
(
token
);
//
Result<?> result = userService.doCheck(token);
/**第三方用户验证未通过,直接拦截请求并返回提示*/
//
/**第三方用户验证未通过,直接拦截请求并返回提示*/
if
(!
result
.
isSuccess
()){
//
if (!result.isSuccess()){
doRes
(
request
,
response
);
//
doRes(request,response);
return
false
;
//
return false;
}
//
}
return
true
;
return
true
;
}
}
...
...
src/main/java/com/zzsn/knowbase/controller/KnowledgeController.java
浏览文件 @
5ad06d27
...
@@ -35,8 +35,8 @@ public class KnowledgeController {
...
@@ -35,8 +35,8 @@ public class KnowledgeController {
@Autowired
@Autowired
private
IKnowledgeService
knowledgeService
;
private
IKnowledgeService
knowledgeService
;
@Value
(
"${python.
I
ntelligentQaUrl:}"
)
@Value
(
"${python.
i
ntelligentQaUrl:}"
)
private
String
I
ntelligentQaUrl
;
private
String
i
ntelligentQaUrl
;
/**
/**
* 分页列表查询
* 分页列表查询
...
@@ -51,6 +51,20 @@ public class KnowledgeController {
...
@@ -51,6 +51,20 @@ public class KnowledgeController {
return
Result
.
OK
(
pageList
);
return
Result
.
OK
(
pageList
);
}
}
/**
* 分页列表查询
*/
@GetMapping
(
value
=
"/listFromPython"
)
public
Result
<?>
listFromPython
(
KnowledgeParam
knowledgeParam
,
@RequestParam
(
name
=
"pageNo"
,
defaultValue
=
"1"
)
Integer
pageNo
,
@RequestParam
(
name
=
"pageSize"
,
defaultValue
=
"10"
)
Integer
pageSize
,
@RequestParam
(
name
=
"column"
,
defaultValue
=
"common"
)
String
column
,
@RequestParam
(
name
=
"order"
,
defaultValue
=
"desc"
)
String
order
)
{
IPage
<
KnowledgeVO
>
pageList
=
knowledgeService
.
listFromPython
(
knowledgeParam
,
pageNo
,
pageSize
,
column
,
order
);
return
Result
.
OK
(
pageList
);
}
/**
/**
* 添加
* 添加
*
*
...
@@ -108,7 +122,7 @@ public class KnowledgeController {
...
@@ -108,7 +122,7 @@ public class KnowledgeController {
JSONObject
params
=
new
JSONObject
();
JSONObject
params
=
new
JSONObject
();
params
.
put
(
"question"
,
intelligentQaParam
.
getQuestion
());
params
.
put
(
"question"
,
intelligentQaParam
.
getQuestion
());
params
.
put
(
"knowledge_base_id"
,
Arrays
.
asList
(
intelligentQaParam
.
getKnowledgeProjectIds
().
split
(
","
)));
params
.
put
(
"knowledge_base_id"
,
Arrays
.
asList
(
intelligentQaParam
.
getKnowledgeProjectIds
().
split
(
","
)));
String
result
=
HttpUtil
.
doPost
(
I
ntelligentQaUrl
,
params
,
120000
);
String
result
=
HttpUtil
.
doPost
(
i
ntelligentQaUrl
,
params
,
120000
);
if
(!
result
.
isEmpty
()){
if
(!
result
.
isEmpty
()){
JSONObject
jsonObject
=
JSON
.
parseObject
(
result
);
JSONObject
jsonObject
=
JSON
.
parseObject
(
result
);
return
Result
.
OK
(
jsonObject
.
get
(
"result"
));
return
Result
.
OK
(
jsonObject
.
get
(
"result"
));
...
...
src/main/java/com/zzsn/knowbase/entity/Knowledge.java
浏览文件 @
5ad06d27
...
@@ -78,6 +78,7 @@ public class Knowledge implements Serializable {
...
@@ -78,6 +78,7 @@ public class Knowledge implements Serializable {
* 发布时间
* 发布时间
*/
*/
private
String
publishDate
;
private
String
publishDate
;
private
String
verifyTime
;
/**
/**
* 审核状态
* 审核状态
*/
*/
...
...
src/main/java/com/zzsn/knowbase/service/IKnowledgeService.java
浏览文件 @
5ad06d27
...
@@ -41,4 +41,6 @@ public interface IKnowledgeService {
...
@@ -41,4 +41,6 @@ public interface IKnowledgeService {
* @return
* @return
*/
*/
IPage
<
KnowledgeVO
>
queryPageList
(
KnowledgeParam
knowledgeParam
,
Integer
pageNo
,
Integer
pageSize
,
String
column
,
String
order
);
IPage
<
KnowledgeVO
>
queryPageList
(
KnowledgeParam
knowledgeParam
,
Integer
pageNo
,
Integer
pageSize
,
String
column
,
String
order
);
IPage
<
KnowledgeVO
>
listFromPython
(
KnowledgeParam
knowledgeParam
,
Integer
pageNo
,
Integer
pageSize
,
String
column
,
String
order
);
}
}
src/main/java/com/zzsn/knowbase/service/impl/KnowledgeServiceImpl.java
浏览文件 @
5ad06d27
package
com
.
zzsn
.
knowbase
.
service
.
impl
;
package
com
.
zzsn
.
knowbase
.
service
.
impl
;
import
cn.hutool.json.JSONUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.zzsn.knowbase.constant.Constants
;
import
com.zzsn.knowbase.constant.Constants
;
...
@@ -28,7 +30,9 @@ import org.elasticsearch.search.builder.SearchSourceBuilder;
...
@@ -28,7 +30,9 @@ import org.elasticsearch.search.builder.SearchSourceBuilder;
import
org.elasticsearch.search.sort.SortOrder
;
import
org.elasticsearch.search.sort.SortOrder
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
springfox.documentation.spring.web.json.Json
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
java.io.IOException
;
import
java.io.IOException
;
...
@@ -38,6 +42,8 @@ import java.util.Date;
...
@@ -38,6 +42,8 @@ import java.util.Date;
import
java.util.List
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
static
org
.
apache
.
commons
.
lang3
.
StringUtils
.
split
;
/**
/**
* @Description: 知识
* @Description: 知识
* @Author: chenshiqiang
* @Author: chenshiqiang
...
@@ -53,6 +59,11 @@ class KnowledgeServiceImpl implements IKnowledgeService {
...
@@ -53,6 +59,11 @@ class KnowledgeServiceImpl implements IKnowledgeService {
private
CodeGenerateUtil
codeGenerateUtil
;
private
CodeGenerateUtil
codeGenerateUtil
;
@Autowired
@Autowired
private
ProduceInfo
produceInfo
;
private
ProduceInfo
produceInfo
;
@Value
(
"${python.searchUrl:}"
)
private
String
searchUrl
;
@Autowired
private
RedisUtil
redisUtil
;
@Override
@Override
public
void
addKnowledge
(
HttpServletRequest
httpServletRequest
,
Knowledge
knowledge
)
{
public
void
addKnowledge
(
HttpServletRequest
httpServletRequest
,
Knowledge
knowledge
)
{
...
@@ -186,7 +197,7 @@ class KnowledgeServiceImpl implements IKnowledgeService {
...
@@ -186,7 +197,7 @@ class KnowledgeServiceImpl implements IKnowledgeService {
}
else
{
}
else
{
multiMatchQueryBuilder
.
field
(
"title"
,
60
);
multiMatchQueryBuilder
.
field
(
"title"
,
60
);
BoolQueryBuilder
nestedBoolQueryBuilder
=
QueryBuilders
.
boolQuery
();
BoolQueryBuilder
nestedBoolQueryBuilder
=
QueryBuilders
.
boolQuery
();
multiMatchQueryBuilder
.
field
(
"contents.content"
,
20
);
multiMatchQueryBuilder
.
field
(
"contents.content"
,
20
);
nestedBoolQueryBuilder
.
must
(
multiMatchQueryBuilder
);
nestedBoolQueryBuilder
.
must
(
multiMatchQueryBuilder
);
NestedQueryBuilder
nestedQueryBuilder
=
QueryBuilders
.
nestedQuery
(
"contents"
,
nestedBoolQueryBuilder
,
ScoreMode
.
None
);
NestedQueryBuilder
nestedQueryBuilder
=
QueryBuilders
.
nestedQuery
(
"contents"
,
nestedBoolQueryBuilder
,
ScoreMode
.
None
);
boolQuery
.
must
(
nestedQueryBuilder
);
boolQuery
.
must
(
nestedQueryBuilder
);
...
@@ -203,7 +214,7 @@ class KnowledgeServiceImpl implements IKnowledgeService {
...
@@ -203,7 +214,7 @@ class KnowledgeServiceImpl implements IKnowledgeService {
}
else
{
}
else
{
multiMatchQueryBuilder
.
field
(
"title"
,
3
);
multiMatchQueryBuilder
.
field
(
"title"
,
3
);
BoolQueryBuilder
nestedBoolQueryBuilder
=
QueryBuilders
.
boolQuery
();
BoolQueryBuilder
nestedBoolQueryBuilder
=
QueryBuilders
.
boolQuery
();
multiMatchQueryBuilder
.
field
(
"contents.content"
,
1
);
multiMatchQueryBuilder
.
field
(
"contents.content"
,
1
);
nestedBoolQueryBuilder
.
must
(
multiMatchQueryBuilder
);
nestedBoolQueryBuilder
.
must
(
multiMatchQueryBuilder
);
NestedQueryBuilder
nestedQueryBuilder
=
QueryBuilders
.
nestedQuery
(
"contents"
,
nestedBoolQueryBuilder
,
ScoreMode
.
None
);
NestedQueryBuilder
nestedQueryBuilder
=
QueryBuilders
.
nestedQuery
(
"contents"
,
nestedBoolQueryBuilder
,
ScoreMode
.
None
);
boolQuery
.
must
(
nestedQueryBuilder
);
boolQuery
.
must
(
nestedQueryBuilder
);
...
@@ -257,4 +268,78 @@ class KnowledgeServiceImpl implements IKnowledgeService {
...
@@ -257,4 +268,78 @@ class KnowledgeServiceImpl implements IKnowledgeService {
return
pageData
;
return
pageData
;
}
}
@Override
public
IPage
<
KnowledgeVO
>
listFromPython
(
KnowledgeParam
knowledgeParam
,
Integer
pageNo
,
Integer
pageSize
,
String
column
,
String
order
)
{
Object
data
=
redisUtil
.
get
(
genKey
(
knowledgeParam
));
// if (org.springframework.util.StringUtils.isEmpty(data)) {
if
(
true
)
{
JSONObject
params
=
new
JSONObject
();
params
.
put
(
"type"
,
null
==
knowledgeParam
.
getTypes
()
?
null
:
Arrays
.
asList
(
knowledgeParam
.
getTypes
().
split
(
","
)));
params
.
put
(
"startTime"
,
knowledgeParam
.
getStartTime
());
params
.
put
(
"endTime"
,
knowledgeParam
.
getEndTime
());
params
.
put
(
"author"
,
knowledgeParam
.
getAuthor
());
params
.
put
(
"origin"
,
knowledgeParam
.
getOrigin
());
params
.
put
(
"verifierName"
,
knowledgeParam
.
getVerifierName
());
params
.
put
(
"verifyStatus"
,
knowledgeParam
.
getVerifyStatus
());
params
.
put
(
"verifyStartTime"
,
knowledgeParam
.
getVerifyStartTime
());
params
.
put
(
"knowledge_base_id"
,
knowledgeParam
.
getKnowledgeProjectId
());
params
.
put
(
"verifyEndTime"
,
knowledgeParam
.
getVerifyEndTime
());
params
.
put
(
"score_threshold"
,
600
);
//score
params
.
put
(
"vector_search_top_k"
,
100
);
//number
if
(
knowledgeParam
.
getSearchScope
().
equals
(
2
))
{
params
.
put
(
"question"
,
knowledgeParam
.
getSearchInfo
());
}
String
result
=
null
;
try
{
result
=
HttpUtil
.
doPost
(
searchUrl
,
params
,
120000
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
if
(
result
==
null
||!
result
.
contains
(
"results"
))
{
return
null
;
}
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
result
);
data
=
jsonObject
.
get
(
"results"
);
redisUtil
.
set
(
genKey
(
knowledgeParam
),
data
,
100000000
);
}
JSONArray
jsonArray
=
JSONObject
.
parseArray
(
data
.
toString
());
List
<
Knowledge
>
knowledgeList
=
new
ArrayList
<>(
jsonArray
.
size
());
for
(
Object
o
:
jsonArray
)
{
JSONObject
one
=
JSONObject
.
parseObject
(
o
.
toString
());
knowledgeList
.
add
(
Knowledge
.
builder
()
.
id
((
String
)
one
.
get
(
"id"
))
.
build
());
}
return
null
;
}
private
String
genKey
(
KnowledgeParam
knowledgeParam
)
{
String
type
=
(
knowledgeParam
.
getTypes
()
==
null
?
""
:
knowledgeParam
.
getTypes
());
String
knowledgeProjectId
=
(
knowledgeParam
.
getKnowledgeProjectId
()
==
null
?
""
:
knowledgeParam
.
getKnowledgeProjectId
());
String
startTime
=
(
knowledgeParam
.
getStartTime
()
==
null
?
""
:
knowledgeParam
.
getStartTime
());
String
endTime
=
(
knowledgeParam
.
getEndTime
()
==
null
?
""
:
knowledgeParam
.
getEndTime
());
String
author
=
(
knowledgeParam
.
getAuthor
()
==
null
?
""
:
knowledgeParam
.
getAuthor
());
String
origin
=
(
knowledgeParam
.
getOrigin
()
==
null
?
""
:
knowledgeParam
.
getOrigin
());
String
verifierName
=
(
knowledgeParam
.
getVerifierName
()
==
null
?
""
:
knowledgeParam
.
getVerifierName
());
String
verifyStatus
=
(
knowledgeParam
.
getVerifyStatus
()
==
null
?
""
:
String
.
valueOf
(
knowledgeParam
.
getVerifyStatus
()));
String
verifyStartTime
=
(
knowledgeParam
.
getVerifyStartTime
()
==
null
?
""
:
knowledgeParam
.
getVerifyStartTime
());
String
verifyEndTime
=
(
knowledgeParam
.
getVerifyEndTime
()
==
null
?
""
:
knowledgeParam
.
getVerifyEndTime
());
String
searchInfo
=
(
knowledgeParam
.
getSearchInfo
()
==
null
?
""
:
knowledgeParam
.
getSearchInfo
());
return
type
+
"#"
+
knowledgeProjectId
+
"#"
+
startTime
+
"#"
+
endTime
+
"#"
+
author
+
"#"
+
origin
+
"#"
+
verifierName
+
"#"
+
verifyStatus
+
"#"
+
verifyStartTime
+
"#"
+
verifyEndTime
+
"#"
+
searchInfo
+
"#"
;
}
}
}
src/main/java/com/zzsn/knowbase/util/RedisUtil.java
0 → 100644
浏览文件 @
5ad06d27
package
com
.
zzsn
.
knowbase
.
util
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.Cursor
;
import
org.springframework.data.redis.core.RedisCallback
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.data.redis.core.ScanOptions
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.concurrent.TimeUnit
;
/**
* redis 工具类
*/
@Component
public
class
RedisUtil
{
@Autowired
private
RedisTemplate
<
String
,
Object
>
redisTemplate
;
/**
* 指定缓存失效时间
*
* @param key 键
* @param time 时间(秒)
*/
public
boolean
expire
(
String
key
,
long
time
)
{
try
{
if
(
time
>
0
)
{
redisTemplate
.
expire
(
key
,
time
,
TimeUnit
.
SECONDS
);
}
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 根据key 获取过期时间
*
* @param key 键 不能为null
* @return 时间(秒) 返回0代表为永久有效
*/
public
long
getExpire
(
String
key
)
{
return
redisTemplate
.
getExpire
(
key
,
TimeUnit
.
SECONDS
);
}
/**
* 判断key是否存在
*
* @param key 键
* @return true 存在 false不存在
*/
public
boolean
hasKey
(
String
key
)
{
try
{
return
redisTemplate
.
hasKey
(
key
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 删除缓存
*
* @param key 可以传一个值 或多个
*/
@SuppressWarnings
(
"unchecked"
)
public
void
del
(
String
...
key
)
{
if
(
key
!=
null
&&
key
.
length
>
0
)
{
if
(
key
.
length
==
1
)
{
redisTemplate
.
delete
(
key
[
0
]);
}
else
{
redisTemplate
.
delete
(
CollectionUtils
.
arrayToList
(
key
));
}
}
}
// ============================String=============================
/**
* 普通缓存获取
*
* @param key 键
* @return 值
*/
public
Object
get
(
String
key
)
{
return
key
==
null
?
null
:
redisTemplate
.
opsForValue
().
get
(
key
);
}
/**
* 普通缓存放入
*
* @param key 键
* @param value 值
* @return true成功 false失败
*/
public
boolean
set
(
String
key
,
Object
value
)
{
try
{
redisTemplate
.
opsForValue
().
set
(
key
,
value
);
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 普通缓存放入并设置时间
*
* @param key 键
* @param value 值
* @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期
* @return true成功 false 失败
*/
public
boolean
set
(
String
key
,
Object
value
,
long
time
)
{
try
{
if
(
time
>
0
)
{
redisTemplate
.
opsForValue
().
set
(
key
,
value
,
time
,
TimeUnit
.
SECONDS
);
}
else
{
set
(
key
,
value
);
}
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 递增
*
* @param key 键
* @param delta 要增加几(大于0)
*/
public
long
incr
(
String
key
,
long
delta
)
{
if
(
delta
<
0
)
{
throw
new
RuntimeException
(
"递增因子必须大于0"
);
}
return
redisTemplate
.
opsForValue
().
increment
(
key
,
delta
);
}
/**
* 递减
*
* @param key 键
* @param delta 要减少几(小于0)
*/
public
long
decr
(
String
key
,
long
delta
)
{
if
(
delta
<
0
)
{
throw
new
RuntimeException
(
"递减因子必须大于0"
);
}
return
redisTemplate
.
opsForValue
().
increment
(
key
,
-
delta
);
}
// ================================Map=================================
/**
* HashGet
*
* @param key 键 不能为null
* @param item 项 不能为null
* @return 值
*/
public
Object
hget
(
String
key
,
String
item
)
{
return
redisTemplate
.
opsForHash
().
get
(
key
,
item
);
}
/**
* 获取hashKey对应的所有键值
*
* @param key 键
* @return 对应的多个键值
*/
public
Map
<
Object
,
Object
>
hmget
(
String
key
)
{
return
redisTemplate
.
opsForHash
().
entries
(
key
);
}
/**
* HashSet
*
* @param key 键
* @param map 对应多个键值
* @return true 成功 false 失败
*/
public
boolean
hmset
(
String
key
,
Map
<
String
,
Object
>
map
)
{
try
{
redisTemplate
.
opsForHash
().
putAll
(
key
,
map
);
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* HashSet 并设置时间
*
* @param key 键
* @param map 对应多个键值
* @param time 时间(秒)
* @return true成功 false失败
*/
public
boolean
hmset
(
String
key
,
Map
<
String
,
Object
>
map
,
long
time
)
{
try
{
redisTemplate
.
opsForHash
().
putAll
(
key
,
map
);
if
(
time
>
0
)
{
expire
(
key
,
time
);
}
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 向一张hash表中放入数据,如果不存在将创建
*
* @param key 键
* @param item 项
* @param value 值
* @return true 成功 false失败
*/
public
boolean
hset
(
String
key
,
String
item
,
Object
value
)
{
try
{
redisTemplate
.
opsForHash
().
put
(
key
,
item
,
value
);
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 向一张hash表中放入数据,如果不存在将创建
*
* @param key 键
* @param item 项
* @param value 值
* @param time 时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间
* @return true 成功 false失败
*/
public
boolean
hset
(
String
key
,
String
item
,
Object
value
,
long
time
)
{
try
{
redisTemplate
.
opsForHash
().
put
(
key
,
item
,
value
);
if
(
time
>
0
)
{
expire
(
key
,
time
);
}
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 删除hash表中的值
*
* @param key 键 不能为null
* @param item 项 可以使多个 不能为null
*/
public
void
hdel
(
String
key
,
Object
...
item
)
{
redisTemplate
.
opsForHash
().
delete
(
key
,
item
);
}
/**
* 判断hash表中是否有该项的值
*
* @param key 键 不能为null
* @param item 项 不能为null
* @return true 存在 false不存在
*/
public
boolean
hHasKey
(
String
key
,
String
item
)
{
return
redisTemplate
.
opsForHash
().
hasKey
(
key
,
item
);
}
/**
* hash递增 如果不存在,就会创建一个 并把新增后的值返回
*
* @param key 键
* @param item 项
* @param by 要增加几(大于0)
*/
public
void
hincr
(
String
key
,
String
item
,
double
by
)
{
redisTemplate
.
opsForHash
().
increment
(
key
,
item
,
by
);
}
/**
* hash递减
*
* @param key 键
* @param item 项
* @param by 要减少记(小于0)
*/
public
double
hdecr
(
String
key
,
String
item
,
double
by
)
{
return
redisTemplate
.
opsForHash
().
increment
(
key
,
item
,
-
by
);
}
// ============================set=============================
/**
* 根据key获取Set中的所有值
*
* @param key 键
*/
public
Set
<
Object
>
sGet
(
String
key
)
{
try
{
return
redisTemplate
.
opsForSet
().
members
(
key
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
/**
* 根据value从一个set中查询,是否存在
*
* @param key 键
* @param value 值
* @return true 存在 false不存在
*/
public
boolean
sHasKey
(
String
key
,
Object
value
)
{
try
{
return
redisTemplate
.
opsForSet
().
isMember
(
key
,
value
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 将数据放入set缓存
*
* @param key 键
* @param values 值 可以是多个
* @return 成功个数
*/
public
long
sSet
(
String
key
,
Object
...
values
)
{
try
{
return
redisTemplate
.
opsForSet
().
add
(
key
,
values
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
0
;
}
}
/**
* 将set数据放入缓存
*
* @param key 键
* @param time 时间(秒)
* @param values 值 可以是多个
* @return 成功个数
*/
public
long
sSetAndTime
(
String
key
,
long
time
,
Object
...
values
)
{
try
{
long
count
=
redisTemplate
.
opsForSet
().
add
(
key
,
values
);
if
(
time
>
0
)
{
expire
(
key
,
time
);
}
return
count
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
0
;
}
}
/**
* 获取set缓存的长度
*
* @param key 键
*/
public
long
sGetSetSize
(
String
key
)
{
try
{
return
redisTemplate
.
opsForSet
().
size
(
key
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
0
;
}
}
/**
* 移除值为value的
*
* @param key 键
* @param values 值 可以是多个
* @return 移除的个数
*/
public
long
setRemove
(
String
key
,
Object
...
values
)
{
try
{
return
redisTemplate
.
opsForSet
().
remove
(
key
,
values
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
0
;
}
}
// ===============================list=================================
/**
* 获取list缓存的内容
*
* @param key 键
* @param start 开始
* @param end 结束 0 到 -1代表所有值
*/
public
List
<
Object
>
lGet
(
String
key
,
long
start
,
long
end
)
{
try
{
return
redisTemplate
.
opsForList
().
range
(
key
,
start
,
end
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
/**
* 获取list缓存的长度
*
* @param key 键
*/
public
long
lGetListSize
(
String
key
)
{
try
{
return
redisTemplate
.
opsForList
().
size
(
key
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
0
;
}
}
/**
* 通过索引 获取list中的值
*
* @param key 键
* @param index 索引 index>=0时, 0 表头,1 第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推
*/
public
Object
lGetIndex
(
String
key
,
long
index
)
{
try
{
return
redisTemplate
.
opsForList
().
index
(
key
,
index
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
/**
* 将list放入缓存
*
* @param key 键
* @param value 值
*/
public
boolean
lSet
(
String
key
,
Object
value
)
{
try
{
redisTemplate
.
opsForList
().
rightPush
(
key
,
value
);
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 将list放入缓存
*
* @param key 键
* @param value 值
* @param time 时间(秒)
*/
public
boolean
lSet
(
String
key
,
Object
value
,
long
time
)
{
try
{
redisTemplate
.
opsForList
().
rightPush
(
key
,
value
);
if
(
time
>
0
)
{
expire
(
key
,
time
);
}
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 将list放入缓存
*
* @param key 键
* @param value 值
*/
public
boolean
lSet
(
String
key
,
List
<
Object
>
value
)
{
try
{
redisTemplate
.
opsForList
().
rightPushAll
(
key
,
value
);
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 将list放入缓存
*
* @param key 键
* @param value 值
* @param time 时间(秒)
*/
public
boolean
lSet
(
String
key
,
List
<
Object
>
value
,
long
time
)
{
try
{
redisTemplate
.
opsForList
().
rightPushAll
(
key
,
value
);
if
(
time
>
0
)
{
expire
(
key
,
time
);
}
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 根据索引修改list中的某条数据
*
* @param key 键
* @param index 索引
* @param value 值
*/
public
boolean
lUpdateIndex
(
String
key
,
long
index
,
Object
value
)
{
try
{
redisTemplate
.
opsForList
().
set
(
key
,
index
,
value
);
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 移除N个值为value
*
* @param key 键
* @param count 移除多少个
* @param value 值
* @return 移除的个数
*/
public
long
lRemove
(
String
key
,
long
count
,
Object
value
)
{
try
{
return
redisTemplate
.
opsForList
().
remove
(
key
,
count
,
value
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
0
;
}
}
/**
* 获取指定前缀的一系列key
* 使用scan命令代替keys, Redis是单线程处理,keys命令在KEY数量较多时,
* 操作效率极低【时间复杂度为O(N)】,该命令一旦执行会严重阻塞线上其它命令的正常请求
* @param keyPrefix key统一的前缀
*/
private
Set
<
String
>
keys
(
String
keyPrefix
)
{
String
realKey
=
keyPrefix
+
"*"
;
try
{
return
redisTemplate
.
execute
((
RedisCallback
<
Set
<
String
>>)
connection
->
{
Set
<
String
>
binaryKeys
=
new
HashSet
<>();
Cursor
<
byte
[]>
cursor
=
connection
.
scan
(
new
ScanOptions
.
ScanOptionsBuilder
().
match
(
realKey
).
count
(
Integer
.
MAX_VALUE
).
build
());
while
(
cursor
.
hasNext
())
{
binaryKeys
.
add
(
new
String
(
cursor
.
next
()));
}
return
binaryKeys
;
});
}
catch
(
Throwable
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
/**
* 删除指定前缀的一系列key
* @param keyPrefix key统一的前缀
*/
public
void
removeAll
(
String
keyPrefix
)
{
try
{
Set
<
String
>
keys
=
keys
(
keyPrefix
);
if
(!
CollectionUtils
.
isEmpty
(
keys
))
{
redisTemplate
.
delete
(
keys
);
}
}
catch
(
Throwable
e
)
{
e
.
printStackTrace
();
}
}
}
src/main/java/com/zzsn/knowbase/vo/KnowledgeParam.java
浏览文件 @
5ad06d27
...
@@ -24,7 +24,7 @@ public class KnowledgeParam {
...
@@ -24,7 +24,7 @@ public class KnowledgeParam {
/**
/**
* 作者
* 作者
*/
*/
private
Integer
author
;
private
String
author
;
/**
/**
* 发布时间
* 发布时间
*/
*/
...
@@ -48,12 +48,14 @@ public class KnowledgeParam {
...
@@ -48,12 +48,14 @@ public class KnowledgeParam {
/**
/**
* 类型
* 类型
*/
*/
private
String
type
;
private
String
type
s
;
private
String
startTime
;
private
String
startTime
;
private
String
endTime
;
private
String
endTime
;
private
String
searchInfo
;
private
String
searchInfo
;
private
Integer
searchScope
;
private
Integer
searchScope
;
private
String
searchAccuracy
;
private
String
searchAccuracy
;
private
String
verifyStartTime
;
private
String
verifyEndTime
;
}
}
src/main/resources/application.yml
浏览文件 @
5ad06d27
...
@@ -18,8 +18,6 @@ spring:
...
@@ -18,8 +18,6 @@ spring:
brokers
:
114.115.159.144:9092
brokers
:
114.115.159.144:9092
zkNodes
:
114.115.159.144:2181
zkNodes
:
114.115.159.144:2181
requiredAcks
:
1
requiredAcks
:
1
redis
:
redis
:
database
:
0
database
:
0
host
:
114.115.236.206
host
:
114.115.236.206
...
@@ -39,7 +37,8 @@ mybatis-plus:
...
@@ -39,7 +37,8 @@ mybatis-plus:
log-impl
:
org.apache.ibatis.logging.stdout.StdOutImpl
log-impl
:
org.apache.ibatis.logging.stdout.StdOutImpl
map-underscore-to-camel-case
:
true
map-underscore-to-camel-case
:
true
python
:
python
:
IntelligentQaUrl
:
http://116.63.179.212:7862/platform/chat
intelligentQaUrl
:
http://116.63.179.212:7862/platform/chat
searchUrl
:
http://114.115.172.99:10013/platform/search
know
:
know
:
thirdpartyurl
:
thirdpartyurl
:
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论