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
ae71fabd
Commit
ae71fabd
authored
Nov 14, 2022
by
shenjunjie
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature' into 'dev'
品见项目预警模块调整 See merge request
!80
parents
62cc2ad2
6bd05d29
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
131 additions
and
7 deletions
+131
-7
src/main/java/com/zhiwei/brandkbs2/common/RedisKeyPrefix.java
+8
-1
src/main/java/com/zhiwei/brandkbs2/controller/InterfaceController.java
+9
-2
src/main/java/com/zhiwei/brandkbs2/pojo/vo/CrisisCaseWarnVO.java
+45
-0
src/main/java/com/zhiwei/brandkbs2/service/ProjectWarnService.java
+41
-0
src/main/java/com/zhiwei/brandkbs2/service/impl/ProjectWarnServiceImpl.java
+12
-4
src/main/java/com/zhiwei/brandkbs2/util/RedisUtil.java
+16
-0
No files found.
src/main/java/com/zhiwei/brandkbs2/common/RedisKeyPrefix.java
View file @
ae71fabd
...
...
@@ -88,6 +88,8 @@ public class RedisKeyPrefix {
*/
public
static
final
String
PROJECT_WARN_HOT_TOP
=
"BRANDKBS:HOT_TOP:"
;
public
static
final
String
PROJECT_WARN_NEW_CASE
=
"BRANDKBS:NEW_CASE:"
;
public
static
String
projectWarnHotTopKeyAll
(
String
projectId
,
String
type
)
{
return
RedisKeyPrefix
.
generateRedisKey
(
RedisKeyPrefix
.
PROJECT_WARN_HOT_TOP
,
projectId
,
Tools
.
concat
(
type
,
"*"
));
}
...
...
@@ -118,9 +120,14 @@ public class RedisKeyPrefix {
private
static
String
generateRedisKey
(
String
...
keys
)
{
Objects
.
requireNonNull
(
keys
);
boolean
contains
=
keys
[
0
].
endsWith
(
":"
);
StringBuilder
sb
=
new
StringBuilder
(
keys
[
0
]);
for
(
int
i
=
1
;
i
<
keys
.
length
;
i
++)
{
sb
.
append
(
SEPARATOR
).
append
(
keys
[
i
]);
if
(
1
==
i
&&
contains
)
{
sb
.
append
(
keys
[
i
]);
}
else
{
sb
.
append
(
SEPARATOR
).
append
(
keys
[
i
]);
}
}
return
sb
.
toString
();
}
...
...
src/main/java/com/zhiwei/brandkbs2/controller/InterfaceController.java
View file @
ae71fabd
...
...
@@ -6,6 +6,7 @@ import com.zhiwei.brandkbs2.pojo.external.BrandkbsChannelConfig;
import
com.zhiwei.brandkbs2.pojo.external.BrandkbsHotEventConfig
;
import
com.zhiwei.brandkbs2.pojo.external.BrandkbsHotTopConfig
;
import
com.zhiwei.brandkbs2.pojo.external.BrandkbsYuQingConfig
;
import
com.zhiwei.brandkbs2.pojo.vo.CrisisCaseWarnVO
;
import
com.zhiwei.brandkbs2.service.ProjectService
;
import
com.zhiwei.brandkbs2.service.ProjectWarnService
;
import
io.swagger.annotations.Api
;
...
...
@@ -73,7 +74,7 @@ public class InterfaceController {
return
projectWarnService
.
getHotEventWaring
(
projectId
,
config
);
}
@ApiOperation
(
"获取
热点事件
-预警结果"
)
@ApiOperation
(
"获取
上榜热搜
-预警结果"
)
@PostMapping
(
"/warn/hotTop"
)
public
ResponseResult
getHotTopWaring
(
@RequestBody
JSONObject
json
)
{
String
projectId
=
json
.
getString
(
"projectId"
);
...
...
@@ -81,11 +82,17 @@ public class InterfaceController {
return
projectWarnService
.
getHotTopWaring
(
projectId
,
config
);
}
@ApiOperation
(
"获取
热点事件
-预警结果"
)
@ApiOperation
(
"获取
案例上新
-预警结果"
)
@PostMapping
(
"/warn/newCase"
)
public
ResponseResult
getNewCaseWaring
(
@RequestBody
JSONObject
json
)
{
String
projectId
=
json
.
getString
(
"projectId"
);
return
projectWarnService
.
getNewCaseWaring
(
projectId
);
}
@ApiOperation
(
"案例上新预警(案例库项目调用)"
)
@PostMapping
(
"/newCrisisCaseWarn"
)
public
void
newCrisisCaseWarn
(
@RequestBody
CrisisCaseWarnVO
caseWarnVO
)
{
projectWarnService
.
newCrisisCaseWarn
(
caseWarnVO
);
}
}
src/main/java/com/zhiwei/brandkbs2/pojo/vo/CrisisCaseWarnVO.java
0 → 100644
View file @
ae71fabd
package
com
.
zhiwei
.
brandkbs2
.
pojo
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
lombok.Data
;
import
lombok.ToString
;
import
java.util.List
;
@Data
@ToString
@ApiModel
(
"危机案例预警展示"
)
public
class
CrisisCaseWarnVO
{
/**
* id
*/
private
String
id
;
/**
* 事件名
*/
private
String
eventName
;
/**
* 简介
*/
private
String
introduction
;
/**
* 主品牌名
*/
private
String
priBrand
;
/**
* 主品牌危机标签
*/
private
List
<
String
>
priCrisisTags
;
/**
* 公关传播效果指数
*/
private
Double
interveneScore
;
}
src/main/java/com/zhiwei/brandkbs2/service/ProjectWarnService.java
View file @
ae71fabd
...
...
@@ -5,6 +5,7 @@ import com.zhiwei.brandkbs2.pojo.external.BrandkbsChannelConfig;
import
com.zhiwei.brandkbs2.pojo.external.BrandkbsHotEventConfig
;
import
com.zhiwei.brandkbs2.pojo.external.BrandkbsHotTopConfig
;
import
com.zhiwei.brandkbs2.pojo.external.BrandkbsYuQingConfig
;
import
com.zhiwei.brandkbs2.pojo.vo.CrisisCaseWarnVO
;
public
interface
ProjectWarnService
{
...
...
@@ -16,16 +17,56 @@ public interface ProjectWarnService {
*/
ResponseResult
getProjectWarnCriteria
(
String
projectId
,
String
type
);
/**
* 获取项目预警条件默认值
* @param projectId
* @param type
* @return
*/
ResponseResult
getProjectWarnCriteriaDefault
(
String
projectId
,
String
type
);
/**
* 获取舆情动态预警
* @param projectId
* @param brandkbsYuQingConfig
* @return
*/
ResponseResult
getYuqingWaring
(
String
projectId
,
BrandkbsYuQingConfig
brandkbsYuQingConfig
);
/**
* 获取渠道参与预警
* @param projectId
* @param brandkbsChannelConfig
* @return
*/
ResponseResult
getChannelWaring
(
String
projectId
,
BrandkbsChannelConfig
brandkbsChannelConfig
);
/**
* 获取热点事件预警
* @param projectId
* @param brandkbsHotEventConfig
* @return
*/
ResponseResult
getHotEventWaring
(
String
projectId
,
BrandkbsHotEventConfig
brandkbsHotEventConfig
);
/**
* 获取上榜热搜预警
* @param projectId
* @param config
* @return
*/
ResponseResult
getHotTopWaring
(
String
projectId
,
BrandkbsHotTopConfig
config
);
/**
* 获取案例上新预警
* @param projectId
* @return
*/
ResponseResult
getNewCaseWaring
(
String
projectId
);
/**
* 案例上新主动调用
* @param caseWarnVO
*/
void
newCrisisCaseWarn
(
CrisisCaseWarnVO
caseWarnVO
);
}
src/main/java/com/zhiwei/brandkbs2/service/impl/ProjectWarnServiceImpl.java
View file @
ae71fabd
...
...
@@ -14,6 +14,7 @@ import com.zhiwei.brandkbs2.es.EsQueryTools;
import
com.zhiwei.brandkbs2.model.ResponseResult
;
import
com.zhiwei.brandkbs2.pojo.*
;
import
com.zhiwei.brandkbs2.pojo.external.*
;
import
com.zhiwei.brandkbs2.pojo.vo.CrisisCaseWarnVO
;
import
com.zhiwei.brandkbs2.service.ProjectService
;
import
com.zhiwei.brandkbs2.service.ProjectWarnService
;
import
com.zhiwei.brandkbs2.util.RedisUtil
;
...
...
@@ -226,6 +227,7 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
postFilter
.
must
(
sourceBuilder
);
// 关键词命中
postFilter
.
must
(
EsQueryTools
.
assembleNormalKeywordQuery
(
config
.
getKeyword
(),
new
String
[]{
GenericAttribute
.
ES_IND_FULL_TEXT
}));
helper
.
setPostFilter
(
postFilter
);
SearchHits
searchHits
=
esClientDao
.
searchHits
(
helper
);
List
<
BaseMap
>
datas
=
Arrays
.
stream
(
searchHits
.
getHits
()).
map
(
hit
->
{
Map
<
String
,
Object
>
sourceMap
=
hit
.
getSourceAsMap
();
...
...
@@ -321,6 +323,7 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
sourceBuilder
.
should
(
QueryBuilders
.
termQuery
(
"brandkbs_mark_cache_maps.name.keyword"
,
config
.
getMarkerTags
()));
}
postFilter
.
must
(
sourceBuilder
);
helper
.
setPostFilter
(
postFilter
);
// 搜索结果
SearchHits
searchHits
=
esClientDao
.
searchHits
(
helper
);
List
<
BaseMap
>
datas
=
Arrays
.
stream
(
searchHits
.
getHits
()).
map
(
hit
->
Tools
.
getBaseFromEsMap
(
hit
.
getSourceAsMap
())).
collect
(
Collectors
.
toList
());
...
...
@@ -431,10 +434,9 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
Event
event
=
new
Event
();
event
.
setTitle
(
zhiweiEvent
.
getString
(
"eventname"
));
JSONObject
eventTag
=
new
JSONObject
();
// TODO 存疑
eventTag
.
put
(
"事件类型"
,
zhiweiEvent
.
getString
(
"type"
));
event
.
setEventTag
(
eventTag
);
event
.
setTotalDisseminationVolume
(
zhiweiEvent
.
getLong
(
"
total
"
));
event
.
setTotalDisseminationVolume
(
zhiweiEvent
.
getLong
(
"
allCount
"
));
event
.
setStartTime
(
zhiweiEvent
.
getLong
(
"startTime"
));
event
.
setInfluence
(
zhiweiEvent
.
getDouble
(
"index"
));
externalEvents
.
add
(
event
);
...
...
@@ -488,7 +490,7 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
try
{
log
.
info
(
"获取上榜热搜预警开始,project:{}"
,
project
.
getProjectName
());
if
(
null
==
config
.
getListType
())
{
return
ResponseResult
.
success
();
return
ResponseResult
.
success
(
null
);
}
// 根据配置榜单类型
List
<
BrandkbsHotTopWarn
.
HotTop
>
resList
=
new
ArrayList
<>();
...
...
@@ -827,7 +829,13 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
// return ResponseResult.success(getWarnTemplate(new BrandkbsNewCaseWarn(Arrays.asList(getNewCaseWarn(), getNewCaseWarn(), getNewCaseWarn(),
// getNewCaseWarn(), getNewCaseWarn()))));
// TODO
return
ResponseResult
.
success
();
return
ResponseResult
.
success
(
null
);
}
@Override
public
void
newCrisisCaseWarn
(
CrisisCaseWarnVO
caseWarnVO
)
{
// 存入redis缓存
String
listKey
=
RedisUtil
.
getNewCrisisCaseListKey
();
}
public
static
class
CriteriaHelper
{
...
...
src/main/java/com/zhiwei/brandkbs2/util/RedisUtil.java
View file @
ae71fabd
...
...
@@ -5,6 +5,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.concurrent.TimeUnit
;
...
...
@@ -56,6 +57,10 @@ public class RedisUtil {
return
RedisKeyPrefix
.
CHANNEL_RECORD_LIST
+
Tools
.
concat
(
projectId
,
startTime
,
endTime
);
}
public
static
String
getNewCrisisCaseListKey
()
{
return
RedisKeyPrefix
.
PROJECT_WARN_NEW_CASE
+
"LIST"
;
}
public
void
setExpire
(
String
key
,
String
value
,
long
timeout
,
TimeUnit
unit
)
{
stringRedisTemplate
.
opsForValue
().
set
(
key
,
value
,
timeout
,
unit
);
}
...
...
@@ -79,6 +84,17 @@ public class RedisUtil {
return
stringRedisTemplate
.
keys
(
key
);
}
public
void
setListLeft
(
String
key
,
String
value
)
{
if
(
null
==
key
)
{
return
;
}
stringRedisTemplate
.
opsForList
().
leftPush
(
key
,
value
);
}
public
List
<
String
>
getListAll
(
String
key
)
{
return
stringRedisTemplate
.
opsForList
().
range
(
key
,
0
,
-
1
);
}
public
void
remove
(
String
key
)
{
setExpire
(
key
,
"-1"
,
1
,
TimeUnit
.
SECONDS
);
}
...
...
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