Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
brandkbs2
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
shenjunjie
brandkbs2
Commits
bfbe1fe4
Commit
bfbe1fe4
authored
Jul 01, 2022
by
shenjunjie
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature' into 'dev'
mongo-Date 调整至Long See merge request
!1
parents
8508a72b
06a55dc7
Show whitespace changes
Inline
Side-by-side
Showing
48 changed files
with
1124 additions
and
162 deletions
+1124
-162
pom.xml
+12
-0
src/main/java/com/zhiwei/brandkbs2/common/ControlCenter.java
+1
-1
src/main/java/com/zhiwei/brandkbs2/common/GenericAttribute.java
+14
-2
src/main/java/com/zhiwei/brandkbs2/controller/AppArticleController.java
+18
-5
src/main/java/com/zhiwei/brandkbs2/easyexcel/dto/UploadEventDataDTO.java
+3
-3
src/main/java/com/zhiwei/brandkbs2/es/EsClientDao.java
+122
-34
src/main/java/com/zhiwei/brandkbs2/es/EsQueryTools.java
+162
-0
src/main/java/com/zhiwei/brandkbs2/es/EsRetryTools.java
+34
-0
src/main/java/com/zhiwei/brandkbs2/exception/CustomException.java
+11
-4
src/main/java/com/zhiwei/brandkbs2/exception/ExceptionCast.java
+5
-1
src/main/java/com/zhiwei/brandkbs2/exception/ExceptionCatch.java
+9
-11
src/main/java/com/zhiwei/brandkbs2/pojo/Behavior.java
+1
-3
src/main/java/com/zhiwei/brandkbs2/pojo/Channel.java
+9
-9
src/main/java/com/zhiwei/brandkbs2/pojo/ChannelIndex.java
+4
-5
src/main/java/com/zhiwei/brandkbs2/pojo/Event.java
+5
-6
src/main/java/com/zhiwei/brandkbs2/pojo/EventData.java
+4
-6
src/main/java/com/zhiwei/brandkbs2/pojo/HighWord.java
+2
-3
src/main/java/com/zhiwei/brandkbs2/pojo/MarkFlowEntity.java
+124
-0
src/main/java/com/zhiwei/brandkbs2/pojo/Project.java
+4
-4
src/main/java/com/zhiwei/brandkbs2/pojo/Report.java
+3
-4
src/main/java/com/zhiwei/brandkbs2/pojo/ReportSettings.java
+1
-2
src/main/java/com/zhiwei/brandkbs2/pojo/User.java
+2
-2
src/main/java/com/zhiwei/brandkbs2/pojo/UserRole.java
+2
-2
src/main/java/com/zhiwei/brandkbs2/pojo/dto/EventDataDTO.java
+1
-3
src/main/java/com/zhiwei/brandkbs2/pojo/dto/MarkSearchDTO.java
+106
-0
src/main/java/com/zhiwei/brandkbs2/pojo/dto/YqEventDTO.java
+2
-4
src/main/java/com/zhiwei/brandkbs2/pojo/vo/PageVO.java
+11
-0
src/main/java/com/zhiwei/brandkbs2/pojo/vo/ProjectVO.java
+3
-3
src/main/java/com/zhiwei/brandkbs2/service/IMarkDataService.java
+21
-0
src/main/java/com/zhiwei/brandkbs2/service/ITaskService.java
+1
-1
src/main/java/com/zhiwei/brandkbs2/service/impl/BehaviorServiceImpl.java
+2
-2
src/main/java/com/zhiwei/brandkbs2/service/impl/ChannelServiceImpl.java
+1
-1
src/main/java/com/zhiwei/brandkbs2/service/impl/EventDataServiceImpl.java
+5
-6
src/main/java/com/zhiwei/brandkbs2/service/impl/EventServiceImpl.java
+7
-8
src/main/java/com/zhiwei/brandkbs2/service/impl/MarkDataServiceImpl.java
+161
-0
src/main/java/com/zhiwei/brandkbs2/service/impl/ProjectServiceImpl.java
+1
-1
src/main/java/com/zhiwei/brandkbs2/service/impl/TaskServiceImpl.java
+1
-1
src/main/java/com/zhiwei/brandkbs2/service/impl/UserServiceImpl.java
+2
-4
src/main/java/com/zhiwei/brandkbs2/util/AggreeUtil.java
+44
-0
src/main/java/com/zhiwei/brandkbs2/util/FlowEntityUtil.java
+85
-0
src/main/java/com/zhiwei/brandkbs2/util/Tools.java
+44
-0
src/main/resources/application-dev.properties
+7
-7
src/main/resources/application-local.properties
+1
-1
src/main/resources/application-prod.properties
+6
-6
src/main/resources/application.properties
+2
-0
src/main/resources/log4j2.xml
+51
-0
src/main/resources/pushlog.properties
+6
-6
src/test/java/com/zhiwei/brandkbs2/TestRunWith.java
+1
-1
No files found.
pom.xml
View file @
bfbe1fe4
...
...
@@ -97,6 +97,11 @@
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-quartz
</artifactId>
</dependency>
<!-- retry -->
<dependency>
<groupId>
org.springframework.retry
</groupId>
<artifactId>
spring-retry
</artifactId>
</dependency>
<!-- swagger2 -->
<dependency>
<groupId>
io.springfox
</groupId>
...
...
@@ -221,6 +226,13 @@
<version>
1.7.5
</version>
</dependency>
<!-- nlp 聚合工具包 -->
<dependency>
<groupId>
com.zhiwei.nlp
</groupId>
<artifactId>
nlp-aggree
</artifactId>
<version>
0.0.5-SNAPSHOT
</version>
</dependency>
</dependencies>
<build>
<plugins>
...
...
src/main/java/com/zhiwei/brandkbs2/common/ControlCenter.java
View file @
bfbe1fe4
package
com
.
zhiwei
.
brandkbs2
.
common
;
import
com.zhiwei.brandkbs2.
es
.ITaskService
;
import
com.zhiwei.brandkbs2.
service
.ITaskService
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.springframework.scheduling.annotation.Async
;
...
...
src/main/java/com/zhiwei/brandkbs2/common/GenericAttribute.java
View file @
bfbe1fe4
...
...
@@ -14,8 +14,20 @@ public class GenericAttribute {
* es index
*/
public
static
final
String
ES_INDEX_PRE
=
"brandkbs2"
;
public
static
final
String
ES_INDEX_TEST
=
"brandkbs_test"
;
public
static
final
String
ES_INDEX_TEST
=
"brandkbs2_test"
;
/**
* es ind_title
**/
public
static
final
String
ES_IND_TITLE
=
"ind_title"
;
/**
* es ind_full_text
**/
public
static
final
String
ES_IND_FULL_TEXT
=
"ind_full_text"
;
/**
* es gid
**/
public
static
final
String
ES_GID
=
"gid"
;
public
static
final
String
ES_CNAME
=
"cname"
;
/** es c2 **/
public
static
final
String
ES_C2
=
"c2"
;
/** es c5 **/
...
...
src/main/java/com/zhiwei/brandkbs2/controller/AppArticleController.java
View file @
bfbe1fe4
...
...
@@ -2,24 +2,37 @@ package com.zhiwei.brandkbs2.controller;
import
com.zhiwei.brandkbs2.auth.Auth
;
import
com.zhiwei.brandkbs2.enmus.RoleEnum
;
import
com.zhiwei.brandkbs2.model.ResponseResult
;
import
com.zhiwei.brandkbs2.pojo.dto.MarkSearchDTO
;
import
com.zhiwei.brandkbs2.service.IMarkDataService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.annotation.Resource
;
/**
* @ClassName
:
AppArticleController
* @ClassName AppArticleController
* @Description 提供前台稿件相关信息展示
* @author
:
sjj
* @date
:
2022-06-20 09:27
* @author sjj
* @date 2022-06-20 09:27
*/
@RestController
@RequestMapping
(
"/app/
articles
"
)
@RequestMapping
(
"/app/
yuqing
"
)
@Api
(
tags
=
"前台稿件展示接口"
,
description
=
"提供前台稿件相关信息展示"
)
@Auth
(
role
=
RoleEnum
.
CUSTOMER
)
public
class
AppArticleController
extends
BaseController
{
@Resource
(
name
=
"markDataServiceImpl"
)
IMarkDataService
markDataService
;
@ApiOperation
(
"舆情标注数据列表"
)
@GetMapping
(
"/list/mark"
)
public
ResponseResult
getYuqingMarkList
(
MarkSearchDTO
markSearchDTO
)
{
return
ResponseResult
.
success
(
markDataService
.
getYuqingMarkList
(
markSearchDTO
));
}
...
...
src/main/java/com/zhiwei/brandkbs2/easyexcel/dto/UploadEventDataDTO.java
View file @
bfbe1fe4
...
...
@@ -73,12 +73,12 @@ public class UploadEventDataDTO {
eventData
.
setRealSource
(
this
.
getRealSource
());
eventData
.
setSource
(
this
.
getSource
());
eventData
.
setUrl
(
this
.
getUrl
());
eventData
.
setTime
(
this
.
getTime
());
eventData
.
setTime
(
this
.
getTime
()
.
getTime
()
);
//如果标题不为空,取前64个字符作为标题,如果为空,取内容的前32位作为标题
eventData
.
setTitle
(
Strings
.
isNotBlank
(
title
)
?
(
title
.
length
()
>
64
?
title
.
substring
(
0
,
64
)
:
title
)
:
content
.
length
()
>
32
?
content
.
substring
(
0
,
32
)
:
content
);
eventData
.
setAggTitle
(
Tools
.
filterSpecialCharacter
(
title
));
eventData
.
setContent
(
content
);
eventData
.
setTime
(
this
.
getTime
());
eventData
.
setTime
(
this
.
getTime
()
.
getTime
()
);
JSONObject
tagInfo
=
new
JSONObject
();
Optional
.
ofNullable
(
this
.
getEmotion
()).
ifPresent
(
emotion
->
tagInfo
.
put
(
GenericAttribute
.
EMOTION_LABEL_KEY
,
emotion
));
Optional
.
ofNullable
(
this
.
getBrand
()).
ifPresent
(
brand
->
tagInfo
.
put
(
GenericAttribute
.
BRAND_LABEL_KEY
,
brand
));
...
...
@@ -89,7 +89,7 @@ public class UploadEventDataDTO {
eventData
.
setEventId
(
event
.
getId
());
eventData
.
setProjectId
(
event
.
getProjectId
());
eventData
.
setLinkedGroupId
(
event
.
getLinkedGroupId
());
eventData
.
setCTime
(
new
Date
());
eventData
.
setCTime
(
System
.
currentTimeMillis
());
// TODO Type字段类型是否需要???
return
eventData
;
}
...
...
src/main/java/com/zhiwei/brandkbs2/es/EsClientDao.java
View file @
bfbe1fe4
...
...
@@ -14,13 +14,20 @@ import org.elasticsearch.action.search.SearchResponse;
import
org.elasticsearch.action.search.SearchScrollRequest
;
import
org.elasticsearch.client.RequestOptions
;
import
org.elasticsearch.client.RestHighLevelClient
;
import
org.elasticsearch.client.core.CountRequest
;
import
org.elasticsearch.client.core.CountResponse
;
import
org.elasticsearch.common.unit.TimeValue
;
import
org.elasticsearch.index.query.BoolQueryBuilder
;
import
org.elasticsearch.index.query.QueryBuilder
;
import
org.elasticsearch.index.query.QueryBuilders
;
import
org.elasticsearch.index.query.RangeQueryBuilder
;
import
org.elasticsearch.search.SearchHit
;
import
org.elasticsearch.search.SearchHits
;
import
org.elasticsearch.search.builder.SearchSourceBuilder
;
import
org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder
;
import
org.elasticsearch.search.sort.FieldSortBuilder
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.retry.support.RetryTemplate
;
import
org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
;
import
org.springframework.stereotype.Component
;
...
...
@@ -37,7 +44,7 @@ import java.util.stream.Collectors;
* @date: 2022-06-10 14:38
*/
@Component
(
"esClientDao"
)
public
class
EsClientDao
{
public
class
EsClientDao
{
private
static
final
Logger
log
=
LogManager
.
getLogger
(
EsClientDao
.
class
);
private
static
final
FastDateFormat
DF
=
FastDateFormat
.
getInstance
(
"yyyy-MM-dd HH:mm:ss"
);
private
static
final
String
[]
CHANNEL_RECORD_FETCH_SOURCE
=
new
String
[]{
"c5"
,
"foreign"
,
"real_source"
,
"source"
,
"mtime"
,
"time"
,
"brandkbs_cache_maps"
};
...
...
@@ -47,7 +54,7 @@ public class EsClientDao {
// 滚动查询超时时间
private
static
final
TimeValue
TIME_VALUE
=
TimeValue
.
timeValueMinutes
(
8
);
@Value
(
"${test}"
)
@Value
(
"${
es.index.
test}"
)
private
boolean
test
;
@Resource
(
name
=
"esClient"
)
...
...
@@ -56,6 +63,8 @@ public class EsClientDao {
@Resource
(
name
=
"esSearchExecutor"
)
private
ThreadPoolTaskExecutor
executor
;
@Resource
(
name
=
"retryTemplate"
)
private
RetryTemplate
retryTemplate
;
public
Map
<
String
,
JSONObject
>
searchByIds
(
Collection
<
String
>
queryIds
)
throws
IOException
{
SearchSourceBuilder
sourceBuilder
=
new
SearchSourceBuilder
();
...
...
@@ -96,28 +105,6 @@ public class EsClientDao {
return
res
;
}
public
Map
<
ChannelIndex
,
ChannelIndex
.
ChannelRecord
>
searchChannelRecord
(
long
startTime
,
long
endTime
)
{
Map
<
ChannelIndex
,
ChannelIndex
.
ChannelRecord
>
res
=
new
HashMap
<>();
try
{
QueryBuilder
queryBuilder
=
QueryBuilders
.
rangeQuery
(
"mtime"
).
gte
(
startTime
).
lt
(
endTime
);
List
<
Map
<
String
,
Object
>>
results
=
searchScroll
(
queryBuilder
,
10000
,
CHANNEL_RECORD_FETCH_SOURCE
);
for
(
Map
<
String
,
Object
>
result
:
results
)
{
for
(
ChannelIndex
channelIndex
:
ChannelIndex
.
getChannelIndexes
(
result
))
{
res
.
compute
(
channelIndex
,
(
k
,
v
)
->
{
if
(
null
==
v
)
{
v
=
new
ChannelIndex
.
ChannelRecord
();
}
return
v
.
mergeRecord
(
new
ChannelIndex
.
ChannelRecord
(
new
Date
((
long
)
result
.
get
(
GenericAttribute
.
ES_TIME
)),
String
.
valueOf
(
result
.
get
(
"id"
))));
});
}
}
}
catch
(
IOException
e
)
{
log
.
error
(
"searchChannelRecord-"
,
e
);
}
log
.
info
(
"startTime:{},endTime:{},size:{}"
,
DF
.
format
(
startTime
),
DF
.
format
(
endTime
),
res
.
size
());
return
res
;
}
/**
* 搜索符合事件数据
...
...
@@ -125,7 +112,7 @@ public class EsClientDao {
* @param event
* @return
*/
public
List
<
Map
<
String
,
Object
>>
searchByEvent
(
Event
event
)
{
public
List
<
Map
<
String
,
Object
>>
search
MarkData
ByEvent
(
Event
event
)
{
try
{
RangeQueryBuilder
timeBuilder
=
QueryBuilders
.
rangeQuery
(
"time"
).
gte
(
event
.
getStartTime
());
if
(
event
.
isEndStatus
())
{
...
...
@@ -138,21 +125,24 @@ public class EsClientDao {
return
Collections
.
emptyList
();
}
// public Object searchMarkData(MarkSearchDTO markSearchDTO) {
// SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
// // 添加排序字段
// addSort(searchSourceBuilder, markSearchDTO.getSorter());
//
// return null;
// }
/**
* 滚动查询
*
* @param queryBuilder 查询条件
* @param size 每次滚动查询的量
* @param fetchSource 包含的属性阈
* @param searchSourceBuilder 搜索source
* @throws IOException
*/
private
List
<
Map
<
String
,
Object
>>
searchScroll
(
QueryBuilder
queryBuilder
,
int
size
,
String
[]
fetchSource
)
throws
IOException
{
private
List
<
Map
<
String
,
Object
>>
searchScroll
(
SearchSourceBuilder
searchSourceBuilder
)
throws
IOException
{
List
<
Map
<
String
,
Object
>>
res
=
new
ArrayList
<>();
SearchSourceBuilder
sourceBuilder
=
new
SearchSourceBuilder
();
sourceBuilder
.
query
(
queryBuilder
).
size
(
size
)
.
fetchSource
(
fetchSource
,
null
);
SearchResponse
searchResponse
=
esClient
.
search
(
new
SearchRequest
(
getIndexes
()).
source
(
sourceBuilder
).
scroll
(
TIME_VALUE
),
new
SearchRequest
(
getIndexes
()).
source
(
s
earchS
ourceBuilder
).
scroll
(
TIME_VALUE
),
RequestOptions
.
DEFAULT
);
while
(
true
)
{
if
(
0
==
searchResponse
.
getHits
().
getHits
().
length
)
{
...
...
@@ -169,7 +159,45 @@ public class EsClientDao {
return
res
;
}
private
String
[]
getIndexes
()
{
/**
* 滚动查询
*
* @param queryBuilder 查询条件
* @param size 每次滚动查询的量
* @param fetchSource 包含的属性阈
* @throws IOException
*/
private
List
<
Map
<
String
,
Object
>>
searchScroll
(
QueryBuilder
queryBuilder
,
int
size
,
String
[]
fetchSource
)
throws
IOException
{
SearchSourceBuilder
sourceBuilder
=
new
SearchSourceBuilder
();
sourceBuilder
.
query
(
queryBuilder
).
size
(
size
)
.
fetchSource
(
fetchSource
,
null
);
return
searchScroll
(
sourceBuilder
);
}
private
Map
<
ChannelIndex
,
ChannelIndex
.
ChannelRecord
>
searchChannelRecord
(
long
startTime
,
long
endTime
)
{
Map
<
ChannelIndex
,
ChannelIndex
.
ChannelRecord
>
res
=
new
HashMap
<>();
try
{
QueryBuilder
queryBuilder
=
QueryBuilders
.
rangeQuery
(
"mtime"
).
gte
(
startTime
).
lt
(
endTime
);
List
<
Map
<
String
,
Object
>>
results
=
searchScroll
(
queryBuilder
,
10000
,
CHANNEL_RECORD_FETCH_SOURCE
);
for
(
Map
<
String
,
Object
>
result
:
results
)
{
for
(
ChannelIndex
channelIndex
:
ChannelIndex
.
getChannelIndexes
(
result
))
{
res
.
compute
(
channelIndex
,
(
k
,
v
)
->
{
if
(
null
==
v
)
{
v
=
new
ChannelIndex
.
ChannelRecord
();
}
return
v
.
mergeRecord
(
new
ChannelIndex
.
ChannelRecord
((
long
)
result
.
get
(
GenericAttribute
.
ES_TIME
),
String
.
valueOf
(
result
.
get
(
"id"
))));
});
}
}
}
catch
(
IOException
e
)
{
log
.
error
(
"searchChannelRecord-"
,
e
);
}
log
.
info
(
"startTime:{},endTime:{},size:{}"
,
DF
.
format
(
startTime
),
DF
.
format
(
endTime
),
res
.
size
());
return
res
;
}
public
String
[]
getIndexes
()
{
return
getIndexList
().
toArray
(
new
String
[
0
]);
}
...
...
@@ -188,4 +216,64 @@ public class EsClientDao {
return
res
;
}
// private SearchSourceBuilder addSort(SearchSourceBuilder builder, String sorter) {
// if (StringUtils.isNotEmpty(sorter)) {
// for (Map.Entry<String, Object> entry : JSONObject.parseObject(sorter).entrySet()) {
// if (entry.getValue().toString().contains("desc")) {
// return builder.sort(entry.getKey(), SortOrder.DESC);
// } else {
// return builder.sort(entry.getKey(), SortOrder.ASC);
// }
// }
// }
// return builder;
// }
public
SearchHits
searchHits
(
String
[]
indexes
,
QueryBuilder
postFilter
,
QueryBuilder
query
,
FieldSortBuilder
sort
,
int
from
,
int
size
,
HighlightBuilder
highlighter
)
throws
IOException
{
SearchRequest
searchRequest
=
new
SearchRequest
();
SearchSourceBuilder
searchSourceBuilder
=
new
SearchSourceBuilder
();
searchRequest
.
indices
(
indexes
);
if
(!
Objects
.
isNull
(
postFilter
))
{
searchSourceBuilder
.
postFilter
(
postFilter
);
}
if
(!
Objects
.
isNull
(
query
))
{
searchSourceBuilder
.
query
(
query
);
}
if
(!
Objects
.
isNull
(
sort
))
{
searchSourceBuilder
.
sort
(
sort
);
}
if
(
from
>=
0
)
{
searchSourceBuilder
.
from
(
from
);
}
if
(
size
>=
0
)
{
searchSourceBuilder
.
size
(
size
);
}
if
(!
Objects
.
isNull
(
highlighter
))
{
searchSourceBuilder
.
highlighter
(
highlighter
);
}
searchRequest
.
source
(
searchSourceBuilder
);
SearchResponse
response
=
retryTemplate
.
execute
(
context
->
esClient
.
search
(
searchRequest
,
RequestOptions
.
DEFAULT
)
);
return
response
.
getHits
();
}
public
Long
count
(
String
[]
indexes
,
QueryBuilder
postFilter
,
QueryBuilder
query
)
throws
IOException
{
CountRequest
countRequest
=
new
CountRequest
();
BoolQueryBuilder
countQuery
=
QueryBuilders
.
boolQuery
();
if
(!
Objects
.
isNull
(
query
)){
countQuery
.
must
(
query
);
}
if
(!
Objects
.
isNull
(
postFilter
)){
countQuery
.
must
(
postFilter
);
}
countRequest
.
indices
(
indexes
);
countRequest
.
query
(
countQuery
);
CountResponse
response
=
retryTemplate
.
execute
(
context
->
esClient
.
count
(
countRequest
,
RequestOptions
.
DEFAULT
)
);
return
response
.
getCount
();
}
}
src/main/java/com/zhiwei/brandkbs2/es/EsQueryTools.java
0 → 100644
View file @
bfbe1fe4
package
com
.
zhiwei
.
brandkbs2
.
es
;
import
com.zhiwei.brandkbs2.common.GenericAttribute
;
import
com.zhiwei.pushlog.tools.Tools
;
import
com.zhiwei.qbjc.bean.pojo.common.MessagePlatform
;
import
org.apache.commons.lang3.StringUtils
;
import
org.elasticsearch.index.query.BoolQueryBuilder
;
import
org.elasticsearch.index.query.QueryBuilders
;
import
java.util.*
;
/**
* @ClassName: EsQueryTool
* @Description es语句辅助类
* @author: sjj
* @date: 2022-06-29 15:27
*/
public
class
EsQueryTools
{
public
static
final
String
ES_QUERY_AND
=
"must"
;
public
static
final
String
ES_QUERY_OR
=
"should"
;
public
static
final
String
ES_QUERY_NOT
=
"not"
;
/**
* 多字段 keyword格式为【腾讯 马化腾|京东 刘强东】 这是(腾讯且马化腾)或(京东且刘强东)
*
* @param @param keyword
* @param @param strings
* @param @return 设定文件
* @return QueryBuilder 返回类型
* @Title: assembleNormalKeywordQuery
* @Description: 多字段 search格式为【腾讯 马化腾|京东 刘强东】 这是(腾讯且马化腾)或(京东且刘强东)
*/
public
static
BoolQueryBuilder
assembleNormalKeywordQuery
(
String
keyword
,
String
[]
fieldList
)
{
String
orStr
=
"|"
;
BoolQueryBuilder
queryBuilder
=
QueryBuilders
.
boolQuery
();
if
(
Tools
.
isEmpty
(
keyword
))
{
return
queryBuilder
;
}
else
if
(
keyword
.
contains
(
StringUtils
.
SPACE
)
&&
!
keyword
.
contains
(
orStr
))
{
// 单组关键词
BoolQueryBuilder
mixBoolQueryBuilder
=
QueryBuilders
.
boolQuery
();
String
[]
words
=
keyword
.
split
(
" +"
);
for
(
String
word
:
words
)
{
mixBoolQueryBuilder
.
must
(
EsQueryTools
.
matchPhraseQueryFields
(
QueryBuilders
.
boolQuery
(),
ES_QUERY_OR
,
word
,
fieldList
));
}
queryBuilder
.
should
(
mixBoolQueryBuilder
);
}
else
if
(
keyword
.
contains
(
orStr
))
{
// 多组关键词
BoolQueryBuilder
mixBoolQueryBuilder
=
QueryBuilders
.
boolQuery
();
String
[]
wordGroups
=
keyword
.
split
(
"\\|"
);
for
(
String
wordGroup
:
wordGroups
)
{
BoolQueryBuilder
wordBoolQueryBuilder
=
QueryBuilders
.
boolQuery
();
String
[]
words
=
wordGroup
.
split
(
" +"
);
for
(
String
word
:
words
)
{
wordBoolQueryBuilder
.
must
(
EsQueryTools
.
matchPhraseQueryFields
(
QueryBuilders
.
boolQuery
(),
ES_QUERY_OR
,
word
,
fieldList
));
}
mixBoolQueryBuilder
.
should
(
wordBoolQueryBuilder
);
}
queryBuilder
.
should
(
mixBoolQueryBuilder
);
}
else
{
// 单个关键词
EsQueryTools
.
matchPhraseQueryFields
(
queryBuilder
,
ES_QUERY_OR
,
keyword
,
fieldList
);
}
return
queryBuilder
;
}
/**
* 标签请求匹配
*
* @param tagIds
* @return
*/
public
static
BoolQueryBuilder
assembleTagQuery
(
List
<
String
>
tagIds
)
{
BoolQueryBuilder
tagQuery
=
QueryBuilders
.
boolQuery
();
tagIds
.
forEach
(
e
->
{
tagQuery
.
should
(
QueryBuilders
.
termQuery
(
"mark_cache_maps.unique_id.keyword"
,
e
));
});
return
tagQuery
;
}
/**
* platform 组合语句
*
* @param @param platforms
* @param @return 设定文件
* @return BoolQueryBuilder 返回类型
* @Title: assemblePlatformQuery
* @Description: platform 组合语句
*/
public
static
BoolQueryBuilder
assemblePlatformQuery
(
List
<
MessagePlatform
>
platforms
)
{
BoolQueryBuilder
queryBuilder
=
QueryBuilders
.
boolQuery
();
Map
<
String
,
List
<
Integer
>>
queryMap
=
newQueryMap
(
platforms
);
for
(
Map
.
Entry
<
String
,
List
<
Integer
>>
queryEntry
:
queryMap
.
entrySet
())
{
if
(
Tools
.
isEmpty
(
queryEntry
.
getValue
()))
{
continue
;
}
BoolQueryBuilder
ptBuilder
=
QueryBuilders
.
boolQuery
();
ptBuilder
.
must
(
QueryBuilders
.
termQuery
(
GenericAttribute
.
ES_FOREIGN
,
Integer
.
parseInt
(
queryEntry
.
getKey
())))
.
must
(
QueryBuilders
.
termsQuery
(
GenericAttribute
.
ES_C5
,
queryEntry
.
getValue
()));
queryBuilder
.
should
(
ptBuilder
);
}
return
queryBuilder
;
}
/**
* 字段不拆封,多字段 同关键词
*
* @param @param boolQueryBuilder
* @param @param esQuery
* @param @param word
* @param @param fields
* @param @return 设定文件
* @return BoolQueryBuilder 返回类型
* @Title: matchPhraseQueryFields
* @Description: 字段不拆封, 多字段 同关键词
*/
public
static
BoolQueryBuilder
matchPhraseQueryFields
(
BoolQueryBuilder
boolQueryBuilder
,
String
esQuery
,
String
word
,
String
...
fields
)
{
if
(
ES_QUERY_AND
.
equals
(
esQuery
))
{
for
(
String
field
:
fields
)
{
boolQueryBuilder
.
must
(
QueryBuilders
.
matchPhraseQuery
(
field
,
word
));
}
}
else
if
(
ES_QUERY_OR
.
equals
(
esQuery
))
{
for
(
String
field
:
fields
)
{
boolQueryBuilder
.
should
(
QueryBuilders
.
matchPhraseQuery
(
field
,
word
));
}
}
else
if
(
ES_QUERY_NOT
.
equals
(
esQuery
))
{
for
(
String
field
:
fields
)
{
boolQueryBuilder
.
mustNot
(
QueryBuilders
.
matchPhraseQuery
(
field
,
word
));
}
}
return
boolQueryBuilder
;
}
/**
* new QueryMap
*
* @param platforms
* @return Map<String, List < Integer>>
*/
private
static
Map
<
String
,
List
<
Integer
>>
newQueryMap
(
List
<
MessagePlatform
>
platforms
)
{
Map
<
String
,
List
<
Integer
>>
queryMap
=
new
HashMap
<>(
6
);
for
(
MessagePlatform
messagePlatform
:
platforms
)
{
// 按templateHeaderIds来组装查询语句,按origin+foreign分组
for
(
String
templateHeaderId
:
messagePlatform
.
getTemplateHeaders
())
{
String
[]
templateHeader
=
templateHeaderId
.
split
(
"_"
);
String
c5
=
templateHeader
[
0
];
String
foreign
=
templateHeader
[
1
];
if
(
Objects
.
isNull
(
queryMap
.
get
(
foreign
)))
{
queryMap
.
put
(
foreign
,
new
ArrayList
<>());
}
queryMap
.
get
(
foreign
).
add
(
Integer
.
parseInt
(
c5
));
}
}
return
queryMap
;
}
}
src/main/java/com/zhiwei/brandkbs2/es/EsRetryTools.java
0 → 100644
View file @
bfbe1fe4
package
com
.
zhiwei
.
brandkbs2
.
es
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.retry.backoff.ExponentialBackOffPolicy
;
import
org.springframework.retry.policy.SimpleRetryPolicy
;
import
org.springframework.retry.support.RetryTemplate
;
/**
* @ClassName: EsRetryTools
* @Description: es重试
* @author: sjj
* @date: 2022年6月28日17:11:20
**/
@Configuration
public
class
EsRetryTools
{
@Bean
(
name
=
"retryTemplate"
)
public
RetryTemplate
getRetryTemplate
()
{
RetryTemplate
template
=
new
RetryTemplate
();
SimpleRetryPolicy
policy
=
new
SimpleRetryPolicy
();
ExponentialBackOffPolicy
backOffPolicy
=
new
ExponentialBackOffPolicy
();
// 策略
policy
.
setMaxAttempts
(
2
);
// 重试次数
template
.
setRetryPolicy
(
policy
);
backOffPolicy
.
setInitialInterval
(
1000
);
// 初始休眠
backOffPolicy
.
setMultiplier
(
2
);
// 指定乘数 下次休眠 = multiplier * 当前休眠时间
backOffPolicy
.
setMaxInterval
(
5000
);
// 最大休眠时间
template
.
setBackOffPolicy
(
backOffPolicy
);
return
template
;
}
}
src/main/java/com/zhiwei/brandkbs2/exception/CustomException.java
View file @
bfbe1fe4
...
...
@@ -15,17 +15,24 @@ public class CustomException extends RuntimeException {
*/
private
final
ResultCode
resultCode
;
public
CustomException
(
String
errorReason
,
ResultCode
resultCode
)
{
super
(
errorReason
);
private
final
Exception
exception
;
public
CustomException
(
ResultCode
resultCode
)
{
this
.
resultCode
=
resultCode
;
this
.
exception
=
null
;
}
public
CustomException
(
ResultCode
resultCode
){
public
CustomException
(
ResultCode
resultCode
,
Exception
e
)
{
this
.
resultCode
=
resultCode
;
this
.
exception
=
e
;
}
public
ResultCode
getResultCode
(){
public
ResultCode
getResultCode
()
{
return
resultCode
;
}
public
Exception
getException
()
{
return
exception
;
}
}
src/main/java/com/zhiwei/brandkbs2/exception/ExceptionCast.java
View file @
bfbe1fe4
...
...
@@ -11,7 +11,11 @@ import com.zhiwei.brandkbs2.model.ResultCode;
*/
public
class
ExceptionCast
{
public
static
void
cast
(
ResultCode
resultCode
){
public
static
void
cast
(
ResultCode
resultCode
)
{
throw
new
CustomException
(
resultCode
);
}
public
static
void
cast
(
ResultCode
resultCode
,
Exception
e
)
{
throw
new
CustomException
(
resultCode
,
e
);
}
}
src/main/java/com/zhiwei/brandkbs2/exception/ExceptionCatch.java
View file @
bfbe1fe4
...
...
@@ -27,12 +27,7 @@ public class ExceptionCatch {
/**
* 定义map,配置异常类型所对应的错误代码
*/
private
static
ImmutableMap
<
Class
<?
extends
Throwable
>,
ResultCode
>
EXCEPTIONS
;
/**
* 定义map的builder对象,去构建ImmutableMap
*/
protected
static
ImmutableMap
.
Builder
<
Class
<?
extends
Throwable
>,
ResultCode
>
builder
=
ImmutableMap
.
builder
();
private
static
final
ImmutableMap
<
Class
<?
extends
Throwable
>,
ResultCode
>
EXCEPTIONS
;
/**
* 捕获CustomException此类异常
...
...
@@ -43,8 +38,13 @@ public class ExceptionCatch {
@ExceptionHandler
(
CustomException
.
class
)
public
ResponseResult
customException
(
CustomException
customException
)
{
ResultCode
resultCode
=
customException
.
getResultCode
();
Exception
exception
=
customException
.
getException
();
//记录日志
log
.
error
(
"catch customException:{}"
,
resultCode
.
message
());
if
(
null
==
exception
)
{
log
.
error
(
"catch exception-custom:{}"
,
resultCode
.
message
());
}
else
{
log
.
error
(
"catch exception-custom:{}"
,
resultCode
.
message
(),
exception
);
}
return
new
ResponseResult
(
resultCode
,
Collections
.
EMPTY_LIST
);
}
...
...
@@ -58,10 +58,6 @@ public class ExceptionCatch {
public
ResponseResult
exception
(
Exception
exception
)
{
//记录日志
log
.
error
(
"catch exception:"
,
exception
);
if
(
Objects
.
isNull
(
EXCEPTIONS
))
{
//EXCEPTIONS构建成功
EXCEPTIONS
=
builder
.
build
();
}
//从EXCEPTIONS中找异常类型所对应的错误代码
ResultCode
resultCode
=
EXCEPTIONS
.
get
(
exception
.
getClass
());
if
(
Objects
.
nonNull
(
resultCode
))
{
...
...
@@ -74,7 +70,9 @@ public class ExceptionCatch {
static
{
//定义异常类型所对应的错误代码
ImmutableMap
.
Builder
<
Class
<?
extends
Throwable
>,
ResultCode
>
builder
=
ImmutableMap
.
builder
();
builder
.
put
(
HttpMessageNotReadableException
.
class
,
CommonCodeEnum
.
INVALID_PARAM
);
builder
.
put
(
NullPointerException
.
class
,
CommonCodeEnum
.
NULL_POINTER_EXCEPTION
);
EXCEPTIONS
=
builder
.
build
();
}
}
src/main/java/com/zhiwei/brandkbs2/pojo/Behavior.java
View file @
bfbe1fe4
...
...
@@ -3,8 +3,6 @@ package com.zhiwei.brandkbs2.pojo;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.util.Date
;
/**
* @ClassName: Behavior
* @Description 用户行为实体类
...
...
@@ -30,7 +28,7 @@ public class Behavior extends AbstractBaseMongo {
/**
* 创建时间
*/
private
Date
cTime
;
private
Long
cTime
;
/**
* 访问页面
*/
...
...
src/main/java/com/zhiwei/brandkbs2/pojo/Channel.java
View file @
bfbe1fe4
...
...
@@ -20,12 +20,12 @@ public class Channel extends ChannelIndex {
/**
* 创建时间
*/
private
Date
cTime
;
private
Long
cTime
;
/**
* 最近发文
*/
private
Date
lastTime
;
private
Long
lastTime
;
/**
* 图片地址
...
...
@@ -50,7 +50,7 @@ public class Channel extends ChannelIndex {
/**
* 渠道倾向
*/
private
String
emotion
=
"未定义"
;
private
String
emotion
=
"未定义"
;
/**
* 渠道指数
...
...
@@ -67,8 +67,8 @@ public class Channel extends ChannelIndex {
*/
private
boolean
show
=
true
;
public
void
setLastTime
(
Date
lastTime
)
{
if
(
null
==
this
.
lastTime
||
this
.
lastTime
.
before
(
lastTime
)
)
{
public
void
setLastTime
(
Long
lastTime
)
{
if
(
null
==
this
.
lastTime
||
this
.
lastTime
<
lastTime
)
{
this
.
lastTime
=
lastTime
;
}
}
...
...
@@ -81,18 +81,18 @@ public class Channel extends ChannelIndex {
}
}
public
void
setChannelRecord
(
ChannelRecord
channelRecord
){
public
void
setChannelRecord
(
ChannelRecord
channelRecord
)
{
setLastTime
(
channelRecord
.
getLastTime
());
setArticleIds
(
channelRecord
.
getArticleIds
());
}
public
ChannelIndex
getChannelIndex
(){
return
Tools
.
convertMap
(
this
,
ChannelIndex
.
class
);
public
ChannelIndex
getChannelIndex
()
{
return
Tools
.
convertMap
(
this
,
ChannelIndex
.
class
);
}
public
static
Channel
createFromChannelIndexRecord
(
ChannelIndex
channelIndex
,
ChannelRecord
channelRecord
)
{
Channel
channel
=
new
Channel
();
channel
.
setCTime
(
new
Date
());
channel
.
setCTime
(
new
Date
()
.
getTime
()
);
channel
.
setLinkedGroupId
(
channelIndex
.
getLinkedGroupId
());
channel
.
setPlatform
(
channelIndex
.
getPlatform
());
channel
.
setRealSource
(
channelIndex
.
getRealSource
());
...
...
src/main/java/com/zhiwei/brandkbs2/pojo/ChannelIndex.java
View file @
bfbe1fe4
...
...
@@ -7,7 +7,6 @@ import lombok.AllArgsConstructor;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
org.elasticsearch.search.SearchHit
;
import
java.util.*
;
...
...
@@ -62,19 +61,19 @@ public class ChannelIndex extends AbstractBaseMongo {
@Getter
public
static
class
ChannelRecord
{
private
Date
lastTime
;
private
Long
lastTime
;
private
LinkedHashSet
<
String
>
articleIds
=
new
LinkedHashSet
<>();
public
ChannelRecord
()
{
}
public
ChannelRecord
(
Date
lastTime
,
String
articleId
)
{
public
ChannelRecord
(
Long
lastTime
,
String
articleId
)
{
this
.
lastTime
=
lastTime
;
this
.
articleIds
.
add
(
articleId
);
}
private
void
setLastTime
(
Date
lastTime
)
{
if
(
null
==
this
.
lastTime
||
this
.
lastTime
.
before
(
lastTime
)
)
{
private
void
setLastTime
(
Long
lastTime
)
{
if
(
null
==
this
.
lastTime
||
this
.
lastTime
<
lastTime
)
{
this
.
lastTime
=
lastTime
;
}
}
...
...
src/main/java/com/zhiwei/brandkbs2/pojo/Event.java
View file @
bfbe1fe4
...
...
@@ -8,7 +8,6 @@ import lombok.Getter;
import
lombok.Setter
;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
java.util.Date
;
import
java.util.Objects
;
/**
...
...
@@ -34,11 +33,11 @@ public class Event extends AbstractBaseMongo {
/**
* 开始时间
*/
private
Date
startTime
;
private
Long
startTime
;
/**
* 结束时间
*/
private
Date
endTime
;
private
Long
endTime
;
/**
* 关键字
*/
...
...
@@ -58,7 +57,7 @@ public class Event extends AbstractBaseMongo {
/**
* 创建时间
*/
private
Date
cTime
;
private
Long
cTime
;
/**
* 影响力
*/
...
...
@@ -98,8 +97,8 @@ public class Event extends AbstractBaseMongo {
Event
event
=
new
Event
();
event
.
setCollectionName
(
collectionName
);
event
.
setTitle
(
eventDTO
.
getTitle
());
event
.
setStartTime
(
eventDTO
.
getStartTime
());
event
.
setEndTime
(
eventDTO
.
getEndTime
());
event
.
setStartTime
(
eventDTO
.
getStartTime
()
.
getTime
()
);
event
.
setEndTime
(
eventDTO
.
getEndTime
()
.
getTime
()
);
event
.
setEndStatus
(
Objects
.
nonNull
(
eventDTO
.
getEndTime
()));
event
.
setKeyword
(
eventDTO
.
getKeyword
());
event
.
setEmotion
(
eventDTO
.
getEmotion
());
...
...
src/main/java/com/zhiwei/brandkbs2/pojo/EventData.java
View file @
bfbe1fe4
...
...
@@ -6,9 +6,7 @@ import com.zhiwei.brandkbs2.pojo.dto.EventDataDTO;
import
com.zhiwei.brandkbs2.util.Tools
;
import
lombok.Getter
;
import
lombok.Setter
;
import
org.apache.poi.ss.formula.functions.Even
;
import
java.util.Date
;
import
java.util.Map
;
/**
...
...
@@ -68,11 +66,11 @@ public class EventData extends AbstractBaseMongo {
/**
* 文章时间
*/
private
Date
time
;
private
Long
time
;
/**
* 创建时间
*/
private
Date
cTime
;
private
Long
cTime
;
/**
* 标签数据
*/
...
...
@@ -97,9 +95,9 @@ public class EventData extends AbstractBaseMongo {
data
.
setAggTitle
(
Tools
.
filterSpecialCharacter
(
baseMap
.
getTitle
()));
data
.
setContent
(
baseMap
.
getContent
());
data
.
setEmotion
(
baseMap
.
getEmotion
());
data
.
setTime
(
new
Date
(
baseMap
.
getTime
()
));
data
.
setTime
(
baseMap
.
getTime
(
));
data
.
setForward
(
baseMap
.
isForward
());
data
.
setCTime
(
new
Date
(
jsonMap
.
getLong
(
GenericAttribute
.
ES_CTIME
)
));
data
.
setCTime
(
jsonMap
.
getLong
(
GenericAttribute
.
ES_CTIME
));
// TagInfo
data
.
setTagInfo
(
Tools
.
change2TagInfoByMtag
(
jsonMap
.
getString
(
GenericAttribute
.
ES_MTAG
)).
toJSONString
());
return
data
;
...
...
src/main/java/com/zhiwei/brandkbs2/pojo/HighWord.java
View file @
bfbe1fe4
package
com
.
zhiwei
.
brandkbs2
.
pojo
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
lombok.Getter
;
import
lombok.Setter
;
import
org.springframework.data.mongodb.core.mapping.Document
;
...
...
@@ -28,7 +27,7 @@ public class HighWord extends AbstractBaseMongo {
/**
* 创建时间
*/
private
Date
cTime
;
private
Long
cTime
;
/**
* 上传人
...
...
@@ -42,7 +41,7 @@ public class HighWord extends AbstractBaseMongo {
public
static
List
<
HighWord
>
createFromList
(
List
<
String
>
keywords
,
String
projectId
,
String
submitter
)
{
List
<
HighWord
>
res
=
new
ArrayList
<>();
Date
now
=
new
Dat
e
();
Long
now
=
new
Date
().
getTim
e
();
for
(
String
keyword
:
keywords
)
{
HighWord
highWord
=
new
HighWord
();
highWord
.
setKeyword
(
keyword
);
...
...
src/main/java/com/zhiwei/brandkbs2/pojo/MarkFlowEntity.java
0 → 100644
View file @
bfbe1fe4
package
com
.
zhiwei
.
brandkbs2
.
pojo
;
import
com.alibaba.fastjson.JSONObject
;
import
com.zhiwei.base.category.ClassB
;
import
com.zhiwei.base.entity.subclass.CompleteText
;
import
com.zhiwei.base.entity.subclass.IncompleteText
;
import
com.zhiwei.base.entity.subclass.QAText
;
import
com.zhiwei.base.entity.subclass.Video
;
import
com.zhiwei.brandkbs2.common.GenericAttribute
;
import
com.zhiwei.brandkbs2.util.FlowEntityUtil
;
import
com.zhiwei.brandkbs2.util.Tools
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.elasticsearch.search.SearchHit
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.stream.Collectors
;
/**
* @ClassName: MarkFlowEntity
* @Description 标注流实体
* @author: sjj
* @date: 2022-06-29 16:39
*/
@Getter
@Setter
@NoArgsConstructor
public
class
MarkFlowEntity
{
/**
* 消息类型
*/
private
JSONObject
type
;
/**
* 消息内容
*/
private
Object
data
;
public
static
MarkFlowEntity
getInstance
(
List
<
JSONObject
>
tJons
)
{
// 首条数据为主
MarkFlowEntity
entity
=
new
MarkFlowEntity
(
tJons
.
get
(
0
));
if
(
tJons
.
size
()
>
1
)
{
entity
.
getType
().
put
(
"fold"
,
true
);
entity
.
getType
().
put
(
"size"
,
tJons
.
size
());
entity
.
setData
(
tJons
.
stream
().
map
(
json
->
new
MarkFlowEntity
(
json
).
getData
()).
collect
(
Collectors
.
toList
()));
}
return
entity
;
}
/**
* Constructor
*
* @param hit
*/
public
MarkFlowEntity
(
SearchHit
hit
)
{
this
(
new
JSONObject
(
hit
.
getSourceAsMap
()));
}
/**
* Constructor
*
* @param tJson
*/
public
MarkFlowEntity
(
JSONObject
tJson
)
{
if
(
Objects
.
isNull
(
tJson
.
getString
(
GenericAttribute
.
ES_CNAME
)))
{
tJson
.
put
(
GenericAttribute
.
ES_CNAME
,
"采集来源缺失"
);
}
int
c2
=
tJson
.
getIntValue
(
GenericAttribute
.
ES_C2
);
switch
(
ClassB
.
TypeB
.
fromEncode
(
c2
))
{
case
COMPLETE:
if
(!
Tools
.
isEmpty
(
tJson
.
get
(
"ind_full_text"
)))
{
tJson
.
put
(
"ind_full_text"
,
Tools
.
filterStrHtmlTag
(
ObjectUtils
.
defaultIfNull
(
tJson
.
getString
(
"ind_full_text"
),
"[\"\",\"\"]"
)));
}
if
(!
Tools
.
isEmpty
(
tJson
.
get
(
"ind_title"
)))
{
tJson
.
put
(
"ind_title"
,
Tools
.
filterStrHtmlTag
(
ObjectUtils
.
defaultIfNull
(
tJson
.
getString
(
"ind_title"
),
"[\"\"]"
)));
}
CompleteText
completeText
=
CompleteText
.
restoreFromEs
(
tJson
);
this
.
type
=
FlowEntityUtil
.
getCompleteTextType
(
completeText
);
this
.
data
=
completeText
;
break
;
case
INCOMPLETE:
if
(!
Tools
.
isEmpty
(
tJson
.
get
(
"ind_full_text"
)))
{
tJson
.
put
(
"ind_full_text"
,
Tools
.
filterStrHtmlTag
(
ObjectUtils
.
defaultIfNull
(
tJson
.
getString
(
"ind_full_text"
),
"[\"\",\"\"]"
)));
}
IncompleteText
incompleteText
=
IncompleteText
.
restoreFromEs
(
tJson
);
this
.
type
=
FlowEntityUtil
.
getIncompleteTextType
(
incompleteText
);
this
.
data
=
incompleteText
;
break
;
case
QA:
if
(!
Tools
.
isEmpty
(
tJson
.
get
(
"ind_full_text"
)))
{
tJson
.
put
(
"ind_full_text"
,
Tools
.
filterStrHtmlTag
(
ObjectUtils
.
defaultIfNull
(
tJson
.
getString
(
"ind_full_text"
),
"[\"\",\"\",\"\"]"
)));
}
if
(!
Tools
.
isEmpty
(
tJson
.
get
(
"ind_title"
)))
{
tJson
.
put
(
"ind_title"
,
Tools
.
filterStrHtmlTag
(
ObjectUtils
.
defaultIfNull
(
tJson
.
getString
(
"ind_title"
),
"[\"\",\"\"]"
)));
}
if
(!
Tools
.
isEmpty
(
tJson
.
get
(
"ind_content"
)))
{
tJson
.
put
(
"ind_content"
,
Tools
.
filterStrHtmlTag
(
ObjectUtils
.
defaultIfNull
(
tJson
.
getString
(
"ind_content"
),
"[\"\"]"
)));
}
QAText
qaText
=
QAText
.
restoreFromEs
(
tJson
);
this
.
type
=
FlowEntityUtil
.
getQaTextType
(
qaText
);
this
.
data
=
qaText
;
break
;
case
VIDEO:
if
(!
Tools
.
isEmpty
(
tJson
.
get
(
"ind_full_text"
)))
{
tJson
.
put
(
"ind_full_text"
,
Tools
.
filterStrHtmlTag
(
ObjectUtils
.
defaultIfNull
(
tJson
.
getString
(
"ind_full_text"
),
"[\"\",\"\"]"
)));
}
if
(!
Tools
.
isEmpty
(
tJson
.
get
(
"ind_title"
)))
{
tJson
.
put
(
"ind_title"
,
Tools
.
filterStrHtmlTag
(
ObjectUtils
.
defaultIfNull
(
tJson
.
getString
(
"ind_title"
),
"[\"\"]"
)));
}
Video
video
=
Video
.
restoreFromEs
(
tJson
);
this
.
type
=
FlowEntityUtil
.
getVideoType
(
video
);
this
.
data
=
video
;
break
;
default
:
break
;
}
}
}
src/main/java/com/zhiwei/brandkbs2/pojo/Project.java
View file @
bfbe1fe4
...
...
@@ -28,7 +28,7 @@ public class Project extends AbstractProject {
/**
* 数据起始时间(能够绑定关联关系的时间点)
*/
private
Date
importTime
;
private
Long
importTime
;
/**
* 是否有竞品
...
...
@@ -79,12 +79,12 @@ public class Project extends AbstractProject {
/**
* 创建时间
*/
private
Date
cTime
;
private
Long
cTime
;
/**
* 修改时间
*/
private
Date
uTime
;
private
Long
uTime
;
/**
* 项目主品牌配置信息转换
...
...
@@ -97,7 +97,7 @@ public class Project extends AbstractProject {
// 主品牌
projectVO
.
setProjectName
(
this
.
getProjectName
());
projectVO
.
setWholeSearchDataSource
(
this
.
getWholeSearchDataSource
());
projectVO
.
setImportTime
(
this
.
getImportTime
(
));
projectVO
.
setImportTime
(
new
Date
(
this
.
getImportTime
()
));
projectVO
.
setBrandName
(
this
.
getBrandName
());
projectVO
.
setBrandLinkedGroup
(
this
.
getBrandLinkedGroup
());
projectVO
.
setBrandLinkedGroupId
(
this
.
getBrandLinkedGroupId
());
...
...
src/main/java/com/zhiwei/brandkbs2/pojo/Report.java
View file @
bfbe1fe4
...
...
@@ -4,7 +4,6 @@ import lombok.Getter;
import
lombok.Setter
;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
java.util.Date
;
import
java.util.List
;
/**
...
...
@@ -25,15 +24,15 @@ public class Report extends AbstractBaseMongo{
/**
* 开始时间
*/
private
Date
startTime
;
private
Long
startTime
;
/**
* 结束时间
*/
private
Date
endTime
;
private
Long
endTime
;
/**
* 发布时间
*/
private
Date
publishTime
;
private
Long
publishTime
;
/**
* 报告类型
*/
...
...
src/main/java/com/zhiwei/brandkbs2/pojo/ReportSettings.java
View file @
bfbe1fe4
...
...
@@ -6,7 +6,6 @@ import lombok.Getter;
import
lombok.Setter
;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
java.util.Date
;
import
java.util.List
;
/**
...
...
@@ -32,7 +31,7 @@ public class ReportSettings extends AbstractBaseMongo {
/**
* 更新时间
*/
private
Date
uTime
;
private
Long
uTime
;
/**
* 对比竞品(存放对比竞品的linkedGroupId)
*/
...
...
src/main/java/com/zhiwei/brandkbs2/pojo/User.java
View file @
bfbe1fe4
...
...
@@ -43,7 +43,7 @@ public class User extends AbstractBaseMongo {
/**
* 创建时间
*/
private
Date
cTime
;
private
Long
cTime
;
/**
* 用户角色列表
...
...
@@ -77,7 +77,7 @@ public class User extends AbstractBaseMongo {
user
.
setUsername
(
centerUser
.
getName
());
user
.
setPhoneNumber
(
Long
.
parseLong
(
centerUser
.
getPhone
()));
user
.
setAvatarUrl
(
centerUser
.
getAvatarUrl
());
user
.
setCTime
(
new
Date
());
user
.
setCTime
(
new
Date
()
.
getTime
()
);
user
.
setRoles
(
new
ArrayList
<>());
return
user
;
}
...
...
src/main/java/com/zhiwei/brandkbs2/pojo/UserRole.java
View file @
bfbe1fe4
...
...
@@ -45,7 +45,7 @@ public class UserRole {
/**
* 过期时间,仅客户
*/
private
Date
expiredTime
;
private
Long
expiredTime
;
/**
* 舆情导出数量默认1000,超管默认10000
*/
...
...
@@ -54,7 +54,7 @@ public class UserRole {
public
UserRole
(
String
projectId
,
int
roleId
,
Date
expiredTime
,
Integer
exportAmount
)
{
this
.
projectId
=
projectId
;
this
.
roleId
=
roleId
;
this
.
expiredTime
=
expiredTime
;
this
.
expiredTime
=
expiredTime
.
getTime
()
;
this
.
exportAmount
=
exportAmount
;
}
...
...
src/main/java/com/zhiwei/brandkbs2/pojo/dto/EventDataDTO.java
View file @
bfbe1fe4
...
...
@@ -7,8 +7,6 @@ import io.swagger.annotations.ApiModelProperty;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.util.Date
;
/**
* @ClassName: EventDataDTO
* @Description 事件数据传输类
...
...
@@ -30,7 +28,7 @@ public class EventDataDTO {
private
String
title
;
@ApiModelProperty
(
"发布时间"
)
private
Date
time
;
private
Long
time
;
@ApiModelProperty
(
"报道地址"
)
private
String
url
;
...
...
src/main/java/com/zhiwei/brandkbs2/pojo/dto/MarkSearchDTO.java
0 → 100644
View file @
bfbe1fe4
package
com
.
zhiwei
.
brandkbs2
.
pojo
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.ToString
;
import
java.util.List
;
@Data
@ToString
@ApiModel
(
"标注数据搜索传输类"
)
public
class
MarkSearchDTO
{
/**
* 页码
*/
@ApiModelProperty
(
"页码"
)
private
int
page
;
/**
* 大小
*/
@ApiModelProperty
(
"每页记录数"
)
private
int
pageSize
;
// postFilter
/**
* 关联项目组id
*/
@ApiModelProperty
(
value
=
"关联项目组id"
,
required
=
true
)
private
String
linkedGroupId
;
/**
* 时间类型
*/
@ApiModelProperty
(
"时间类型"
)
private
String
timeType
=
"mtime"
;
/**
* 开始时间戳
*/
@ApiModelProperty
(
value
=
"开始时间"
)
private
Long
startTime
;
/**
* 结束时间戳
*/
@ApiModelProperty
(
"结束时间"
)
private
Long
endTime
;
/**
* 平台
*/
@ApiModelProperty
(
value
=
"平台"
)
private
List
<
String
>
platforms
;
/**
* 媒体类型
*/
@ApiModelProperty
(
value
=
"重要发声方"
)
private
List
<
String
>
mediaTypes
;
/**
* 标签筛选
*/
@ApiModelProperty
(
value
=
"舆情标签筛选"
)
private
List
<
String
>
tags
;
/**
* 自定义标签筛选
*/
@ApiModelProperty
(
value
=
"自定义标签筛选"
)
private
List
<
String
>
customTags
;
// query部分
/**
* 检索字段
*/
@ApiModelProperty
(
value
=
"检索字段"
)
private
String
searchField
;
/**
* 关键字
*/
@ApiModelProperty
(
value
=
"关键字"
)
private
String
keyword
;
/**
* 渠道关键词
*/
@ApiModelProperty
(
value
=
"渠道关键词"
)
private
String
sourceKeyword
;
// sort
/**
* 排序字段
*/
@ApiModelProperty
(
value
=
"排序字段"
)
private
String
sorter
;
/**
* 是否聚合
*/
@ApiModelProperty
(
value
=
"是否聚合"
)
private
boolean
aggregation
;
}
src/main/java/com/zhiwei/brandkbs2/pojo/dto/YqEventDTO.java
View file @
bfbe1fe4
...
...
@@ -7,8 +7,6 @@ import io.swagger.annotations.ApiModelProperty;
import
lombok.Data
;
import
lombok.ToString
;
import
java.util.Date
;
/**
* @author sjj
* @version 1.0
...
...
@@ -38,12 +36,12 @@ public class YqEventDTO {
* 开始时间
*/
@ApiModelProperty
(
"开始时间"
)
private
Date
startTime
;
private
Long
startTime
;
/**
* 结束时间
*/
@ApiModelProperty
(
"结束时间"
)
private
Date
endTime
;
private
Long
endTime
;
/**
* 关键字
*/
...
...
src/main/java/com/zhiwei/brandkbs2/pojo/vo/PageVO.java
View file @
bfbe1fe4
package
com
.
zhiwei
.
brandkbs2
.
pojo
.
vo
;
import
com.alibaba.fastjson.JSONObject
;
import
com.zhiwei.brandkbs2.util.MongoUtil
;
import
lombok.Data
;
import
lombok.ToString
;
...
...
@@ -22,6 +23,7 @@ public class PageVO<T> {
private
Long
pages
;
private
List
<
T
>
list
;
private
Boolean
hasNext
;
private
JSONObject
info
;
public
static
<
K
,
T
>
PageVO
<
K
>
createPageVo
(
MongoUtil
.
PageHelper
<
T
>
pageHelper
,
List
<
K
>
jsonObjects
)
{
PageVO
<
K
>
pageVO
=
new
PageVO
<>();
...
...
@@ -46,6 +48,10 @@ public class PageVO<T> {
return
pageVO
;
}
public
static
<
T
>
PageVO
<
T
>
createPageVo
(
long
total
,
int
pageNum
,
int
size
,
List
<
T
>
tList
)
{
return
createPageVo
(
total
,
pageNum
,
(
total
+
size
-
1
)
/
size
,
size
,
tList
);
}
public
static
<
T
>
PageVO
<
T
>
createPageVoNew
(
long
total
,
int
pageNum
,
int
size
,
List
<
T
>
tList
)
{
PageVO
<
T
>
pageVO
=
new
PageVO
<>();
long
pages
=
(
total
+
size
-
1
)
/
size
;
...
...
@@ -57,4 +63,9 @@ public class PageVO<T> {
pageVO
.
setHasNext
(
pageNum
<
pages
);
return
pageVO
;
}
public
PageVO
<
T
>
setInfo
(
JSONObject
info
){
this
.
info
=
info
;
return
this
;
}
}
src/main/java/com/zhiwei/brandkbs2/pojo/vo/ProjectVO.java
View file @
bfbe1fe4
...
...
@@ -138,7 +138,7 @@ public class ProjectVO {
project
.
setMergeSensitive
(
this
.
isMergeSensitive
());
project
.
setAvatarUrl
(
this
.
getAvatarUrl
());
project
.
setWholeSearchDataSource
(
this
.
getWholeSearchDataSource
());
project
.
setImportTime
(
this
.
getImportTime
());
project
.
setImportTime
(
this
.
getImportTime
()
.
getTime
()
);
project
.
setHasContend
(
null
!=
this
.
getContendList
());
project
.
setContendList
(
this
.
getContendList
());
project
.
setModuleShowList
(
this
.
getModuleShowList
());
...
...
@@ -148,8 +148,8 @@ public class ProjectVO {
project
.
setBlackChannelGroup
(
this
.
getBlackChannelGroup
());
project
.
setShow
(
true
);
project
.
setStart
(
false
);
project
.
setCTime
(
time
);
project
.
setUTime
(
time
);
project
.
setCTime
(
time
.
getTime
()
);
project
.
setUTime
(
time
.
getTime
()
);
return
project
;
}
...
...
src/main/java/com/zhiwei/brandkbs2/service/IMarkDataService.java
0 → 100644
View file @
bfbe1fe4
package
com
.
zhiwei
.
brandkbs2
.
service
;
import
com.zhiwei.brandkbs2.pojo.MarkFlowEntity
;
import
com.zhiwei.brandkbs2.pojo.dto.MarkSearchDTO
;
import
com.zhiwei.brandkbs2.pojo.vo.PageVO
;
/**
* @ClassName: IMarkDataService
* @Description: 标注数据服务抽象类
* @author: sjj
* @date: 2022-06-28 14:04
*/
public
interface
IMarkDataService
{
/**
* @param markSearchDTO 标注数据搜索传输类
* @return 返回结果
*/
PageVO
<
MarkFlowEntity
>
getYuqingMarkList
(
MarkSearchDTO
markSearchDTO
);
}
src/main/java/com/zhiwei/brandkbs2/
es
/ITaskService.java
→
src/main/java/com/zhiwei/brandkbs2/
service
/ITaskService.java
View file @
bfbe1fe4
package
com
.
zhiwei
.
brandkbs2
.
es
;
package
com
.
zhiwei
.
brandkbs2
.
service
;
/**
* @ClassName: ITaskService
...
...
src/main/java/com/zhiwei/brandkbs2/service/impl/BehaviorServiceImpl.java
View file @
bfbe1fe4
...
...
@@ -62,7 +62,7 @@ public class BehaviorServiceImpl implements IBehaviorService {
behavior
.
setUserId
(
userId
);
behavior
.
setProjectId
(
projectId
);
behavior
.
setIp
(
Tools
.
getIpAddress
(
request
));
behavior
.
setCTime
(
new
Date
());
behavior
.
setCTime
(
new
Date
()
.
getTime
()
);
behavior
.
setPage
(
operation
.
getPage
());
behavior
.
setModule
(
module
);
behavior
.
setBackstage
(
operation
.
isBackstage
());
...
...
@@ -113,7 +113,7 @@ public class BehaviorServiceImpl implements IBehaviorService {
Pair
<
String
,
Integer
>
nicknameAndRoleId
=
getNicknameAndRoleId
(
behavior
.
getUserId
(),
behavior
.
getProjectId
());
exportBehaviorDTO
.
setNickname
(
nicknameAndRoleId
.
getLeft
());
exportBehaviorDTO
.
setIp
(
behavior
.
getIp
());
exportBehaviorDTO
.
setTime
(
behavior
.
getCTime
(
));
exportBehaviorDTO
.
setTime
(
new
Date
(
behavior
.
getCTime
()
));
exportBehaviorDTO
.
setPage
(
behavior
.
getPage
());
exportBehaviorDTO
.
setModule
(
behavior
.
getModule
());
exportBehaviorDTO
.
setRole
(
RoleEnum
.
getNameByState
(
nicknameAndRoleId
.
getRight
()));
...
...
src/main/java/com/zhiwei/brandkbs2/service/impl/ChannelServiceImpl.java
View file @
bfbe1fe4
...
...
@@ -109,7 +109,7 @@ public class ChannelServiceImpl implements IChannelService {
});
return
PageVO
.
createPageVoNew
(
articleIds
.
size
(),
page
,
size
,
resList
);
}
catch
(
IOException
e
)
{
ExceptionCast
.
cast
(
CommonCodeEnum
.
FAIL
.
message
(
"查询异常"
));
ExceptionCast
.
cast
(
CommonCodeEnum
.
FAIL
.
message
(
"查询异常"
)
,
e
);
}
return
null
;
}
...
...
src/main/java/com/zhiwei/brandkbs2/service/impl/EventDataServiceImpl.java
View file @
bfbe1fe4
...
...
@@ -15,7 +15,6 @@ import org.springframework.stereotype.Service;
import
javax.annotation.Resource
;
import
java.util.Arrays
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.stream.Collectors
;
...
...
@@ -43,11 +42,11 @@ public class EventDataServiceImpl implements IEventDataService {
@Override
public
void
analysisEvent
(
Event
event
)
{
Date
startTime
=
event
.
getStartTime
();
Date
endTime
=
event
.
isEndStatus
()
?
event
.
getEndTime
()
:
new
Date
();
Period
periodDay
=
new
Period
(
startTime
.
getTime
(),
endTime
.
getTime
()
,
PeriodType
.
days
());
long
startTime
=
event
.
getStartTime
();
long
endTime
=
event
.
isEndStatus
()
?
event
.
getEndTime
()
:
System
.
currentTimeMillis
();
Period
periodDay
=
new
Period
(
startTime
,
endTime
,
PeriodType
.
days
());
//时间区间大于40天 就不更新
if
(
periodDay
.
getDays
()
>=
40
||
startTime
.
after
(
new
Date
()
))
{
if
(
periodDay
.
getDays
()
>=
40
||
startTime
>
System
.
currentTimeMillis
(
))
{
event
.
setEndTime
(
endTime
);
event
.
setEndStatus
(
true
);
eventDao
.
updateOne
(
event
);
...
...
@@ -55,7 +54,7 @@ public class EventDataServiceImpl implements IEventDataService {
return
;
}
//查询可能符合该事件时间段内的所有数据
List
<
EventData
>
eventDataList
=
esClientDao
.
searchByEvent
(
event
).
stream
().
map
(
map
->
EventData
.
createFromEsMap
(
map
,
event
)).
collect
(
Collectors
.
toList
());
List
<
EventData
>
eventDataList
=
esClientDao
.
search
MarkData
ByEvent
(
event
).
stream
().
map
(
map
->
EventData
.
createFromEsMap
(
map
,
event
)).
collect
(
Collectors
.
toList
());
log
.
info
(
"analysisEvent-eventId:{},查询可能符合该事件时间段内的所有数据:{}条"
,
event
.
getId
(),
eventDataList
.
size
());
//更新事件稿件信息
this
.
updateEventData
(
event
,
eventDataList
);
...
...
src/main/java/com/zhiwei/brandkbs2/service/impl/EventServiceImpl.java
View file @
bfbe1fe4
...
...
@@ -131,7 +131,7 @@ public class EventServiceImpl implements IEventService {
event
.
setCTime
(
existEvent
.
getCTime
());
eventDao
.
updateOne
(
event
);
}
else
{
event
.
setCTime
(
new
Date
());
event
.
setCTime
(
new
Date
()
.
getTime
()
);
eventDao
.
insertOne
(
event
);
}
if
(
count
.
incrementAndGet
()
==
yqEventList
.
size
())
{
...
...
@@ -300,7 +300,7 @@ public class EventServiceImpl implements IEventService {
public
void
updateEvent
(
EventVO
eventVO
)
{
Event
event
=
getEventById
(
eventVO
.
getId
());
event
.
setTitle
(
eventVO
.
getTitle
());
event
.
setStartTime
(
eventVO
.
getStartTime
());
event
.
setStartTime
(
eventVO
.
getStartTime
()
.
getTime
()
);
event
.
setKeyword
(
eventVO
.
getKeyword
());
// event.setEventTag(EventTagEnum.eventType(eventVO.getEventType()));
//对事件信息进行更新
...
...
@@ -432,7 +432,7 @@ public class EventServiceImpl implements IEventService {
return
;
}
Event
event
=
Event
.
createFromUploadEventDTO
(
eventDTO
,
eventDataDao
.
generateCollectionName
(),
projectId
,
linkedGroupId
);
event
.
setCTime
(
new
Date
());
event
.
setCTime
(
new
Date
()
.
getTime
()
);
eventDao
.
insertOne
(
event
);
}
...
...
@@ -470,8 +470,7 @@ public class EventServiceImpl implements IEventService {
}
String
group
=
projectService
.
getProjectByLinkedGroupId
(
linkedGroupId
).
getBrandLinkedGroup
();
ResponseEntity
<
JSONObject
>
entity
=
restTemplate
.
getForEntity
(
qbjcEventTagUrl
,
JSONObject
.
class
,
group
);
List
<
JSONObject
>
tagGroupList
=
Objects
.
requireNonNull
(
entity
.
getBody
()).
getJSONObject
(
"data"
).
getJSONObject
(
"tagList"
).
getJSONArray
(
tagGroupName
).
toJavaList
(
JSONObject
.
class
);
List
<
JSONObject
>
tagGroupList
=
Objects
.
requireNonNull
(
entity
.
getBody
()).
getJSONObject
(
"data"
).
getJSONObject
(
"tagList"
).
getJSONArray
(
tagGroupName
).
toJavaList
(
JSONObject
.
class
);
List
<
List
<
JSONObject
>>
partition
=
Lists
.
partition
(
tagGroupList
,
size
);
List
<
JSONObject
>
resultList
=
partition
.
get
(
page
-
1
);
resultList
=
resultList
.
stream
().
peek
(
json
->
{
...
...
@@ -506,7 +505,7 @@ public class EventServiceImpl implements IEventService {
private
List
<
ExportEventDataDTO
>
eventDataChange2ExportEventDataDTO
(
Event
event
,
List
<
EventData
>
eventDataList
)
{
return
eventDataList
.
stream
().
map
(
eventData
->
{
ExportEventDataDTO
eventDataDTO
=
new
ExportEventDataDTO
();
eventDataDTO
.
setTime
(
eventData
.
getTime
(
));
eventDataDTO
.
setTime
(
new
Date
(
eventData
.
getTime
()
));
eventDataDTO
.
setUrl
(
eventData
.
getUrl
());
eventDataDTO
.
setTitle
(
eventData
.
getTitle
());
eventDataDTO
.
setPlatform
(
eventData
.
getPlatform
());
...
...
@@ -527,8 +526,8 @@ public class EventServiceImpl implements IEventService {
private
List
<
ExportEventDTO
>
getEventResult
(
List
<
Event
>
eventList
)
{
return
eventList
.
stream
().
map
(
event
->
{
ExportEventDTO
eventDTO
=
new
ExportEventDTO
();
eventDTO
.
setStartTime
(
event
.
getStartTime
(
));
eventDTO
.
setEndTime
(
event
.
getEndTime
(
));
eventDTO
.
setStartTime
(
new
Date
(
event
.
getStartTime
()
));
eventDTO
.
setEndTime
(
new
Date
(
event
.
getEndTime
()
));
eventDTO
.
setTitle
(
event
.
getTitle
());
//根据事件ID获取首发稿件信息
EventData
eventData
=
eventDataDao
.
findFirstData
(
event
.
getId
(),
event
.
getCollectionName
());
...
...
src/main/java/com/zhiwei/brandkbs2/service/impl/MarkDataServiceImpl.java
0 → 100644
View file @
bfbe1fe4
package
com
.
zhiwei
.
brandkbs2
.
service
.
impl
;
import
com.alibaba.fastjson.JSONObject
;
import
com.google.common.collect.ImmutableMap
;
import
com.zhiwei.brandkbs2.auth.UserThreadLocal
;
import
com.zhiwei.brandkbs2.common.GenericAttribute
;
import
com.zhiwei.brandkbs2.common.GlobalPojo
;
import
com.zhiwei.brandkbs2.es.EsClientDao
;
import
com.zhiwei.brandkbs2.es.EsQueryTools
;
import
com.zhiwei.brandkbs2.exception.ExceptionCast
;
import
com.zhiwei.brandkbs2.model.CommonCodeEnum
;
import
com.zhiwei.brandkbs2.pojo.MarkFlowEntity
;
import
com.zhiwei.brandkbs2.pojo.dto.MarkSearchDTO
;
import
com.zhiwei.brandkbs2.pojo.vo.PageVO
;
import
com.zhiwei.brandkbs2.service.IMarkDataService
;
import
com.zhiwei.brandkbs2.service.IProjectService
;
import
com.zhiwei.brandkbs2.util.AggreeUtil
;
import
com.zhiwei.brandkbs2.util.Tools
;
import
com.zhiwei.qbjc.bean.pojo.common.MessagePlatform
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.time.DateUtils
;
import
org.apache.commons.lang3.tuple.Pair
;
import
org.elasticsearch.index.query.BoolQueryBuilder
;
import
org.elasticsearch.index.query.QueryBuilders
;
import
org.elasticsearch.search.SearchHits
;
import
org.elasticsearch.search.sort.FieldSortBuilder
;
import
org.elasticsearch.search.sort.SortBuilders
;
import
org.elasticsearch.search.sort.SortOrder
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.io.IOException
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
* @ClassName: MarkDataServiceImpl
* @Description
* @author: sjj
* @date: 2022-06-28 14:07
*/
@Service
(
"markDataServiceImpl"
)
public
class
MarkDataServiceImpl
implements
IMarkDataService
{
@Resource
(
name
=
"projectServiceImpl"
)
private
IProjectService
projectService
;
@Resource
(
name
=
"esClientDao"
)
private
EsClientDao
esClientDao
;
@Override
public
PageVO
<
MarkFlowEntity
>
getYuqingMarkList
(
MarkSearchDTO
markSearchDTO
)
{
try
{
defaultMarkSearch
(
markSearchDTO
);
// 搜索es数据
Pair
<
SearchHits
,
Map
<
String
,
Long
>>
hitsAndCounts
=
searchMarkHitsAndCount
(
markSearchDTO
);
// 总量
long
total
=
hitsAndCounts
.
getLeft
().
getTotalHits
().
value
>
10000
?
10000
:
hitsAndCounts
.
getLeft
().
getTotalHits
().
value
;
// 消息流结果
List
<
MarkFlowEntity
>
flowEntityList
;
// 是否需要聚合,文档数>1才能聚合
if
(
markSearchDTO
.
isAggregation
()
&&
total
>
1
)
{
List
<
List
<
JSONObject
>>
groupList
=
aggregation
(
hitsAndCounts
.
getLeft
(),
"id"
);
flowEntityList
=
groupList
.
stream
().
map
(
MarkFlowEntity:
:
getInstance
).
collect
(
Collectors
.
toList
());
}
else
{
flowEntityList
=
Arrays
.
stream
(
hitsAndCounts
.
getLeft
().
getHits
()).
map
(
MarkFlowEntity:
:
new
).
collect
(
Collectors
.
toList
());
}
return
PageVO
.
createPageVo
(
total
,
markSearchDTO
.
getPage
(),
markSearchDTO
.
getPageSize
(),
flowEntityList
)
// 各平台计量
.
setInfo
(
new
JSONObject
(
ImmutableMap
.
of
(
"count"
,
hitsAndCounts
.
getRight
())));
}
catch
(
IOException
e
)
{
ExceptionCast
.
cast
(
CommonCodeEnum
.
FAIL
.
message
(
"es检索异常"
));
}
return
null
;
}
private
void
defaultMarkSearch
(
MarkSearchDTO
markSearchDTO
)
{
// 时间范围默认一个月
if
(
Objects
.
isNull
(
markSearchDTO
.
getStartTime
())
||
Objects
.
isNull
(
markSearchDTO
.
getEndTime
()))
{
Date
now
=
new
Date
();
markSearchDTO
.
setEndTime
(
now
.
getTime
());
markSearchDTO
.
setStartTime
(
DateUtils
.
addDays
(
now
,
-
29
).
getTime
());
}
// 页码默认
if
(
markSearchDTO
.
getPage
()
<
1
)
{
markSearchDTO
.
setPage
(
1
);
}
if
(
markSearchDTO
.
getPageSize
()
<=
0
||
markSearchDTO
.
getPageSize
()
>
10000
)
{
markSearchDTO
.
setPageSize
(
20
);
}
}
private
Pair
<
SearchHits
,
Map
<
String
,
Long
>>
searchMarkHitsAndCount
(
MarkSearchDTO
dto
)
throws
IOException
{
// 获取索引
String
[]
indexes
=
esClientDao
.
getIndexes
();
// PostFilter 后置过滤器
BoolQueryBuilder
postFilter
=
QueryBuilders
.
boolQuery
();
// linkedGroupId projectId
postFilter
.
must
(
QueryBuilders
.
termQuery
(
"brandkbs_cache_maps.linkedGroupId.keyword"
,
dto
.
getLinkedGroupId
())).
must
(
QueryBuilders
.
termQuery
(
"brandkbs_cache_maps.projectId.keyword"
,
UserThreadLocal
.
getProjectId
())
);
// time
postFilter
.
must
(
QueryBuilders
.
rangeQuery
(
dto
.
getTimeType
()).
lte
(
dto
.
getStartTime
()).
lt
(
dto
.
getEndTime
()));
// platform
if
(
CollectionUtils
.
isNotEmpty
(
dto
.
getPlatforms
()))
{
postFilter
.
must
(
EsQueryTools
.
assemblePlatformQuery
(
Tools
.
getPlatformByIds
(
dto
.
getPlatforms
())));
}
// mediaTypes ???
// tags
if
(
CollectionUtils
.
isNotEmpty
(
dto
.
getTags
()))
{
postFilter
.
must
(
EsQueryTools
.
assembleTagQuery
(
dto
.
getTags
()));
}
// customTags
if
(
CollectionUtils
.
isNotEmpty
(
dto
.
getCustomTags
()))
{
postFilter
.
must
(
EsQueryTools
.
assembleTagQuery
(
dto
.
getCustomTags
()));
}
// Query 查询条件
BoolQueryBuilder
query
=
QueryBuilders
.
boolQuery
();
// keyword
if
(
StringUtils
.
isNotEmpty
(
dto
.
getKeyword
()))
{
// Query
String
[]
fieldSearch
=
"标题"
.
equals
(
dto
.
getSearchField
())
?
new
String
[]{
GenericAttribute
.
ES_IND_TITLE
}
:
new
String
[]{
GenericAttribute
.
ES_IND_FULL_TEXT
};
query
.
must
(
EsQueryTools
.
assembleNormalKeywordQuery
(
dto
.
getKeyword
(),
fieldSearch
));
}
// sourceKeyword
if
(
StringUtils
.
isNotEmpty
(
dto
.
getSourceKeyword
()))
{
query
.
must
(
QueryBuilders
.
matchQuery
(
GenericAttribute
.
ES_SOURCE
,
dto
.
getSourceKeyword
()));
}
// sort
FieldSortBuilder
sort
=
SortBuilders
.
fieldSort
(
GenericAttribute
.
ES_GID
).
order
(
SortOrder
.
DESC
);
// from size
int
from
=
(
dto
.
getPage
()
-
1
)
*
dto
.
getPageSize
();
// HighlightBuilder ???
SearchHits
searchHits
=
esClientDao
.
searchHits
(
indexes
,
postFilter
,
query
,
sort
,
from
,
dto
.
getPageSize
(),
null
);
//平台计量统计 仅第一页且无平台限制
Map
<
String
,
Long
>
counts
=
new
HashMap
<>();
if
(
1
==
dto
.
getPage
()
&&
CollectionUtils
.
isEmpty
(
dto
.
getPlatforms
()))
{
for
(
MessagePlatform
platform
:
GlobalPojo
.
PLATFORMS
)
{
BoolQueryBuilder
queryBuilder
=
QueryBuilders
.
boolQuery
()
.
must
(
query
)
.
must
(
EsQueryTools
.
assemblePlatformQuery
(
Collections
.
singletonList
(
platform
)));
Long
count
=
esClientDao
.
count
(
indexes
,
postFilter
,
queryBuilder
);
counts
.
put
(
platform
.
getName
(),
count
);
}
}
return
Pair
.
of
(
searchHits
,
counts
);
}
private
List
<
List
<
JSONObject
>>
aggregation
(
SearchHits
searchHits
,
String
uniqueField
)
{
List
<
JSONObject
>
jsonList
=
Arrays
.
stream
(
searchHits
.
getHits
()).
map
(
hit
->
new
JSONObject
(
hit
.
getSourceAsMap
())).
collect
(
Collectors
.
toList
());
Map
<
String
,
String
>
idTitle
=
jsonList
.
stream
().
collect
(
Collectors
.
toMap
(
json
->
json
.
getString
(
uniqueField
),
json
->
Tools
.
getBaseFromEsMap
(
json
).
getTitle
()));
List
<
List
<
String
>>
kResult
=
AggreeUtil
.
getKResult
(
idTitle
);
return
AggreeUtil
.
sortByTimeAsc
(
kResult
,
jsonList
,
uniqueField
);
}
}
\ No newline at end of file
src/main/java/com/zhiwei/brandkbs2/service/impl/ProjectServiceImpl.java
View file @
bfbe1fe4
...
...
@@ -248,7 +248,7 @@ public class ProjectServiceImpl implements IProjectService {
lists
=
new
ArrayList
<>();
user
.
getRoles
().
forEach
(
userRole
->
{
lists
.
add
(
projectDao
.
findOneById
(
userRole
.
getProjectId
()));
roleExpired
.
put
(
userRole
.
getProjectId
(),
userRole
.
getExpiredTime
(
));
roleExpired
.
put
(
userRole
.
getProjectId
(),
new
Date
(
userRole
.
getExpiredTime
()
));
});
}
return
lists
.
stream
().
filter
(
Project:
:
isShow
).
map
(
project
->
{
...
...
src/main/java/com/zhiwei/brandkbs2/service/impl/TaskServiceImpl.java
View file @
bfbe1fe4
...
...
@@ -3,9 +3,9 @@ package com.zhiwei.brandkbs2.service.impl;
import
com.zhiwei.brandkbs2.dao.IChannelDao
;
import
com.zhiwei.brandkbs2.dao.IEventDataDao
;
import
com.zhiwei.brandkbs2.es.EsClientDao
;
import
com.zhiwei.brandkbs2.es.ITaskService
;
import
com.zhiwei.brandkbs2.pojo.Channel
;
import
com.zhiwei.brandkbs2.pojo.ChannelIndex
;
import
com.zhiwei.brandkbs2.service.ITaskService
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.springframework.stereotype.Service
;
...
...
src/main/java/com/zhiwei/brandkbs2/service/impl/UserServiceImpl.java
View file @
bfbe1fe4
...
...
@@ -167,9 +167,7 @@ public class UserServiceImpl implements IUserService {
user
.
getRoles
().
stream
().
filter
(
userRoles
->
userRoles
.
getProjectId
().
equals
(
userDTO
.
getProjectId
())).
findAny
().
ifPresent
(
userRole
->
{
// 更新原userRole
userRole
.
setRoleId
(
userDTO
.
getRoleId
());
OptionalLong
.
of
(
userDTO
.
getExpiredTime
()).
ifPresent
(
expiredTime
->
{
userRole
.
setExpiredTime
(
new
Date
(
expiredTime
));
});
OptionalLong
.
of
(
userDTO
.
getExpiredTime
()).
ifPresent
(
userRole:
:
setExpiredTime
);
OptionalInt
.
of
(
userDTO
.
getExportAmount
()).
ifPresent
(
userRole:
:
setExportAmount
);
userDao
.
updateOneByIdWithField
(
userDTO
.
getId
(),
new
Update
().
set
(
"roles"
,
roles
));
});
...
...
@@ -282,7 +280,7 @@ public class UserServiceImpl implements IUserService {
User
user
=
new
User
();
user
.
setId
(
userDTO
.
getId
());
user
.
setNickname
(
userDTO
.
getNickname
());
user
.
setCTime
(
new
Date
());
user
.
setCTime
(
System
.
currentTimeMillis
());
user
.
setUsername
(
userDTO
.
getUsername
());
user
.
setPhoneNumber
(
userDTO
.
getPhoneNumber
());
if
(
RoleEnum
.
SUPER_ADMIN
.
getState
()
==
userDTO
.
getRoleId
())
{
...
...
src/main/java/com/zhiwei/brandkbs2/util/AggreeUtil.java
0 → 100644
View file @
bfbe1fe4
package
com
.
zhiwei
.
brandkbs2
.
util
;
import
com.alibaba.fastjson.JSONObject
;
import
com.google.common.collect.ImmutableMap
;
import
com.google.common.collect.Maps
;
import
com.zhiwei.brandkbs2.common.GenericAttribute
;
import
com.zhiwei.nlp.AggreeBootStarter
;
import
com.zhiwei.nlp.common.AggreeConfig
;
import
com.zhiwei.nlp.vo.KResult
;
import
java.util.Comparator
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
* @ClassName: AggreeUtil
* @Description 聚合工具类
* @author: sjj
* @date: 2022-06-29 17:07
*/
public
class
AggreeUtil
{
private
static
final
Double
LIMIT
=
0.1
;
private
static
final
String
DEFAULT_SORT_FIELD
=
GenericAttribute
.
ES_TIME
;
static
{
// 开启符号过滤以及关闭英文字母和数字过滤
AggreeConfig
.
getSetter
().
setFilterSymbol
(
true
).
setFilterEng
(
false
).
setSimplifiedChinese
(
true
);
}
public
static
<
T
>
List
<
List
<
T
>>
getKResult
(
Map
<
T
,
String
>
listMap
)
{
return
AggreeBootStarter
.
getKResult
(
listMap
,
LIMIT
).
stream
().
map
(
KResult:
:
getDataPoints
).
collect
(
Collectors
.
toList
());
}
public
static
<
T
>
List
<
List
<
JSONObject
>>
sortByTimeAsc
(
List
<
List
<
T
>>
kResultList
,
List
<
JSONObject
>
sourceList
,
String
tField
)
{
ImmutableMap
<
T
,
JSONObject
>
idMap
=
Maps
.
uniqueIndex
(
sourceList
,
json
->
(
T
)
json
.
get
(
tField
));
// 还原数据
return
kResultList
.
stream
().
map
(
gList
->
gList
.
stream
().
map
(
idMap:
:
get
).
sorted
(
Comparator
.
comparingLong
(
o
->
o
.
getLong
(
DEFAULT_SORT_FIELD
))).
collect
(
Collectors
.
toList
())
).
collect
(
Collectors
.
toList
());
}
}
src/main/java/com/zhiwei/brandkbs2/util/FlowEntityUtil.java
0 → 100644
View file @
bfbe1fe4
package
com
.
zhiwei
.
brandkbs2
.
util
;
import
com.alibaba.fastjson.JSONObject
;
import
com.zhiwei.base.category.ClassB
;
import
com.zhiwei.base.entity.subclass.CompleteText
;
import
com.zhiwei.base.entity.subclass.IncompleteText
;
import
com.zhiwei.base.entity.subclass.QAText
;
import
com.zhiwei.base.entity.subclass.Video
;
import
com.zhiwei.brandkbs2.common.GenericAttribute
;
/**
* @Description:FlowEntityUtil 消息流实体工具类
* @Author: shentao
* @Date: 2021/11/30 15:44
*/
public
class
FlowEntityUtil
{
public
static
JSONObject
getVideoType
(
Video
info
)
{
JSONObject
type
=
new
JSONObject
();
type
.
put
(
"type"
,
getType
(
info
.
getC2
()));
type
.
put
(
"fold"
,
false
);
return
type
;
}
public
static
JSONObject
getQaTextType
(
QAText
info
)
{
JSONObject
type
=
new
JSONObject
();
type
.
put
(
"type"
,
getType
(
info
.
getC2
()));
type
.
put
(
"question"
,
info
.
question
());
type
.
put
(
"fold"
,
false
);
return
type
;
}
public
static
JSONObject
getCompleteTextType
(
CompleteText
info
)
{
JSONObject
type
=
new
JSONObject
();
type
.
put
(
"type"
,
getType
(
info
.
getC2
()));
type
.
put
(
"fold"
,
false
);
return
type
;
}
public
static
JSONObject
getIncompleteTextType
(
IncompleteText
info
)
{
JSONObject
type
=
new
JSONObject
();
type
.
put
(
"type"
,
getType
(
info
.
getC2
()));
type
.
put
(
"forward"
,
info
.
getIsForward
());
type
.
put
(
"fold"
,
false
);
return
type
;
}
private
static
String
getType
(
int
c2
)
{
// COMPLETE(1), INCOMPLETE(2), QA(3), IMAGE(4), VIDEO(5), VOICE(6), OTHER(7);
switch
(
ClassB
.
TypeB
.
fromEncode
(
c2
))
{
case
COMPLETE:
return
"complete_text"
;
case
INCOMPLETE:
return
"incomplete_text"
;
case
QA:
return
"qa_text"
;
case
VIDEO:
return
"video"
;
default
:
break
;
}
return
null
;
}
public
static
JSONObject
getMessageFlowEntityType
(
JSONObject
msgJson
)
{
int
c2
=
msgJson
.
getIntValue
(
GenericAttribute
.
ES_C2
);
switch
(
ClassB
.
TypeB
.
fromEncode
(
c2
))
{
case
COMPLETE:
CompleteText
completeText
=
CompleteText
.
restoreFromEs
(
msgJson
);
return
getCompleteTextType
(
completeText
);
case
INCOMPLETE:
IncompleteText
incompleteText
=
IncompleteText
.
restoreFromEs
(
msgJson
);
return
getIncompleteTextType
(
incompleteText
);
case
QA:
QAText
qaText
=
QAText
.
restoreFromEs
(
msgJson
);
return
getQaTextType
(
qaText
);
case
VIDEO:
Video
video
=
Video
.
restoreFromEs
(
msgJson
);
return
getVideoType
(
video
);
default
:
break
;
}
return
null
;
}
}
src/main/java/com/zhiwei/brandkbs2/util/Tools.java
View file @
bfbe1fe4
...
...
@@ -13,8 +13,11 @@ import com.zhiwei.brandkbs2.common.GlobalPojo;
import
com.zhiwei.brandkbs2.easyexcel.dto.UploadKeywordDTO
;
import
com.zhiwei.brandkbs2.model.ResponseResult
;
import
com.zhiwei.brandkbs2.pojo.BaseMap
;
import
com.zhiwei.qbjc.bean.pojo.common.MessagePlatform
;
import
com.zhiwei.qbjc.bean.pojo.common.Tag
;
import
com.zhiwei.qbjc.bean.tools.BeanTools
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.MapUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.time.FastDateFormat
;
import
org.dozer.DozerBeanMapper
;
...
...
@@ -34,6 +37,7 @@ import java.util.regex.Pattern;
import
java.util.stream.Collectors
;
import
static
com
.
zhiwei
.
brandkbs2
.
common
.
GenericAttribute
.
ES_MARK_CACHE_MAPS
;
import
static
java
.
util
.
Objects
.
nonNull
;
/**
* @ClassName: Tools
...
...
@@ -348,6 +352,11 @@ public class Tools {
return
BeanTools
.
filterPlatform
(
GlobalPojo
.
PLATFORMS
,
c5
,
foreign
).
getName
();
}
public
static
List
<
MessagePlatform
>
getPlatformByIds
(
List
<
String
>
ids
)
{
return
GlobalPojo
.
PLATFORMS
.
stream
().
filter
(
pt
->
ids
.
contains
(
pt
.
getId
()))
.
collect
(
Collectors
.
toList
());
}
public
static
String
getEmotion
(
Map
<
String
,
Object
>
map
)
{
List
<
Map
<
String
,
Object
>>
cacheMaps
=
(
List
<
Map
<
String
,
Object
>>)
map
.
get
(
ES_MARK_CACHE_MAPS
);
for
(
Map
<
String
,
Object
>
cacheMap
:
cacheMaps
)
{
...
...
@@ -374,6 +383,41 @@ public class Tools {
return
res
;
}
/**
* 过滤 html
* @param str
* @return
*/
public
static
String
filterStrHtmlTag
(
String
str
)
{
str
=
str
.
replaceAll
(
"<"
,
"<"
);
return
str
.
replaceAll
(
">"
,
">"
);
}
/**
* 是否为空,数据为空
*
* @param @param obj
* @param @return 设定文件
* @return boolean 返回类型
* @Title: isEmpty
* @Description: 是否为空,数据为空
*/
public
static
boolean
isEmpty
(
Object
obj
)
{
if
(!
nonNull
(
obj
))
{
return
true
;
}
if
((
obj
instanceof
List
))
{
return
CollectionUtils
.
isEmpty
((
List
<?>)
obj
);
}
if
((
obj
instanceof
String
))
{
return
StringUtils
.
isEmpty
((
String
)
obj
);
}
if
((
obj
instanceof
Map
))
{
return
MapUtils
.
isEmpty
((
Map
<?,
?>)
obj
);
}
return
false
;
}
// public static String getEmotionByMtag(String mtag, String group) {
// if (StringUtils.isEmpty(mtag)) {
// return null;
...
...
src/main/resources/application-dev.properties
View file @
bfbe1fe4
application.name
=
brandkbs2
test
=
false
#jwt
jwt.key
=
Token
jwt.hour
=
120
...
...
@@ -7,7 +6,7 @@ jwt.hour=120
brandkbs.file.url
=
/usr/local/sources/brandkbs2/files/
brandkbs.img.url
=
/usr/local/sources/brandkbs2/images/
brandkbs.head.url
=
/usr/local/sources/brandkbs2/head/
brandkbs.image.url
=
https://brandkbs2.zhiweidata.com/brandkbs2/images/
brandkbs.image.url
=
https://brandkbs2.
test.
zhiweidata.com/brandkbs2/images/
#redis
spring.redis.host
=
192.168.0.39
...
...
@@ -23,18 +22,19 @@ mongo.autoConnectRetry=true
mongo.socketKeepAlive
=
true
mongo.socketTimeout
=
120000
mongo.slaveOk
=
true
primary.uri
=
mongodb://
qbjcuser:qbjc1q2w3e4r@202.107.192.94:30000
/qbjc?authSource=admin
secondary.uri
=
mongodb://qbjcuser:qbjc1q2w3e4r@
202.107.192.94:30000
/qbjc?authSource=admin
primary.uri
=
mongodb://
brandkbs2:3vh65l$i6qQA@192.168.0.150:27017,192.168.0.151:27017,192.168.0.152:27017
/qbjc?authSource=admin
secondary.uri
=
mongodb://qbjcuser:qbjc1q2w3e4r@
192.168.0.150:27017,192.168.0.151:27017,192.168.0.152:27017
/qbjc?authSource=admin
#es
es.clusterNodes
=
192.168.0.130:9200
es.clusterName
=
zhiweidata-new-es
es.httpClusterNodes
=
192.168.0.130:9200:qbjc-back:yuqing.zhiweidata.com,192.168.0.51:9400:elastic:qWxZRW42OHkuOhmF5AXX
es.username
=
es.password
=
es.username
=
brandkbs2
es.password
=
3vh65l$i6qQA
es.index.test
=
true
#channel-index
channel.index.registry
=
zookeeper://192.168.0.
203:2182?backup=192.168.0.104:2182,192.168.0.105
:2182
channel.index.registry
=
zookeeper://192.168.0.
104:2182?backup=192.168.0.105:2182,192.168.0.203
:2182
channel.index.consumer.group
=
channel-index-release
channel.index.application.name
=
brandkbs2
#\u5916\u90E8\u63A5\u53E3
...
...
src/main/resources/application-local.properties
View file @
bfbe1fe4
application.name
=
brandkbs2
test
=
true
#jwt
jwt.key
=
Token
jwt.hour
=
120
...
...
@@ -33,6 +32,7 @@ es.clusterName=my-application
es.httpClusterNodes
=
127.0.0.1:9300
es.username
=
es.password
=
es.index.test
=
true
#channel-index
channel.index.registry
=
zookeeper://192.168.0.11:2182?backup=192.168.0.30:2182,192.168.0.35:2182&timeout=60000
...
...
src/main/resources/application-pro.properties
→
src/main/resources/application-pro
d
.properties
View file @
bfbe1fe4
application.name
=
brandkbs2
test
=
false
#jwt
jwt.key
=
Token
...
...
@@ -24,18 +23,19 @@ mongo.autoConnectRetry=true
mongo.socketKeepAlive
=
true
mongo.socketTimeout
=
120000
mongo.slaveOk
=
true
primary.uri
=
mongodb://
qbjcuser:qbjc1q2w3e4r@202.107.192.94:30000
/qbjc?authSource=admin
secondary.uri
=
mongodb://qbjcuser:qbjc1q2w3e4r@
202.107.192.94:30000
/qbjc?authSource=admin
primary.uri
=
mongodb://
brandkbs2:3vh65l$i6qQA@192.168.0.150:27017,192.168.0.151:27017,192.168.0.152:27017
/qbjc?authSource=admin
secondary.uri
=
mongodb://qbjcuser:qbjc1q2w3e4r@
192.168.0.150:27017,192.168.0.151:27017,192.168.0.152:27017
/qbjc?authSource=admin
#es
es.clusterNodes
=
192.168.0.130:9200
es.clusterName
=
zhiweidata-new-es
es.httpClusterNodes
=
192.168.0.130:9200:qbjc-back:yuqing.zhiweidata.com,192.168.0.51:9400:elastic:qWxZRW42OHkuOhmF5AXX
es.username
=
es.password
=
es.username
=
brandkbs2
es.password
=
3vh65l$i6qQA
es.index.test
=
true
#channel-index
channel.index.registry
=
zookeeper://192.168.0.
203:2182?backup=192.168.0.104:2182,192.168.0.105
:2182
channel.index.registry
=
zookeeper://192.168.0.
104:2182?backup=192.168.0.105:2182,192.168.0.203
:2182
channel.index.consumer.group
=
channel-index-release
channel.index.application.name
=
brandkbs2
#\u5916\u90E8\u63A5\u53E3
...
...
src/main/resources/application.properties
View file @
bfbe1fe4
server.port
=
8888
spring.profiles.active
=
local
spring.flyway.encoding
=
UTF-8
server.servlet.context-path
=
/brandkbs2
\ No newline at end of file
src/main/resources/log4j2.xml
0 → 100644
View file @
bfbe1fe4
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<!-- log4j2 自身的日志级别 -->
<Configuration
status=
"WARN"
>
<Properties>
<!-- 配置日志文件输出目录 -->
<Property
name=
"LOG_HOME"
>
./log/
</Property>
<property
name=
"APP_NAME"
>
brandkbs2
</property>
</Properties>
<Appenders>
<!-- 定义日志输出地 -->
<Console
name=
"Console"
target=
"SYSTEM_OUT"
>
<PatternLayout
pattern=
"%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} [%t] - %msg%n"
/>
</Console>
<!--[%t] -->
<!-- INFO级别日志 -->
<RollingFile
name=
"info_appender"
fileName=
"${LOG_HOME}/${APP_NAME}.log"
filePattern=
"${LOG_HOME}/${APP_NAME}-%d{yyyy-MM-dd}-%i.log"
>
<PatternLayout
pattern=
"%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} [%t] - %msg%n"
/>
<Filters>
<PushLogFilter
onMatch=
"NEUTRAL"
onMismatch=
"DENY"
/>
</Filters>
<Policies>
<TimeBasedTriggeringPolicy
/>
<SizeBasedTriggeringPolicy
size=
"20 MB"
/>
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Root
level=
"info"
>
<AppenderRef
ref=
"Console"
/>
<AppenderRef
ref=
"info_appender"
/>
</Root>
<!--<AsyncLogger level="info"> -->
<!--<AppenderRef ref="Console"/> -->
<!--<AppenderRef ref="info_appender"/> -->
<!--</AsyncLogger> -->
<!-- 所有的 logger 均继承 Root 当 additivity 为 true 时, 父子 logger 均会打印 当 additivity
为 false 时, 仅子 logger 会打印 -->
<Logger
name=
"mylog"
level=
"error"
additivity=
"false"
>
<AppenderRef
ref=
"Console"
/>
</Logger>
<!-- 屏蔽不需要的日志 -->
<Logger
name=
"org.apache.dubbo.monitor"
level=
"OFF"
/>
<Logger
name=
"com.zhiwei.wechat.search"
level=
"OFF"
/>
</Loggers>
</Configuration>
src/main/resources/pushlog.properties
View file @
bfbe1fe4
...
...
@@ -10,8 +10,8 @@ dev.robot.push.filterclass=org.apache.dubbo.common.Version,com.alibaba.dubbo.com
dev.robot.push.level
=
error
dev.robot.push.app.name
=
brandkbs2
pro.robot.push.address
=
https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=e2218c6e-af6a-4296-9d75-7178b941a3b5
pro.robot.push.enable
=
false
pro.robot.push.filterclass
=
org.apache.dubbo.common.Version,com.alibaba.dubbo.common.Version,org.apache.dubbo.monitor.dubbo.DubboMonitor,com.alibaba.dubbo.monitor.dubbo.DubboMonitor
pro.robot.push.level
=
error
pro.robot.push.app.name
=
brandkbs2
\ No newline at end of file
prod.robot.push.address
=
https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=e2218c6e-af6a-4296-9d75-7178b941a3b5
prod.robot.push.enable
=
false
prod.robot.push.filterclass
=
org.apache.dubbo.common.Version,com.alibaba.dubbo.common.Version,org.apache.dubbo.monitor.dubbo.DubboMonitor,com.alibaba.dubbo
\.
monitor.dubbo.DubboMonitor
prod.robot.push.level
=
error
prod.robot.push.app.name
=
brandkbs2
\ No newline at end of file
src/test/java/com/zhiwei/brandkbs2/TestRunWith.java
View file @
bfbe1fe4
...
...
@@ -3,7 +3,7 @@ package com.zhiwei.brandkbs2;
import
com.alibaba.fastjson.JSONObject
;
import
com.zhiwei.brandkbs2.dao.IChannelLabelDao
;
import
com.zhiwei.brandkbs2.dao.IEventDataDao
;
import
com.zhiwei.brandkbs2.
es
.ITaskService
;
import
com.zhiwei.brandkbs2.
service
.ITaskService
;
import
com.zhiwei.brandkbs2.pojo.ChannelIndex
;
import
lombok.extern.slf4j.Slf4j
;
import
org.junit.Test
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment