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
2d47d1c1
Commit
2d47d1c1
authored
Oct 26, 2022
by
shenjunjie
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature' into 'release'
无事件数据时异常修复 See merge request
!65
parents
6eed68c5
09c99449
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
241 additions
and
8 deletions
+241
-8
src/main/java/com/zhiwei/brandkbs2/controller/InterfaceController.java
+43
-0
src/main/java/com/zhiwei/brandkbs2/service/ProjectService.java
+2
-0
src/main/java/com/zhiwei/brandkbs2/service/ProjectWarnService.java
+15
-0
src/main/java/com/zhiwei/brandkbs2/service/impl/EventDataServiceImpl.java
+14
-6
src/main/java/com/zhiwei/brandkbs2/service/impl/EventServiceImpl.java
+1
-1
src/main/java/com/zhiwei/brandkbs2/service/impl/ProjectServiceImpl.java
+20
-1
src/main/java/com/zhiwei/brandkbs2/service/impl/ProjectWarnServiceImpl.java
+146
-0
No files found.
src/main/java/com/zhiwei/brandkbs2/controller/InterfaceController.java
0 → 100644
View file @
2d47d1c1
package
com
.
zhiwei
.
brandkbs2
.
controller
;
import
com.zhiwei.brandkbs2.model.ResponseResult
;
import
com.zhiwei.brandkbs2.service.ProjectService
;
import
com.zhiwei.brandkbs2.service.ProjectWarnService
;
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: InterfaceController
* @Description 外部接口
* @author: sjj
* @date: 2022-10-24 16:04
*/
@RestController
@RequestMapping
(
"/interface"
)
@Api
(
tags
=
"外部接口"
)
public
class
InterfaceController
{
@Resource
(
name
=
"projectServiceImpl"
)
private
ProjectService
projectService
;
@Resource
(
name
=
"projectWarnServiceImpl"
)
private
ProjectWarnService
projectWarnService
;
@ApiOperation
(
"获取项目预警详细信息"
)
@GetMapping
(
"/getProjectWarnCriteria"
)
public
ResponseResult
getProjectWarnCriteria
(
String
projectId
,
String
type
)
{
return
projectWarnService
.
getProjectWarnCriteria
(
projectId
,
type
);
}
@ApiOperation
(
"根据userId获取拥有权限项目"
)
@GetMapping
(
"/getUserAllProjectsByUserId"
)
public
ResponseResult
getUserAllProjectsByUserId
(
String
userId
)
{
return
ResponseResult
.
success
(
projectService
.
getUserAllProjectsPrimary
(
userId
));
}
}
src/main/java/com/zhiwei/brandkbs2/service/ProjectService.java
View file @
2d47d1c1
...
@@ -79,6 +79,8 @@ public interface ProjectService {
...
@@ -79,6 +79,8 @@ public interface ProjectService {
*/
*/
List
<
JSONObject
>
getUserAllProjects
();
List
<
JSONObject
>
getUserAllProjects
();
List
<
JSONObject
>
getUserAllProjectsPrimary
(
String
userId
);
/**
/**
* 获取当前用户拥有的所有项目(包括已过期)
* 获取当前用户拥有的所有项目(包括已过期)
*
*
...
...
src/main/java/com/zhiwei/brandkbs2/service/ProjectWarnService.java
0 → 100644
View file @
2d47d1c1
package
com
.
zhiwei
.
brandkbs2
.
service
;
import
com.zhiwei.brandkbs2.model.ResponseResult
;
public
interface
ProjectWarnService
{
/**
* 获取项目预警条件
* @param projectId 项目ID
* @param type 类型
* @return
*/
ResponseResult
getProjectWarnCriteria
(
String
projectId
,
String
type
);
}
src/main/java/com/zhiwei/brandkbs2/service/impl/EventDataServiceImpl.java
View file @
2d47d1c1
...
@@ -91,22 +91,27 @@ public class EventDataServiceImpl implements EventDataService {
...
@@ -91,22 +91,27 @@ public class EventDataServiceImpl implements EventDataService {
}
}
private
void
updateEventData
(
Event
event
,
List
<
EventData
>
eventDataList
)
{
private
void
updateEventData
(
Event
event
,
List
<
EventData
>
eventDataList
)
{
// 根据配置筛选目标数据
eventDataList
=
filterEventData
(
event
,
eventDataList
);
// 删除历史数据
// 删除历史数据
deleteEventRelated
(
event
);
deleteEventRelated
(
event
);
// 数据入库
Lists
.
partition
(
eventDataList
,
1000
).
forEach
(
list
->
eventDataDao
.
insertMany
(
list
,
event
.
getCollectionName
()));
// 设置快照属性值
// 设置快照属性值
setEventStaticState
(
event
,
eventDataList
);
setEventStaticState
(
event
,
eventDataList
);
List
<
EventData
>
insertList
=
new
ArrayList
<>();
log
.
info
(
"analysisEvent-eventId:{},更新事件数据完毕,实际更新:{}条"
,
event
.
getId
(),
eventDataList
.
size
());
}
private
List
<
EventData
>
filterEventData
(
Event
event
,
List
<
EventData
>
eventDataList
)
{
List
<
EventData
>
hitList
=
new
ArrayList
<>();
String
keyword
=
event
.
getKeyword
();
String
keyword
=
event
.
getKeyword
();
for
(
EventData
data
:
eventDataList
)
{
for
(
EventData
data
:
eventDataList
)
{
// 关键词筛选
// 关键词筛选
if
(
Tools
.
isContains
(
Arrays
.
asList
(
keyword
.
split
(
keyword
.
contains
(
","
)
?
","
:
"\\|"
)),
(
data
.
getTitle
()
+
data
.
getContent
())))
{
if
(
Tools
.
isContains
(
Arrays
.
asList
(
keyword
.
split
(
keyword
.
contains
(
","
)
?
","
:
"\\|"
)),
(
data
.
getTitle
()
+
data
.
getContent
())))
{
inser
tList
.
add
(
data
);
hi
tList
.
add
(
data
);
}
}
}
}
Lists
.
partition
(
insertList
,
1000
).
forEach
(
list
->
{
return
hitList
;
eventDataDao
.
insertMany
(
list
,
event
.
getCollectionName
());
});
log
.
info
(
"analysisEvent-eventId:{},更新事件数据完毕,实际更新:{}条"
,
event
.
getId
(),
insertList
.
size
());
}
}
private
void
deleteEventRelated
(
Event
event
)
{
private
void
deleteEventRelated
(
Event
event
)
{
...
@@ -117,6 +122,9 @@ public class EventDataServiceImpl implements EventDataService {
...
@@ -117,6 +122,9 @@ public class EventDataServiceImpl implements EventDataService {
}
}
private
void
setEventStaticState
(
Event
event
,
List
<
EventData
>
eventDataList
)
{
private
void
setEventStaticState
(
Event
event
,
List
<
EventData
>
eventDataList
)
{
if
(
eventDataList
.
isEmpty
())
{
return
;
}
long
totalDisseminationVolume
=
eventDataList
.
size
();
long
totalDisseminationVolume
=
eventDataList
.
size
();
Set
<
String
>
totalChannelVolumes
=
new
HashSet
<>();
Set
<
String
>
totalChannelVolumes
=
new
HashSet
<>();
Map
<
String
,
AtomicLong
>
platformIdCounts
=
new
HashMap
<>();
Map
<
String
,
AtomicLong
>
platformIdCounts
=
new
HashMap
<>();
...
...
src/main/java/com/zhiwei/brandkbs2/service/impl/EventServiceImpl.java
View file @
2d47d1c1
...
@@ -466,7 +466,7 @@ public class EventServiceImpl implements EventService {
...
@@ -466,7 +466,7 @@ public class EventServiceImpl implements EventService {
eventDataService
.
analysisEvent
(
event
);
eventDataService
.
analysisEvent
(
event
);
redisUtil
.
set
(
redisKey
,
"100"
);
redisUtil
.
set
(
redisKey
,
"100"
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
"
事件i
d:{}更新失败"
,
eventId
,
e
);
log
.
error
(
"
eventI
d:{}更新失败"
,
eventId
,
e
);
redisUtil
.
set
(
redisKey
,
"-1"
);
redisUtil
.
set
(
redisKey
,
"-1"
);
}
}
}));
}));
...
...
src/main/java/com/zhiwei/brandkbs2/service/impl/ProjectServiceImpl.java
View file @
2d47d1c1
...
@@ -72,7 +72,7 @@ public class ProjectServiceImpl implements ProjectService {
...
@@ -72,7 +72,7 @@ public class ProjectServiceImpl implements ProjectService {
@Override
@Override
public
PageVO
<
JSONObject
>
findProjectList
(
int
page
,
int
size
,
String
keyword
)
{
public
PageVO
<
JSONObject
>
findProjectList
(
int
page
,
int
size
,
String
keyword
)
{
Query
query
=
new
Query
();
Query
query
=
new
Query
();
projectDao
.
addKeywordFuzz
(
query
,
keyword
,
"projectName"
);
projectDao
.
addKeywordFuzz
(
query
,
keyword
,
"projectName"
);
long
count
=
projectDao
.
count
(
query
);
long
count
=
projectDao
.
count
(
query
);
mongoUtil
.
start
(
page
,
size
,
query
);
mongoUtil
.
start
(
page
,
size
,
query
);
List
<
Project
>
projectList
=
projectDao
.
findList
(
query
);
List
<
Project
>
projectList
=
projectDao
.
findList
(
query
);
...
@@ -177,6 +177,25 @@ public class ProjectServiceImpl implements ProjectService {
...
@@ -177,6 +177,25 @@ public class ProjectServiceImpl implements ProjectService {
}
}
@Override
@Override
public
List
<
JSONObject
>
getUserAllProjectsPrimary
(
String
userId
)
{
User
user
=
userDao
.
findOneById
(
userId
);
if
(
user
.
isSuperAdmin
())
{
return
projectDao
.
findList
(
null
).
stream
().
map
(
project
->
{
JSONObject
json
=
new
JSONObject
();
json
.
put
(
"name"
,
project
.
getProjectName
());
json
.
put
(
"id"
,
project
.
getId
());
return
json
;
}).
collect
(
Collectors
.
toList
());
}
return
user
.
getRoles
().
stream
().
map
(
userRole
->
{
JSONObject
json
=
new
JSONObject
();
json
.
put
(
"name"
,
projectDao
.
findOne
(
"_id"
,
userRole
.
getProjectId
()).
getProjectName
());
json
.
put
(
"id"
,
userRole
.
getProjectId
());
return
json
;
}).
collect
(
Collectors
.
toList
());
}
@Override
public
List
<
JSONObject
>
getLoginUserAllProjects
()
{
public
List
<
JSONObject
>
getLoginUserAllProjects
()
{
User
user
=
userDao
.
findOneById
(
UserThreadLocal
.
getUserId
());
User
user
=
userDao
.
findOneById
(
UserThreadLocal
.
getUserId
());
if
(
null
==
user
)
{
if
(
null
==
user
)
{
...
...
src/main/java/com/zhiwei/brandkbs2/service/impl/ProjectWarnServiceImpl.java
0 → 100644
View file @
2d47d1c1
package
com
.
zhiwei
.
brandkbs2
.
service
.
impl
;
import
com.alibaba.fastjson.JSONObject
;
import
com.zhiwei.brandkbs2.model.ResponseResult
;
import
com.zhiwei.brandkbs2.service.ProjectService
;
import
com.zhiwei.brandkbs2.service.ProjectWarnService
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
* @ClassName: ProjectWarnServiceImpl
* @Description ProjectWarnServiceImpl
* @author: sjj
* @date: 2022-10-24 16:07
*/
@Service
(
"projectWarnServiceImpl"
)
public
class
ProjectWarnServiceImpl
implements
ProjectWarnService
{
private
static
final
Long
ONE_MINUTE
=
60
*
1000L
;
@Resource
(
name
=
"projectServiceImpl"
)
ProjectService
projectService
;
@Override
public
ResponseResult
getProjectWarnCriteria
(
String
projectId
,
String
type
)
{
Map
<
String
,
Object
>
res
=
new
HashMap
<>();
switch
(
type
)
{
case
"舆情动态"
:
warnCriteriaAddSimple
(
res
,
"channelTypes"
,
Arrays
.
asList
(
"央级"
,
"门户"
,
"财经"
,
"科技"
,
"其他"
));
warnCriteriaAdd
(
res
,
"primary"
,
Arrays
.
asList
(
"原创"
,
"转发"
),
Arrays
.
asList
(
false
,
true
),
"说明:仅对微博平台数据生效"
);
warnCriteriaAddSimple
(
res
,
"markerTags"
,
Arrays
.
asList
(
"正面"
,
"中性"
,
"负面"
));
List
<
JSONObject
>
brands
=
projectService
.
getBrands
(
projectId
,
false
);
List
<
String
>
nameList
=
brands
.
stream
().
map
(
json
->
json
.
getString
(
"brandName"
)).
collect
(
Collectors
.
toList
());
List
<
String
>
idList
=
brands
.
stream
().
map
(
json
->
json
.
getString
(
"contendId"
)).
collect
(
Collectors
.
toList
());
warnCriteriaAdd
(
res
,
"contends"
,
nameList
,
idList
);
warnCriteriaAdd
(
res
,
"keyword"
,
null
);
warnCriteriaAdd
(
res
,
"duplicate"
,
Arrays
.
asList
(
"去重"
,
"不去重"
),
Arrays
.
asList
(
true
,
false
));
warnCriteriaAdd
(
res
,
"pushInterval"
,
Arrays
.
asList
(
"10"
,
"30min"
,
"60min"
),
Arrays
.
asList
(
10
*
ONE_MINUTE
,
30
*
ONE_MINUTE
,
60
*
ONE_MINUTE
));
break
;
case
"渠道参与"
:
warnCriteriaAdd
(
res
,
"friendlyChannel"
,
Arrays
.
asList
(
"友好渠道"
,
"敏感渠道"
,
"自定义渠道"
),
Arrays
.
asList
(
true
,
false
,
null
));
List
<
Map
<
String
,
Object
>>
thresholdValue
=
new
ArrayList
<>();
for
(
String
name
:
Arrays
.
asList
(
"友好渠道 友好指数"
,
"敏感渠道 敏感指数"
))
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"name"
,
name
);
map
.
put
(
"defaultValue"
,
80
);
thresholdValue
.
add
(
map
);
}
res
.
put
(
"threshold"
,
thresholdValue
);
warnCriteriaAdd
(
res
,
"channel"
,
null
);
warnCriteriaAdd
(
res
,
"primary"
,
Arrays
.
asList
(
"原创"
,
"转发"
),
Arrays
.
asList
(
false
,
true
),
"说明:仅对微博平台数据生效"
);
warnCriteriaAddSimple
(
res
,
"markerTags"
,
Arrays
.
asList
(
"正面"
,
"中性"
,
"负面"
));
warnCriteriaAdd
(
res
,
"duplicate"
,
Arrays
.
asList
(
"去重"
,
"不去重"
),
Arrays
.
asList
(
true
,
false
));
warnCriteriaAdd
(
res
,
"pushInterval"
,
Arrays
.
asList
(
"实时"
,
"30min"
,
"60min"
,
"180min"
),
Arrays
.
asList
(
null
,
30
*
ONE_MINUTE
,
60
*
ONE_MINUTE
,
180
*
ONE_MINUTE
));
break
;
case
"热点事件"
:
warnCriteriaAddSimple
(
res
,
"wonEvent"
,
Arrays
.
asList
(
"正面"
,
"中性"
,
"负面"
));
List
<
JSONObject
>
brands2
=
projectService
.
getBrands
(
projectId
,
false
);
List
<
String
>
nameList2
=
brands2
.
stream
().
map
(
json
->
json
.
getString
(
"brandName"
)).
collect
(
Collectors
.
toList
());
List
<
String
>
idList2
=
brands2
.
stream
().
map
(
json
->
json
.
getString
(
"contendId"
)).
collect
(
Collectors
.
toList
());
warnCriteriaAdd
(
res
,
"contendsEvent"
,
nameList2
,
idList2
);
warnCriteriaAddSimple
(
res
,
"zhiWeiEvent"
,
Arrays
.
asList
(
"社会"
,
"互联网"
,
"政务"
,
"财经"
,
"企业"
,
"娱乐"
,
"灾难"
,
"违法犯罪"
,
"国际"
,
"体育"
,
"谣言"
),
"说明:知微事见支持选择事件的领域"
);
warnCriteriaAdd
(
res
,
"eventTop"
,
Arrays
.
asList
(
"TOP5"
,
"TOP10"
),
Arrays
.
asList
(
5
,
10
),
"说明:按影响力选取;若事件数不足,以实际为准"
);
warnCriteriaAdd
(
res
,
"timeCycles"
,
Arrays
.
asList
(
"周一"
,
"周二"
,
"周三"
,
"周四"
,
"周五"
,
"周六"
,
"周日"
),
Arrays
.
asList
(
1
,
2
,
3
,
4
,
5
,
6
,
7
),
"说明:系统推送时间为08:00"
);
break
;
case
"上榜热搜"
:
warnCriteriaAddSimple
(
res
,
"warnKeyword"
,
null
);
warnCriteriaAddSimple
(
res
,
"filterKeyword"
,
null
);
warnCriteriaAddSimple
(
res
,
"listType"
,
Arrays
.
asList
(
"微博热搜"
,
"微博话题"
,
"微博预热"
,
"头条热搜"
,
"抖音热搜"
,
"知乎热搜"
,
"B站热搜"
,
"快手热榜"
));
List
<
Map
<
String
,
Object
>>
topList
=
new
ArrayList
<>();
for
(
int
i
:
Arrays
.
asList
(
3
,
5
,
10
,
20
,
50
))
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"name"
,
"前"
+
i
);
map
.
put
(
"id"
,
i
);
topList
.
add
(
map
);
}
warnCriteriaAddSimple
(
res
,
"warnType"
,
Arrays
.
asList
(
"首次上榜"
,
"排名新高"
,
"掉榜和再次上榜"
,
"导语(仅支持微博平台)"
));
res
.
put
(
"topList"
,
topList
);
warnCriteriaAdd
(
res
,
"pushInterval"
,
Collections
.
singletonList
(
"5min"
),
Collections
.
singletonList
(
5
*
ONE_MINUTE
));
break
;
case
"案例上新"
:
return
ResponseResult
.
success
();
default
:
return
ResponseResult
.
failure
(
"类型错误"
);
}
return
ResponseResult
.
success
(
res
);
}
private
<
T
>
void
warnCriteriaAdd
(
Map
<
String
,
Object
>
res
,
String
key
,
List
<
String
>
listValueName
,
List
<
T
>
listValueId
)
{
warnCriteriaAdd
(
res
,
key
,
listValueName
,
listValueId
,
null
);
}
private
<
T
>
void
warnCriteriaAdd
(
Map
<
String
,
Object
>
res
,
String
key
,
List
<
String
>
listValueName
,
List
<
T
>
listValueId
,
String
annotation
)
{
if
(
listValueName
.
size
()
!=
listValueId
.
size
())
{
throw
new
IllegalArgumentException
(
"listValueName-size与listValueId-size不符!"
);
}
List
<
Map
<
String
,
Object
>>
value
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
listValueName
.
size
();
i
++)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
String
name
=
listValueName
.
get
(
i
);
if
(
name
.
contains
(
"key:"
))
{
map
.
put
(
name
.
substring
(
4
),
listValueId
.
get
(
i
));
}
else
{
map
.
put
(
"name"
,
name
);
map
.
put
(
"id"
,
listValueId
.
get
(
i
));
}
value
.
add
(
map
);
}
warnCriteriaAdd
(
res
,
key
,
value
,
null
);
}
private
void
warnCriteriaAddSimple
(
Map
<
String
,
Object
>
res
,
String
key
,
List
<
String
>
listValue
)
{
warnCriteriaAddSimple
(
res
,
key
,
listValue
,
null
);
}
private
void
warnCriteriaAddSimple
(
Map
<
String
,
Object
>
res
,
String
key
,
List
<
String
>
listValue
,
String
annotation
)
{
List
<
Map
<
String
,
Object
>>
value
=
null
;
if
(
null
!=
listValue
)
{
value
=
new
ArrayList
<>();
for
(
String
str
:
listValue
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"name"
,
str
);
map
.
put
(
"id"
,
str
);
value
.
add
(
map
);
}
}
warnCriteriaAdd
(
res
,
key
,
value
,
annotation
);
}
private
void
warnCriteriaAdd
(
Map
<
String
,
Object
>
res
,
String
key
,
List
<
Map
<
String
,
Object
>>
value
)
{
warnCriteriaAdd
(
res
,
key
,
value
,
null
);
}
private
void
warnCriteriaAdd
(
Map
<
String
,
Object
>
res
,
String
key
,
List
<
Map
<
String
,
Object
>>
value
,
String
annotation
)
{
// Map<String, Object> element = new HashMap<>();
// element.put(key, value);
// if (null != annotation) {
// element.put("annotation", annotation);
// }
res
.
put
(
key
,
value
);
}
}
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