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
dda6e7ed
Commit
dda6e7ed
authored
Apr 19, 2024
by
shenjunjie
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature' into 'release'
Feature See merge request
!486
parents
afbb7c1a
fa2a2247
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
19 additions
and
160 deletions
+19
-160
src/main/java/com/zhiwei/brandkbs2/controller/InterfaceController.java
+0
-9
src/main/java/com/zhiwei/brandkbs2/pojo/external/BrandkbsYuQingConfigNew.java
+10
-0
src/main/java/com/zhiwei/brandkbs2/service/ProjectWarnService.java
+0
-8
src/main/java/com/zhiwei/brandkbs2/service/impl/ProjectWarnServiceImpl.java
+9
-143
No files found.
src/main/java/com/zhiwei/brandkbs2/controller/InterfaceController.java
View file @
dda6e7ed
...
@@ -55,17 +55,8 @@ public class InterfaceController {
...
@@ -55,17 +55,8 @@ public class InterfaceController {
@ApiOperation
(
"获取舆情动态-预警结果"
)
@ApiOperation
(
"获取舆情动态-预警结果"
)
@PostMapping
(
"/warn/yuqing"
)
@PostMapping
(
"/warn/yuqing"
)
@Deprecated
public
ResponseResult
getYuqingWaring
(
@RequestBody
JSONObject
json
)
{
public
ResponseResult
getYuqingWaring
(
@RequestBody
JSONObject
json
)
{
String
projectId
=
json
.
getString
(
"projectId"
);
String
projectId
=
json
.
getString
(
"projectId"
);
BrandkbsYuQingConfig
config
=
json
.
getObject
(
"config"
,
BrandkbsYuQingConfig
.
class
);
return
projectWarnService
.
getYuqingWaring
(
projectId
,
config
);
}
@ApiOperation
(
"获取舆情动态-预警结果"
)
@PostMapping
(
"/warn/yuqingNew"
)
public
ResponseResult
getYuqingWaringNew
(
@RequestBody
JSONObject
json
)
{
String
projectId
=
json
.
getString
(
"projectId"
);
BrandkbsYuQingConfigNew
config
=
json
.
getObject
(
"config"
,
BrandkbsYuQingConfigNew
.
class
);
BrandkbsYuQingConfigNew
config
=
json
.
getObject
(
"config"
,
BrandkbsYuQingConfigNew
.
class
);
return
projectWarnService
.
getYuqingWaringNew
(
projectId
,
config
);
return
projectWarnService
.
getYuqingWaringNew
(
projectId
,
config
);
}
}
...
...
src/main/java/com/zhiwei/brandkbs2/pojo/external/BrandkbsYuQingConfigNew.java
View file @
dda6e7ed
...
@@ -19,6 +19,16 @@ public class BrandkbsYuQingConfigNew {
...
@@ -19,6 +19,16 @@ public class BrandkbsYuQingConfigNew {
private
String
channel
;
private
String
channel
;
/**
/**
* 屏蔽关键字命中
*/
private
String
noiseKeyword
;
/**
* 屏蔽自定义渠道
*/
private
String
noiseChannel
;
/**
* 行政级别
* 行政级别
*/
*/
private
List
<
String
>
politicsLevels
;
private
List
<
String
>
politicsLevels
;
...
...
src/main/java/com/zhiwei/brandkbs2/service/ProjectWarnService.java
View file @
dda6e7ed
...
@@ -23,14 +23,6 @@ public interface ProjectWarnService {
...
@@ -23,14 +23,6 @@ public interface ProjectWarnService {
ResponseResult
getProjectWarnCriteriaDefault
(
String
projectId
,
String
type
);
ResponseResult
getProjectWarnCriteriaDefault
(
String
projectId
,
String
type
);
/**
/**
* 获取舆情动态预警
* @param projectId
* @param brandkbsYuQingConfig
* @return
*/
ResponseResult
getYuqingWaring
(
String
projectId
,
BrandkbsYuQingConfig
brandkbsYuQingConfig
);
/**
* 获取舆情动态预警-新
* 获取舆情动态预警-新
* @param projectId
* @param projectId
* @param brandkbsYuQingConfigNew
* @param brandkbsYuQingConfigNew
...
...
src/main/java/com/zhiwei/brandkbs2/service/impl/ProjectWarnServiceImpl.java
View file @
dda6e7ed
...
@@ -302,89 +302,6 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
...
@@ -302,89 +302,6 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
return
new
BrandkbsWarnTemplate
(
firstCount
,
key1
,
key2
,
key3
,
key4
,
new
BrandkbsYuQingWarn
(
collect
));
return
new
BrandkbsWarnTemplate
(
firstCount
,
key1
,
key2
,
key3
,
key4
,
new
BrandkbsYuQingWarn
(
collect
));
}
}
@Deprecated
private
BrandkbsWarnTemplate
brandkbsWarnTemplate4Yuqing
(
BrandkbsYuQingConfig
config
,
List
<
BaseMap
>
datas
,
long
start
,
long
end
,
AbstractProject
project
)
{
if
(
datas
.
isEmpty
())
{
return
null
;
}
int
firstCount
=
datas
.
size
();
// key1
String
key1
=
"【品见】舆情动态-"
+
project
.
getProjectName
();
// key2
// String key2Header = "全部";
String
key2Header
=
""
;
StringBuilder
mediaChannel
=
new
StringBuilder
();
List
<
String
>
politicsLevels
=
config
.
getPoliticsLevels
();
List
<
String
>
fields
=
config
.
getFields
();
if
(
Tools
.
isEmpty
(
politicsLevels
)){
key2Header
+=
"【全部级别】"
;
}
else
if
(
politicsLevels
.
contains
(
"全部"
)){
key2Header
+=
"【重点级别】"
;
}
else
{
politicsLevels
.
forEach
(
politicsLevel
->
mediaChannel
.
append
(
politicsLevel
).
append
(
"、"
));
}
if
(
Tools
.
isEmpty
(
fields
))
{
if
(
0
!=
key2Header
.
length
())
{
key2Header
+=
"、"
;
key2Header
+=
"【全部领域】,"
;
}
else
{
key2Header
+=
"【全部领域】"
;
}
}
else
if
(
fields
.
contains
(
"全部"
))
{
if
(
0
!=
key2Header
.
length
())
{
key2Header
+=
"、"
;
key2Header
+=
"【重点领域】,"
;
}
else
{
key2Header
+=
"【重点领域】"
;
}
}
else
{
fields
.
forEach
(
field
->
mediaChannel
.
append
(
field
).
append
(
"、"
));
}
if
(
0
!=
mediaChannel
.
length
())
{
if
(
0
!=
key2Header
.
length
())
{
key2Header
+=
"、"
;
}
// 替换“全部” 并去掉末位的、
key2Header
+=
mediaChannel
.
deleteCharAt
(
mediaChannel
.
length
()
-
1
).
toString
();
key2Header
+=
"媒体,"
;
}
StringBuilder
dataType
=
new
StringBuilder
();
config
.
getMarkerTags
().
forEach
(
emotion
->
dataType
.
append
(
emotion
).
append
(
" "
));
dataType
.
append
(
"(本品)"
);
// 如果有竞品
if
(
CollectionUtils
.
isNotEmpty
(
config
.
getContends
()))
{
dataType
.
append
(
","
);
config
.
getContends
().
forEach
(
contend
->
dataType
.
append
(
projectService
.
getProjectByContendId
(
project
.
getId
(),
contend
).
getBrandName
()).
append
(
" "
));
dataType
.
append
(
"(竞品)"
);
}
String
key2
=
key2Header
+
dataType
;
// key3
String
key3
=
Constant
.
SPEC_MINUTE_FORMAT
.
format
(
start
)
+
" ~ "
+
Constant
.
SPEC_MINUTE_FORMAT
.
format
(
end
);
// key4
String
key4
;
StringBuilder
keyBuilder4
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
Math
.
min
(
datas
.
size
(),
2
);
i
++)
{
BaseMap
baseMap
=
datas
.
get
(
i
);
String
platform
=
baseMap
.
getPlatform
();
String
source
=
baseMap
.
getSource
();
String
title
=
baseMap
.
getTitle
();
keyBuilder4
.
append
(
platform
).
append
(
"-"
).
append
(
source
).
append
(
"\r\n"
);
// 最后一条
if
(
datas
.
size
()
==
i
+
1
)
{
keyBuilder4
.
append
(
i
+
1
).
append
(
"、"
).
append
(
title
);
}
else
{
keyBuilder4
.
append
(
i
+
1
).
append
(
"、"
).
append
(
title
).
append
(
"\r\n"
);
}
}
if
(
datas
.
size
()
>
2
)
{
key4
=
keyBuilder4
.
append
(
"..."
).
toString
();
}
else
{
key4
=
keyBuilder4
.
toString
();
}
List
<
BaseMapCompound
>
collect
=
datas
.
stream
().
map
(
baseMap
->
BaseMapCompound
.
createFromBaseMap
(
baseMap
,
project
.
getId
())).
collect
(
Collectors
.
toList
());
return
new
BrandkbsWarnTemplate
(
firstCount
,
key1
,
key2
,
key3
,
key4
,
new
BrandkbsYuQingWarn
(
collect
));
}
private
BrandkbsWarnTemplate
brandkbsWarnTemplate4Channel
(
BrandkbsChannelConfig
config
,
List
<
BaseMap
>
datas
,
long
start
,
long
end
,
AbstractProject
project
)
{
private
BrandkbsWarnTemplate
brandkbsWarnTemplate4Channel
(
BrandkbsChannelConfig
config
,
List
<
BaseMap
>
datas
,
long
start
,
long
end
,
AbstractProject
project
)
{
if
(
datas
.
isEmpty
())
{
if
(
datas
.
isEmpty
())
{
return
null
;
return
null
;
...
@@ -703,65 +620,6 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
...
@@ -703,65 +620,6 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
}
}
@Override
@Override
@Deprecated
public
ResponseResult
getYuqingWaring
(
String
projectId
,
BrandkbsYuQingConfig
config
)
{
Project
project
=
null
;
long
end
=
System
.
currentTimeMillis
();
long
start
=
end
-
config
.
getPushInterval
();
try
{
project
=
projectService
.
getProjectById
(
projectId
);
log
.
info
(
"获取舆情动态预警开始,project:{}"
,
project
.
getProjectName
());
EsClientDao
.
SearchHelper
helper
=
EsClientDao
.
createSearchHelper
();
// 发声渠道
BoolQueryBuilder
postFilter
=
EsQueryTools
.
assembleCacheMapsQueryWithProject
(
projectId
,
config
);
// 时间(标注时间)
postFilter
.
must
(
QueryBuilders
.
rangeQuery
(
"mtime"
).
gte
(
start
).
lt
(
end
));
// 文章类型
if
(
CollectionUtils
.
isNotEmpty
(
config
.
getPrimary
())
&&
config
.
getPrimary
().
size
()
==
1
)
{
postFilter
.
must
(
EsQueryTools
.
assembleForwardQuery
(
config
.
getPrimary
().
get
(
0
)));
}
// 本品舆情+竞品舆情
BoolQueryBuilder
sourceBuilder
=
QueryBuilders
.
boolQuery
();
if
(
CollectionUtils
.
isNotEmpty
(
config
.
getMarkerTags
()))
{
config
.
getMarkerTags
().
forEach
(
tagName
->
sourceBuilder
.
should
(
QueryBuilders
.
termQuery
(
"brandkbs_mark_cache_maps.name.keyword"
,
tagName
)));
}
postFilter
.
must
(
sourceBuilder
);
EsQueryTools
.
assembleContendsQuery
(
postFilter
,
config
.
getContends
());
// postFilter.must(EsQueryTools.assembleNormalKeywordQuery(config.getKeyword(), new String[]{GenericAttribute.ES_IND_FULL_TEXT}));
helper
.
setPostFilter
(
postFilter
);
SearchHits
searchHits
=
esClientDao
.
searchHits
(
helper
);
log
.
info
(
"获取舆情动态预警-es搜索到数据:{}条,剩余关键词筛选未进行,project:{}"
,
searchHits
.
getHits
().
length
,
project
.
getProjectName
());
List
<
BaseMap
>
datas
=
Arrays
.
stream
(
searchHits
.
getHits
()).
map
(
hit
->
{
Map
<
String
,
Object
>
sourceMap
=
hit
.
getSourceAsMap
();
BaseMap
baseMap
=
Tools
.
getBaseFromEsMap
(
sourceMap
);
// 关键词命中
if
(!
Tools
.
isContains
(
config
.
getKeyword
(),
baseMap
.
getTitle
()
+
baseMap
.
getContent
()))
{
return
null
;
}
JSONObject
hitMap
=
Tools
.
getBrandkbsHitMapWithProjectId
(
sourceMap
,
projectId
);
String
contendId
=
hitMap
.
getString
(
"contend_id"
);
if
(!
hitMap
.
isEmpty
()
&&
(
null
!=
config
.
getContends
()
&&
config
.
getContends
().
contains
(
contendId
)))
{
baseMap
.
setBrandName
(
projectService
.
getProjectByContendId
(
projectId
,
contendId
).
getBrandName
());
}
baseMap
.
setTitle
(
baseMap
.
getTitleNullOptionalContent
());
baseMap
.
subStringContentTop
();
return
baseMap
;
}).
filter
(
Objects:
:
nonNull
).
collect
(
Collectors
.
toList
());
// 开启去重
if
(
Boolean
.
TRUE
.
equals
(
config
.
getDuplicate
()))
{
datas
=
duplicateBaseMapList
(
datas
);
}
log
.
info
(
"获取舆情动态预警结束,project:{}"
,
project
.
getProjectName
());
// 封装返回值
return
ResponseResult
.
success
(
brandkbsWarnTemplate4Yuqing
(
config
,
datas
,
start
,
end
,
project
));
}
catch
(
Exception
e
)
{
log
.
info
(
"获取舆情动态预警失败,project:{}"
,
project
.
getProjectName
(),
e
);
}
return
ResponseResult
.
failure
(
"获取舆情动态预警失败"
);
}
@Override
public
ResponseResult
getYuqingWaringNew
(
String
projectId
,
BrandkbsYuQingConfigNew
config
)
{
public
ResponseResult
getYuqingWaringNew
(
String
projectId
,
BrandkbsYuQingConfigNew
config
)
{
Project
project
;
Project
project
;
long
end
=
System
.
currentTimeMillis
();
long
end
=
System
.
currentTimeMillis
();
...
@@ -788,6 +646,10 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
...
@@ -788,6 +646,10 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
if
(
StringUtils
.
isNotBlank
(
config
.
getChannel
())){
if
(
StringUtils
.
isNotBlank
(
config
.
getChannel
())){
postFilter
.
must
(
EsQueryTools
.
assembleSourceQuery
(
config
.
getChannel
()));
postFilter
.
must
(
EsQueryTools
.
assembleSourceQuery
(
config
.
getChannel
()));
}
}
// 屏蔽渠道
if
(
StringUtils
.
isNotBlank
(
config
.
getNoiseChannel
())){
postFilter
.
mustNot
(
EsQueryTools
.
assembleSourceQuery
(
config
.
getNoiseChannel
()));
}
helper
.
setPostFilter
(
postFilter
);
helper
.
setPostFilter
(
postFilter
);
SearchHits
searchHits
=
esClientDao
.
searchHits
(
helper
);
SearchHits
searchHits
=
esClientDao
.
searchHits
(
helper
);
log
.
info
(
"获取新舆情动态预警-es搜索到数据:{}条,剩余关键词筛选未进行,project:{}"
,
searchHits
.
getHits
().
length
,
project
.
getProjectName
());
log
.
info
(
"获取新舆情动态预警-es搜索到数据:{}条,剩余关键词筛选未进行,project:{}"
,
searchHits
.
getHits
().
length
,
project
.
getProjectName
());
...
@@ -795,7 +657,11 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
...
@@ -795,7 +657,11 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
Map
<
String
,
Object
>
sourceMap
=
hit
.
getSourceAsMap
();
Map
<
String
,
Object
>
sourceMap
=
hit
.
getSourceAsMap
();
BaseMap
baseMap
=
Tools
.
getBaseFromEsMap
(
sourceMap
);
BaseMap
baseMap
=
Tools
.
getBaseFromEsMap
(
sourceMap
);
// 关键词命中
// 关键词命中
if
(!
Tools
.
isContains
(
config
.
getKeyword
(),
baseMap
.
getTitle
()
+
baseMap
.
getContent
()))
{
if
(!
Tools
.
isEmpty
(
config
.
getKeyword
())
&&
!
Tools
.
isContains
(
config
.
getKeyword
(),
baseMap
.
getTitle
()
+
baseMap
.
getContent
()))
{
return
null
;
}
// 屏蔽关键词命中
if
(!
Tools
.
isEmpty
(
config
.
getNoiseKeyword
())
&&
Tools
.
isContains
(
config
.
getNoiseKeyword
(),
baseMap
.
getTitle
()
+
baseMap
.
getContent
()))
{
return
null
;
return
null
;
}
}
baseMap
.
setTitle
(
baseMap
.
getTitleNullOptionalContent
());
baseMap
.
setTitle
(
baseMap
.
getTitleNullOptionalContent
());
...
...
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