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
000a07fe
Commit
000a07fe
authored
Mar 28, 2023
by
shenjunjie
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature' into 'dev'
Feature See merge request
!267
parents
a227ea9f
f4aa7270
Show whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
468 additions
and
94 deletions
+468
-94
pom.xml
+1
-1
src/main/java/com/zhiwei/brandkbs2/aop/AopLogRecord.java
+64
-36
src/main/java/com/zhiwei/brandkbs2/aop/LogRecord.java
+17
-0
src/main/java/com/zhiwei/brandkbs2/controller/LoginController.java
+2
-0
src/main/java/com/zhiwei/brandkbs2/controller/admin/BehaviorController.java
+39
-4
src/main/java/com/zhiwei/brandkbs2/controller/app/AppArticleController.java
+4
-0
src/main/java/com/zhiwei/brandkbs2/controller/app/AppChannelController.java
+5
-0
src/main/java/com/zhiwei/brandkbs2/controller/app/AppContendController.java
+3
-0
src/main/java/com/zhiwei/brandkbs2/controller/app/AppCrisisController.java
+2
-0
src/main/java/com/zhiwei/brandkbs2/controller/app/AppEventController.java
+5
-0
src/main/java/com/zhiwei/brandkbs2/controller/app/AppHotController.java
+2
-0
src/main/java/com/zhiwei/brandkbs2/controller/app/AppIndexController.java
+2
-0
src/main/java/com/zhiwei/brandkbs2/controller/app/AppSearchController.java
+9
-0
src/main/java/com/zhiwei/brandkbs2/dao/EventMiddlewareDao.java
+10
-0
src/main/java/com/zhiwei/brandkbs2/dao/UserLogRecordDao.java
+12
-0
src/main/java/com/zhiwei/brandkbs2/dao/impl/EventMiddlewareDaoImpl.java
+6
-0
src/main/java/com/zhiwei/brandkbs2/dao/impl/UserLogRecordDaoImpl.java
+15
-0
src/main/java/com/zhiwei/brandkbs2/easyexcel/dto/ExportUserLogRecordDTO.java
+27
-0
src/main/java/com/zhiwei/brandkbs2/es/EsQueryTools.java
+44
-36
src/main/java/com/zhiwei/brandkbs2/pojo/BaseMap.java
+2
-0
src/main/java/com/zhiwei/brandkbs2/pojo/UserLogRecord.java
+47
-0
src/main/java/com/zhiwei/brandkbs2/pojo/external/BaseMapCompound.java
+8
-4
src/main/java/com/zhiwei/brandkbs2/service/BehaviorService.java
+28
-0
src/main/java/com/zhiwei/brandkbs2/service/impl/BehaviorServiceImpl.java
+85
-7
src/main/java/com/zhiwei/brandkbs2/service/impl/EventServiceImpl.java
+5
-1
src/main/java/com/zhiwei/brandkbs2/service/impl/ProjectWarnServiceImpl.java
+5
-5
src/main/java/com/zhiwei/brandkbs2/util/Tools.java
+19
-0
No files found.
pom.xml
View file @
000a07fe
...
@@ -35,7 +35,7 @@
...
@@ -35,7 +35,7 @@
<dubbo.version>
2.7.4.1
</dubbo.version>
<dubbo.version>
2.7.4.1
</dubbo.version>
<curator.version>
2.12.0
</curator.version>
<curator.version>
2.12.0
</curator.version>
<push.log.version>
2.17.0-SNAPSHOT
</push.log.version>
<push.log.version>
2.17.0-SNAPSHOT
</push.log.version>
<event-client.version>
1.0.9-SNAPSHOT
</event-client.version>
<event-client.version>
1.0.9
.3
-SNAPSHOT
</event-client.version>
</properties>
</properties>
<dependencies>
<dependencies>
...
...
src/main/java/com/zhiwei/brandkbs2/aop/AopLogRecord.java
View file @
000a07fe
...
@@ -4,13 +4,18 @@ import com.alibaba.fastjson.JSON;
...
@@ -4,13 +4,18 @@ import com.alibaba.fastjson.JSON;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.zhiwei.brandkbs2.common.GenericAttribute
;
import
com.zhiwei.brandkbs2.common.GenericAttribute
;
import
com.zhiwei.brandkbs2.dao.BehaviorDao
;
import
com.zhiwei.brandkbs2.dao.BehaviorDao
;
import
com.zhiwei.brandkbs2.dao.UserLogRecordDao
;
import
com.zhiwei.brandkbs2.model.ResponseResult
;
import
com.zhiwei.brandkbs2.model.ResponseResult
;
import
com.zhiwei.brandkbs2.pojo.Behavior
;
import
com.zhiwei.brandkbs2.pojo.Behavior
;
import
com.zhiwei.brandkbs2.pojo.UserInfo
;
import
com.zhiwei.brandkbs2.pojo.UserLogRecord
;
import
com.zhiwei.brandkbs2.service.UserService
;
import
com.zhiwei.brandkbs2.service.UserService
;
import
com.zhiwei.brandkbs2.util.Tools
;
import
com.zhiwei.brandkbs2.util.Tools
;
import
com.zhiwei.middleware.auth.util.JwtUtil
;
import
com.zhiwei.middleware.auth.util.JwtUtil
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.aspectj.lang.JoinPoint
;
import
org.aspectj.lang.JoinPoint
;
import
org.aspectj.lang.annotation.AfterReturning
;
import
org.aspectj.lang.annotation.AfterReturning
;
import
org.aspectj.lang.annotation.Aspect
;
import
org.aspectj.lang.annotation.Aspect
;
...
@@ -24,6 +29,7 @@ import org.springframework.web.servlet.HandlerMapping;
...
@@ -24,6 +29,7 @@ import org.springframework.web.servlet.HandlerMapping;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
javax.servlet.ServletRequest
;
import
javax.servlet.ServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
java.lang.reflect.Method
;
import
java.net.InetAddress
;
import
java.net.InetAddress
;
import
java.net.UnknownHostException
;
import
java.net.UnknownHostException
;
import
java.util.*
;
import
java.util.*
;
...
@@ -46,9 +52,12 @@ public class AopLogRecord {
...
@@ -46,9 +52,12 @@ public class AopLogRecord {
@Resource
(
name
=
"behaviorDao"
)
@Resource
(
name
=
"behaviorDao"
)
private
BehaviorDao
behaviorDao
;
private
BehaviorDao
behaviorDao
;
@Resource
(
name
=
"UserLogRecordDao"
)
private
UserLogRecordDao
userLogRecordDao
;
private
static
final
List
<
String
>
URL_PATTERNS
=
Arrays
.
asList
(
"/getNewAll"
,
"/getNew"
,
"/schedule"
);
private
static
final
List
<
String
>
URL_PATTERNS
=
Arrays
.
asList
(
"/getNewAll"
,
"/getNew"
,
"/schedule"
);
@AfterReturning
(
value
=
"execution(public * com..controller..admin..*Controller.*(..)) || execution(* com..controller..app..*Controller.*(..))"
,
returning
=
"ResponseResult"
)
@AfterReturning
(
value
=
"execution(public * com..controller..admin..*Controller.*(..)) || execution(* com..controller..app..*Controller.*(..))
|| execution(* com..controller..LoginController.checkBind())
"
,
returning
=
"ResponseResult"
)
private
void
beforeLog
(
JoinPoint
joinPoint
,
ResponseResult
ResponseResult
)
throws
UnknownHostException
,
ClassNotFoundException
{
private
void
beforeLog
(
JoinPoint
joinPoint
,
ResponseResult
ResponseResult
)
throws
UnknownHostException
,
ClassNotFoundException
{
long
now
=
System
.
currentTimeMillis
();
long
now
=
System
.
currentTimeMillis
();
// RequestContextHolder 顾名思义 持有 request 上下文的容器
// RequestContextHolder 顾名思义 持有 request 上下文的容器
...
@@ -84,7 +93,8 @@ public class AopLogRecord {
...
@@ -84,7 +93,8 @@ public class AopLogRecord {
}
}
String
userId
=
userIdObj
.
toString
();
String
userId
=
userIdObj
.
toString
();
String
projectId
=
request
.
getHeader
(
"pid"
);
String
projectId
=
request
.
getHeader
(
"pid"
);
String
nickName
=
userService
.
queryUserInfo
(
userId
,
projectId
).
getNickname
();
UserInfo
userInfo
=
userService
.
queryUserInfo
(
userId
,
projectId
);
String
nickName
=
userInfo
.
getNickname
();
// 请求地址和服务器地址
// 请求地址和服务器地址
String
severAddress
=
InetAddress
.
getLocalHost
().
getHostAddress
();
String
severAddress
=
InetAddress
.
getLocalHost
().
getHostAddress
();
String
ipAddress
=
Tools
.
getIpAddress
(
request
);
String
ipAddress
=
Tools
.
getIpAddress
(
request
);
...
@@ -92,57 +102,75 @@ public class AopLogRecord {
...
@@ -92,57 +102,75 @@ public class AopLogRecord {
List
<
Map
<
String
,
Object
>>
arguments
=
getRequestArguments
(
joinPoint
);
List
<
Map
<
String
,
Object
>>
arguments
=
getRequestArguments
(
joinPoint
);
Behavior
behavior
=
new
Behavior
(
userId
,
projectId
,
nickName
,
ipAddress
,
now
,
controller
,
method
,
backstage
,
Behavior
behavior
=
new
Behavior
(
userId
,
projectId
,
nickName
,
ipAddress
,
now
,
controller
,
method
,
backstage
,
uri
,
methodName
,
httpMethod
,
arguments
,
now
,
severAddress
,
null
);
uri
,
methodName
,
httpMethod
,
arguments
,
now
,
severAddress
,
null
);
setInfo
(
behavior
,
uri
,
joinPoint
,
methodSignature
,
arguments
,
ResponseResult
);
UserLogRecord
userLogRecord
=
userLogRecord
(
projectId
,
userInfo
,
joinPoint
,
methodSignature
,
ResponseResult
);
if
(
Objects
.
nonNull
(
userLogRecord
))
{
userLogRecordDao
.
insertOne
(
userLogRecord
);
}
String
collectionName
=
behaviorDao
.
generateCollectionName
();
String
collectionName
=
behaviorDao
.
generateCollectionName
();
behaviorDao
.
insertOneWithoutId
(
behavior
,
collectionName
);
behaviorDao
.
insertOneWithoutId
(
behavior
,
collectionName
);
}
}
}
}
}
}
/**
private
UserLogRecord
userLogRecord
(
String
projectId
,
UserInfo
userInfo
,
JoinPoint
joinPoint
,
MethodSignature
methodSignature
,
ResponseResult
responseResult
)
{
* 用户行为实体搜索关键词、渠道库渠道、事件详情事件名赋值
long
now
=
System
.
currentTimeMillis
();
*
* @param behavior
* @param uri
* @param joinPoint
* @param methodSignature
* @param arguments
* @param ResponseResult
*/
private
void
setInfo
(
Behavior
behavior
,
String
uri
,
JoinPoint
joinPoint
,
MethodSignature
methodSignature
,
List
<
Map
<
String
,
Object
>>
arguments
,
ResponseResult
ResponseResult
)
{
String
record
=
null
;
Object
[]
args
=
joinPoint
.
getArgs
();
Object
[]
args
=
joinPoint
.
getArgs
();
// 搜索接口关键词记录
Method
method
=
methodSignature
.
getMethod
();
if
(
uri
.
contains
(
"/app/search"
)
&&
!
Tools
.
isEmpty
(
args
))
{
// 方法上无@LogRecord注解
if
(
1
==
arguments
.
size
())
{
if
(!
method
.
isAnnotationPresent
(
LogRecord
.
class
))
{
if
(!(
args
[
0
]
instanceof
Integer
)
&&
!(
args
[
0
]
instanceof
String
))
{
return
null
;
}
String
prefix
=
method
.
getAnnotation
(
LogRecord
.
class
).
description
();
// 注解上操作描述description为空或空字符
if
(
StringUtils
.
isEmpty
(
prefix
)){
return
null
;
}
String
[]
value
=
method
.
getAnnotation
(
LogRecord
.
class
).
values
();
// 注解value为空字符串(value使用默认值未设置)
if
(
1
==
value
.
length
&&
StringUtils
.
isEmpty
(
value
[
0
])){
return
new
UserLogRecord
(
projectId
,
userInfo
.
getUserId
(),
userInfo
.
getNickname
(),
prefix
,
userInfo
.
getRoleId
(),
now
,
now
);
}
// 获取接口传参(value为获取传参的具体字段)并与操作描述description拼接返回,传参值为实体
if
(
method
.
getAnnotation
(
LogRecord
.
class
).
arguments
()
&&
method
.
getAnnotation
(
LogRecord
.
class
).
entity
())
{
JSONObject
jsonObject
=
(
JSONObject
)
JSON
.
toJSON
(
args
[
0
]);
JSONObject
jsonObject
=
(
JSONObject
)
JSON
.
toJSON
(
args
[
0
]);
record
=
Objects
.
nonNull
(
jsonObject
.
get
(
"keyword"
))
?
String
.
valueOf
(
jsonObject
.
get
(
"keyword"
))
:
String
.
valueOf
(
jsonObject
.
get
(
"search"
));
List
<
Object
>
res
=
new
ArrayList
<>(
value
.
length
);
for
(
String
v
:
value
)
{
Object
o
=
jsonObject
.
get
(
v
);
if
(
Objects
.
nonNull
(
o
))
{
res
.
add
(
o
);
}
}
}
else
{
}
String
suffix
=
CollectionUtils
.
isNotEmpty
(
res
)
?
"-"
+
Tools
.
concat
(
res
)
:
""
;
return
new
UserLogRecord
(
projectId
,
userInfo
.
getUserId
(),
userInfo
.
getNickname
(),
prefix
+
suffix
,
userInfo
.
getRoleId
(),
now
,
now
);
}
// 获取接口传参(value为获取传参的具体字段)并与操作描述description拼接返回,传参值不为实体
if
(
method
.
getAnnotation
(
LogRecord
.
class
).
arguments
()
&&
!
method
.
getAnnotation
(
LogRecord
.
class
).
entity
())
{
String
[]
parameterNames
=
methodSignature
.
getParameterNames
();
String
[]
parameterNames
=
methodSignature
.
getParameterNames
();
List
<
Object
>
res
=
new
ArrayList
<>(
value
.
length
);
for
(
String
v
:
value
)
{
for
(
int
i
=
0
;
i
<
parameterNames
.
length
;
i
++)
{
for
(
int
i
=
0
;
i
<
parameterNames
.
length
;
i
++)
{
if
(
Objects
.
equals
(
parameterNames
[
i
],
"keyword"
))
{
if
(
Objects
.
equals
(
parameterNames
[
i
],
v
))
{
re
cord
=
String
.
valueOf
(
args
[
i
]);
re
s
.
add
(
args
[
i
]);
}
}
}
}
}
}
behavior
.
setRecord
(
record
);
String
suffix
=
CollectionUtils
.
isNotEmpty
(
res
)
?
"-"
+
Tools
.
concat
(
res
)
:
""
;
return
;
return
new
UserLogRecord
(
projectId
,
userInfo
.
getUserId
(),
userInfo
.
getNickname
(),
prefix
+
suffix
,
userInfo
.
getRoleId
(),
now
,
now
);
}
// 获取接口返回值(value为获取返回值的具体字段)并与操作描述description拼接返回,返回值为实体
if
(!
method
.
getAnnotation
(
LogRecord
.
class
).
arguments
()
&&
method
.
getAnnotation
(
LogRecord
.
class
).
entity
())
{
List
<
Object
>
res
=
new
ArrayList
<>(
value
.
length
);
for
(
String
v
:
value
)
{
JSONObject
jsonObject
=
(
JSONObject
)
JSONObject
.
toJSON
(
responseResult
.
getData
());
String
s
=
String
.
valueOf
(
jsonObject
.
get
(
v
));
if
(
Objects
.
nonNull
(
s
))
{
res
.
add
(
s
);
}
}
// 渠道记录
if
(
uri
.
contains
(
"/app/channel/baseInfo"
))
{
JSONObject
jsonObject
=
(
JSONObject
)
JSONObject
.
toJSON
(
ResponseResult
.
getData
());
record
=
Tools
.
concat
(
jsonObject
.
get
(
"platform"
),
jsonObject
.
get
(
"realSource"
),
jsonObject
.
get
(
"source"
));
behavior
.
setRecord
(
record
);
return
;
}
}
// 事件标题记录
String
suffix
=
CollectionUtils
.
isNotEmpty
(
res
)
?
"-"
+
Tools
.
concat
(
res
)
:
""
;
if
(
uri
.
contains
(
"/app/event/detail/baseInfo"
))
{
return
new
UserLogRecord
(
projectId
,
userInfo
.
getUserId
(),
userInfo
.
getNickname
(),
prefix
+
suffix
,
userInfo
.
getRoleId
(),
now
,
now
);
JSONObject
jsonObject
=
(
JSONObject
)
JSON
.
toJSON
(
ResponseResult
.
getData
());
record
=
String
.
valueOf
(
jsonObject
.
get
(
"title"
));
behavior
.
setRecord
(
record
);
}
}
return
new
UserLogRecord
(
projectId
,
userInfo
.
getUserId
(),
userInfo
.
getNickname
(),
prefix
,
userInfo
.
getRoleId
(),
now
,
now
);
}
}
/**
/**
...
...
src/main/java/com/zhiwei/brandkbs2/aop/LogRecord.java
0 → 100644
View file @
000a07fe
package
com
.
zhiwei
.
brandkbs2
.
aop
;
import
java.lang.annotation.*
;
@Target
(
ElementType
.
METHOD
)
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Documented
public
@interface
LogRecord
{
String
[]
values
()
default
""
;
String
description
()
default
""
;
boolean
arguments
()
default
false
;
boolean
entity
()
default
false
;
}
src/main/java/com/zhiwei/brandkbs2/controller/LoginController.java
View file @
000a07fe
package
com
.
zhiwei
.
brandkbs2
.
controller
;
package
com
.
zhiwei
.
brandkbs2
.
controller
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.zhiwei.brandkbs2.aop.LogRecord
;
import
com.zhiwei.brandkbs2.auth.Auth
;
import
com.zhiwei.brandkbs2.auth.Auth
;
import
com.zhiwei.brandkbs2.enmus.RoleEnum
;
import
com.zhiwei.brandkbs2.enmus.RoleEnum
;
import
com.zhiwei.brandkbs2.model.ResponseResult
;
import
com.zhiwei.brandkbs2.model.ResponseResult
;
...
@@ -82,6 +83,7 @@ public class LoginController extends BaseController {
...
@@ -82,6 +83,7 @@ public class LoginController extends BaseController {
}
}
@ApiOperation
(
"校验用户是否已有绑定关系"
)
@ApiOperation
(
"校验用户是否已有绑定关系"
)
@LogRecord
(
description
=
"登录"
)
@GetMapping
(
"/user/login/checkBind"
)
@GetMapping
(
"/user/login/checkBind"
)
public
ResponseResult
checkBind
()
{
public
ResponseResult
checkBind
()
{
return
ResponseResult
.
success
(
userService
.
checkUserRoles
());
return
ResponseResult
.
success
(
userService
.
checkUserRoles
());
...
...
src/main/java/com/zhiwei/brandkbs2/controller/admin/BehaviorController.java
View file @
000a07fe
...
@@ -5,6 +5,7 @@ import com.zhiwei.brandkbs2.auth.UserThreadLocal;
...
@@ -5,6 +5,7 @@ import com.zhiwei.brandkbs2.auth.UserThreadLocal;
import
com.zhiwei.brandkbs2.controller.BaseController
;
import
com.zhiwei.brandkbs2.controller.BaseController
;
import
com.zhiwei.brandkbs2.easyexcel.EasyExcelUtil
;
import
com.zhiwei.brandkbs2.easyexcel.EasyExcelUtil
;
import
com.zhiwei.brandkbs2.easyexcel.dto.ExportBehaviorDTO
;
import
com.zhiwei.brandkbs2.easyexcel.dto.ExportBehaviorDTO
;
import
com.zhiwei.brandkbs2.easyexcel.dto.ExportUserLogRecordDTO
;
import
com.zhiwei.brandkbs2.enmus.RoleEnum
;
import
com.zhiwei.brandkbs2.enmus.RoleEnum
;
import
com.zhiwei.brandkbs2.model.ResponseResult
;
import
com.zhiwei.brandkbs2.model.ResponseResult
;
import
com.zhiwei.brandkbs2.service.BehaviorService
;
import
com.zhiwei.brandkbs2.service.BehaviorService
;
...
@@ -13,10 +14,7 @@ import io.swagger.annotations.Api;
...
@@ -13,10 +14,7 @@ import io.swagger.annotations.Api;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.util.List
;
import
java.util.List
;
...
@@ -77,4 +75,41 @@ public class BehaviorController extends BaseController {
...
@@ -77,4 +75,41 @@ public class BehaviorController extends BaseController {
return
ResponseResult
.
success
();
return
ResponseResult
.
success
();
}
}
@ApiOperation
(
"记录用户操作记录"
)
@GetMapping
(
"/logRecord/save"
)
public
ResponseResult
saveUserLogRecord
(
@RequestParam
(
value
=
"description"
)
String
description
)
{
behaviorService
.
saveUserLogRecord
(
description
);
return
ResponseResult
.
success
();
}
@ApiOperation
(
"分页查询用户操作记录列表"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"page"
,
value
=
"页码"
,
defaultValue
=
"1"
,
paramType
=
"query"
,
dataType
=
"int"
),
@ApiImplicitParam
(
name
=
"pageSize"
,
value
=
"每页记录数"
,
defaultValue
=
"10"
,
paramType
=
"query"
,
dataType
=
"int"
),
@ApiImplicitParam
(
name
=
"startTime"
,
value
=
"开始时间"
,
required
=
true
,
paramType
=
"query"
,
dataType
=
"long"
),
@ApiImplicitParam
(
name
=
"endTime"
,
value
=
"结束时间"
,
required
=
true
,
paramType
=
"query"
,
dataType
=
"long"
),
@ApiImplicitParam
(
name
=
"keyword"
,
value
=
"关键词"
,
defaultValue
=
""
,
paramType
=
"query"
,
dataType
=
"string"
)
})
@GetMapping
(
"/logRecord/list"
)
public
ResponseResult
findLogRecordList
(
@RequestParam
(
value
=
"page"
,
defaultValue
=
"1"
)
int
page
,
@RequestParam
(
value
=
"pageSize"
,
defaultValue
=
"10"
)
int
pageSize
,
@RequestParam
(
"startTime"
)
long
startTime
,
@RequestParam
(
"endTime"
)
long
endTime
,
@RequestParam
(
value
=
"keyword"
,
defaultValue
=
""
)
String
keyword
)
{
return
ResponseResult
.
success
(
behaviorService
.
findLogRecordList
(
page
,
pageSize
,
startTime
,
endTime
,
keyword
));
}
@ApiOperation
(
"下载用户操作记录列表"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"startTime"
,
value
=
"开始时间"
,
required
=
true
,
paramType
=
"query"
,
dataType
=
"long"
),
@ApiImplicitParam
(
name
=
"endTime"
,
value
=
"结束时间"
,
required
=
true
,
paramType
=
"query"
,
dataType
=
"long"
),
})
@GetMapping
(
"/logRecord/download"
)
public
ResponseResult
downloadLogRecordList
(
@RequestParam
(
"startTime"
)
long
startTime
,
@RequestParam
(
"endTime"
)
long
endTime
)
{
List
<
ExportUserLogRecordDTO
>
list
=
behaviorService
.
downloadUserLogRecord
(
startTime
,
endTime
);
String
sheetName
=
ProjectService
.
getProjectVOById
(
UserThreadLocal
.
getProjectId
()).
getProjectName
()
+
"_操作记录"
;
EasyExcelUtil
.
download
(
sheetName
,
sheetName
,
ExportUserLogRecordDTO
.
class
,
list
,
response
);
return
ResponseResult
.
success
();
}
}
}
src/main/java/com/zhiwei/brandkbs2/controller/app/AppArticleController.java
View file @
000a07fe
package
com
.
zhiwei
.
brandkbs2
.
controller
.
app
;
package
com
.
zhiwei
.
brandkbs2
.
controller
.
app
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.zhiwei.brandkbs2.aop.LogRecord
;
import
com.zhiwei.brandkbs2.auth.Auth
;
import
com.zhiwei.brandkbs2.auth.Auth
;
import
com.zhiwei.brandkbs2.controller.BaseController
;
import
com.zhiwei.brandkbs2.controller.BaseController
;
import
com.zhiwei.brandkbs2.easyexcel.EasyExcelUtil
;
import
com.zhiwei.brandkbs2.easyexcel.EasyExcelUtil
;
...
@@ -46,6 +47,7 @@ public class AppArticleController extends BaseController {
...
@@ -46,6 +47,7 @@ public class AppArticleController extends BaseController {
@ApiOperation
(
"舆情列表"
)
@ApiOperation
(
"舆情列表"
)
@PostMapping
(
"/mark/list"
)
@PostMapping
(
"/mark/list"
)
@LogRecord
(
description
=
"舆情库-舆情列表"
)
public
ResponseResult
getYuqingMarkList
(
@RequestBody
MarkSearchDTO
markSearchDTO
)
{
public
ResponseResult
getYuqingMarkList
(
@RequestBody
MarkSearchDTO
markSearchDTO
)
{
return
ResponseResult
.
success
(
markDataService
.
getYuqingMarkList
(
markSearchDTO
));
return
ResponseResult
.
success
(
markDataService
.
getYuqingMarkList
(
markSearchDTO
));
}
}
...
@@ -107,6 +109,7 @@ public class AppArticleController extends BaseController {
...
@@ -107,6 +109,7 @@ public class AppArticleController extends BaseController {
@ApiImplicitParam
(
name
=
"startTime"
,
value
=
"开始时间"
,
paramType
=
"query"
,
dataType
=
"long"
),
@ApiImplicitParam
(
name
=
"startTime"
,
value
=
"开始时间"
,
paramType
=
"query"
,
dataType
=
"long"
),
@ApiImplicitParam
(
name
=
"endTime"
,
value
=
"结束时间"
,
paramType
=
"query"
,
dataType
=
"long"
)
@ApiImplicitParam
(
name
=
"endTime"
,
value
=
"结束时间"
,
paramType
=
"query"
,
dataType
=
"long"
)
})
})
@LogRecord
(
description
=
"舆情库-舆情分析"
)
@GetMapping
(
"/emotion/proportion"
)
@GetMapping
(
"/emotion/proportion"
)
public
ResponseResult
getMarkEmotionProportion
(
@RequestParam
(
value
=
"startTime"
,
required
=
false
)
Long
startTime
,
public
ResponseResult
getMarkEmotionProportion
(
@RequestParam
(
value
=
"startTime"
,
required
=
false
)
Long
startTime
,
@RequestParam
(
value
=
"endTime"
,
required
=
false
)
Long
endTime
)
{
@RequestParam
(
value
=
"endTime"
,
required
=
false
)
Long
endTime
)
{
...
@@ -156,6 +159,7 @@ public class AppArticleController extends BaseController {
...
@@ -156,6 +159,7 @@ public class AppArticleController extends BaseController {
@ApiOperation
(
"舆情简报-全部报告列表"
)
@ApiOperation
(
"舆情简报-全部报告列表"
)
@GetMapping
(
"/report/list"
)
@GetMapping
(
"/report/list"
)
@LogRecord
(
description
=
"舆情库-舆情简报"
)
public
ResponseResult
findReportList
(
ReportSearchDTO
reportSearch
)
{
public
ResponseResult
findReportList
(
ReportSearchDTO
reportSearch
)
{
return
ResponseResult
.
success
(
reportService
.
findReportList
(
reportSearch
));
return
ResponseResult
.
success
(
reportService
.
findReportList
(
reportSearch
));
}
}
...
...
src/main/java/com/zhiwei/brandkbs2/controller/app/AppChannelController.java
View file @
000a07fe
package
com
.
zhiwei
.
brandkbs2
.
controller
.
app
;
package
com
.
zhiwei
.
brandkbs2
.
controller
.
app
;
import
com.zhiwei.brandkbs2.aop.LogRecord
;
import
com.zhiwei.brandkbs2.auth.Auth
;
import
com.zhiwei.brandkbs2.auth.Auth
;
import
com.zhiwei.brandkbs2.controller.BaseController
;
import
com.zhiwei.brandkbs2.controller.BaseController
;
import
com.zhiwei.brandkbs2.easyexcel.EasyExcelUtil
;
import
com.zhiwei.brandkbs2.easyexcel.EasyExcelUtil
;
...
@@ -41,6 +42,7 @@ public class AppChannelController extends BaseController {
...
@@ -41,6 +42,7 @@ public class AppChannelController extends BaseController {
@ApiImplicitParam
(
name
=
"pageSize"
,
value
=
"选取前几"
,
defaultValue
=
"50"
,
paramType
=
"query"
,
dataType
=
"int"
),
@ApiImplicitParam
(
name
=
"pageSize"
,
value
=
"选取前几"
,
defaultValue
=
"50"
,
paramType
=
"query"
,
dataType
=
"int"
),
})
})
@ApiOperation
(
"渠道库-活跃渠道榜"
)
@ApiOperation
(
"渠道库-活跃渠道榜"
)
@LogRecord
(
description
=
"渠道库-活跃渠道榜"
)
@GetMapping
(
"/list/active"
)
@GetMapping
(
"/list/active"
)
public
ResponseResult
getActiveChannelList
(
@RequestParam
(
value
=
"contendId"
,
defaultValue
=
"0"
)
String
contendId
,
public
ResponseResult
getActiveChannelList
(
@RequestParam
(
value
=
"contendId"
,
defaultValue
=
"0"
)
String
contendId
,
@RequestParam
(
value
=
"platform"
,
required
=
false
)
String
platform
,
@RequestParam
(
value
=
"platform"
,
required
=
false
)
String
platform
,
...
@@ -61,6 +63,7 @@ public class AppChannelController extends BaseController {
...
@@ -61,6 +63,7 @@ public class AppChannelController extends BaseController {
@ApiImplicitParam
(
name
=
"endTime"
,
value
=
"结束时间"
,
paramType
=
"query"
,
dataType
=
"long"
),
@ApiImplicitParam
(
name
=
"endTime"
,
value
=
"结束时间"
,
paramType
=
"query"
,
dataType
=
"long"
),
@ApiImplicitParam
(
name
=
"pageSize"
,
value
=
"选取前几"
,
defaultValue
=
"50"
,
paramType
=
"query"
,
dataType
=
"int"
)
@ApiImplicitParam
(
name
=
"pageSize"
,
value
=
"选取前几"
,
defaultValue
=
"50"
,
paramType
=
"query"
,
dataType
=
"int"
)
})
})
@LogRecord
(
description
=
"渠道库-友好渠道榜"
)
@GetMapping
(
"/list/positive"
)
@GetMapping
(
"/list/positive"
)
public
ResponseResult
getPositiveList
(
@RequestParam
(
value
=
"contendId"
,
defaultValue
=
"0"
)
String
contendId
,
public
ResponseResult
getPositiveList
(
@RequestParam
(
value
=
"contendId"
,
defaultValue
=
"0"
)
String
contendId
,
@RequestParam
(
value
=
"platform"
,
required
=
false
)
String
platform
,
@RequestParam
(
value
=
"platform"
,
required
=
false
)
String
platform
,
...
@@ -82,6 +85,7 @@ public class AppChannelController extends BaseController {
...
@@ -82,6 +85,7 @@ public class AppChannelController extends BaseController {
@ApiImplicitParam
(
name
=
"endTime"
,
value
=
"结束时间"
,
paramType
=
"query"
,
dataType
=
"long"
),
@ApiImplicitParam
(
name
=
"endTime"
,
value
=
"结束时间"
,
paramType
=
"query"
,
dataType
=
"long"
),
@ApiImplicitParam
(
name
=
"pageSize"
,
value
=
"选取前几"
,
defaultValue
=
"50"
,
paramType
=
"query"
,
dataType
=
"int"
)
@ApiImplicitParam
(
name
=
"pageSize"
,
value
=
"选取前几"
,
defaultValue
=
"50"
,
paramType
=
"query"
,
dataType
=
"int"
)
})
})
@LogRecord
(
description
=
"渠道库-敏感渠道榜"
)
@GetMapping
(
"/list/negative"
)
@GetMapping
(
"/list/negative"
)
public
ResponseResult
getNegativeList
(
@RequestParam
(
value
=
"contendId"
,
defaultValue
=
"0"
)
String
contendId
,
public
ResponseResult
getNegativeList
(
@RequestParam
(
value
=
"contendId"
,
defaultValue
=
"0"
)
String
contendId
,
@RequestParam
(
value
=
"platform"
,
required
=
false
)
String
platform
,
@RequestParam
(
value
=
"platform"
,
required
=
false
)
String
platform
,
...
@@ -109,6 +113,7 @@ public class AppChannelController extends BaseController {
...
@@ -109,6 +113,7 @@ public class AppChannelController extends BaseController {
@ApiOperation
(
"渠道库-收藏渠道列表"
)
@ApiOperation
(
"渠道库-收藏渠道列表"
)
@ApiImplicitParams
(
@ApiImplicitParam
(
name
=
"contendId"
,
value
=
"品牌ID"
,
paramType
=
"query"
,
dataType
=
"string"
))
@ApiImplicitParams
(
@ApiImplicitParam
(
name
=
"contendId"
,
value
=
"品牌ID"
,
paramType
=
"query"
,
dataType
=
"string"
))
@LogRecord
(
description
=
"渠道库-收藏渠道"
)
@GetMapping
(
"/list/collect"
)
@GetMapping
(
"/list/collect"
)
public
ResponseResult
getCollectList
(
@RequestParam
(
value
=
"contendId"
,
required
=
false
,
defaultValue
=
"0"
)
String
contendId
)
{
public
ResponseResult
getCollectList
(
@RequestParam
(
value
=
"contendId"
,
required
=
false
,
defaultValue
=
"0"
)
String
contendId
)
{
return
ResponseResult
.
success
(
channelService
.
getCollectList
(
contendId
));
return
ResponseResult
.
success
(
channelService
.
getCollectList
(
contendId
));
...
...
src/main/java/com/zhiwei/brandkbs2/controller/app/AppContendController.java
View file @
000a07fe
package
com
.
zhiwei
.
brandkbs2
.
controller
.
app
;
package
com
.
zhiwei
.
brandkbs2
.
controller
.
app
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.zhiwei.brandkbs2.aop.LogRecord
;
import
com.zhiwei.brandkbs2.auth.Auth
;
import
com.zhiwei.brandkbs2.auth.Auth
;
import
com.zhiwei.brandkbs2.auth.UserThreadLocal
;
import
com.zhiwei.brandkbs2.auth.UserThreadLocal
;
import
com.zhiwei.brandkbs2.controller.BaseController
;
import
com.zhiwei.brandkbs2.controller.BaseController
;
...
@@ -41,12 +42,14 @@ public class AppContendController extends BaseController {
...
@@ -41,12 +42,14 @@ public class AppContendController extends BaseController {
}
}
@ApiOperation
(
"竞品库-竞品舆情-搜索结果列表"
)
@ApiOperation
(
"竞品库-竞品舆情-搜索结果列表"
)
@LogRecord
(
description
=
"竞品舆情库-竞品舆情"
)
@PostMapping
(
"/list"
)
@PostMapping
(
"/list"
)
public
ResponseResult
getContendSearchList
(
@RequestBody
MarkSearchDTO
markSearchDTO
){
public
ResponseResult
getContendSearchList
(
@RequestBody
MarkSearchDTO
markSearchDTO
){
return
ResponseResult
.
success
(
markDataService
.
getContendSearchList
(
markSearchDTO
));
return
ResponseResult
.
success
(
markDataService
.
getContendSearchList
(
markSearchDTO
));
}
}
@ApiOperation
(
"竞品库-竞品分析-舆情总结页面"
)
@ApiOperation
(
"竞品库-竞品分析-舆情总结页面"
)
@LogRecord
(
description
=
"竞品舆情库-竞品对比"
)
@PostMapping
(
"/summary"
)
@PostMapping
(
"/summary"
)
public
ResponseResult
getSummary
(
@RequestBody
MarkSearchDTO
markSearchDTO
)
throws
IOException
{
public
ResponseResult
getSummary
(
@RequestBody
MarkSearchDTO
markSearchDTO
)
throws
IOException
{
return
ResponseResult
.
success
(
markDataService
.
getContendSummary
(
markSearchDTO
,
true
));
return
ResponseResult
.
success
(
markDataService
.
getContendSummary
(
markSearchDTO
,
true
));
...
...
src/main/java/com/zhiwei/brandkbs2/controller/app/AppCrisisController.java
View file @
000a07fe
...
@@ -2,6 +2,7 @@ package com.zhiwei.brandkbs2.controller.app;
...
@@ -2,6 +2,7 @@ package com.zhiwei.brandkbs2.controller.app;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.zhiwei.brandkbs2.aop.LogRecord
;
import
com.zhiwei.brandkbs2.auth.Auth
;
import
com.zhiwei.brandkbs2.auth.Auth
;
import
com.zhiwei.brandkbs2.auth.UserThreadLocal
;
import
com.zhiwei.brandkbs2.auth.UserThreadLocal
;
import
com.zhiwei.brandkbs2.controller.BaseController
;
import
com.zhiwei.brandkbs2.controller.BaseController
;
...
@@ -73,6 +74,7 @@ public class AppCrisisController extends BaseController {
...
@@ -73,6 +74,7 @@ public class AppCrisisController extends BaseController {
}
}
@ApiOperation
(
"危机库-危机库列表"
)
@ApiOperation
(
"危机库-危机库列表"
)
@LogRecord
(
description
=
"危机案例库"
)
@GetMapping
(
"/crisisList"
)
@GetMapping
(
"/crisisList"
)
public
ResponseResult
crisisList
(
@RequestParam
(
value
=
"page"
,
defaultValue
=
"1"
)
Integer
page
,
public
ResponseResult
crisisList
(
@RequestParam
(
value
=
"page"
,
defaultValue
=
"1"
)
Integer
page
,
@RequestParam
(
value
=
"pageSize"
,
defaultValue
=
"10"
)
Integer
pageSize
,
@RequestParam
(
value
=
"pageSize"
,
defaultValue
=
"10"
)
Integer
pageSize
,
...
...
src/main/java/com/zhiwei/brandkbs2/controller/app/AppEventController.java
View file @
000a07fe
...
@@ -2,6 +2,7 @@ package com.zhiwei.brandkbs2.controller.app;
...
@@ -2,6 +2,7 @@ package com.zhiwei.brandkbs2.controller.app;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.zhiwei.brandkbs2.aop.LogRecord
;
import
com.zhiwei.brandkbs2.auth.Auth
;
import
com.zhiwei.brandkbs2.auth.Auth
;
import
com.zhiwei.brandkbs2.auth.UserThreadLocal
;
import
com.zhiwei.brandkbs2.auth.UserThreadLocal
;
import
com.zhiwei.brandkbs2.controller.BaseController
;
import
com.zhiwei.brandkbs2.controller.BaseController
;
...
@@ -121,6 +122,7 @@ public class AppEventController extends BaseController {
...
@@ -121,6 +122,7 @@ public class AppEventController extends BaseController {
}
}
@ApiOperation
(
"前台事件库-全网事件库-列表"
)
@ApiOperation
(
"前台事件库-全网事件库-列表"
)
@LogRecord
(
description
=
"事件库-全网事件库"
)
@GetMapping
(
"/getWholeNetworkEventsList"
)
@GetMapping
(
"/getWholeNetworkEventsList"
)
public
ResponseResult
getWholeNetworkEventsList
(
@RequestParam
(
value
=
"firstType"
,
required
=
false
,
defaultValue
=
""
)
String
firstType
,
public
ResponseResult
getWholeNetworkEventsList
(
@RequestParam
(
value
=
"firstType"
,
required
=
false
,
defaultValue
=
""
)
String
firstType
,
@RequestParam
(
value
=
"start"
,
required
=
false
,
defaultValue
=
"0"
)
long
start
,
@RequestParam
(
value
=
"start"
,
required
=
false
,
defaultValue
=
"0"
)
long
start
,
...
@@ -162,6 +164,7 @@ public class AppEventController extends BaseController {
...
@@ -162,6 +164,7 @@ public class AppEventController extends BaseController {
}
}
@ApiOperation
(
"前台事件库-品牌事件库-获取品牌事件库事件列表"
)
@ApiOperation
(
"前台事件库-品牌事件库-获取品牌事件库事件列表"
)
@LogRecord
(
description
=
"事件库-品牌事件库"
)
@PostMapping
(
"/eventList"
)
@PostMapping
(
"/eventList"
)
public
ResponseResult
getEventListMiddleware
(
@RequestBody
BrandkbsEventSearchDTO
dto
){
public
ResponseResult
getEventListMiddleware
(
@RequestBody
BrandkbsEventSearchDTO
dto
){
return
ResponseResult
.
success
(
eventService
.
getEventListMiddleware
(
dto
));
return
ResponseResult
.
success
(
eventService
.
getEventListMiddleware
(
dto
));
...
@@ -174,6 +177,7 @@ public class AppEventController extends BaseController {
...
@@ -174,6 +177,7 @@ public class AppEventController extends BaseController {
}
}
@ApiOperation
(
"前台事件库-事件监测-获取事件监测列表"
)
@ApiOperation
(
"前台事件库-事件监测-获取事件监测列表"
)
@LogRecord
(
description
=
"事件库-事件分析"
)
@GetMapping
(
"/eventMonitor"
)
@GetMapping
(
"/eventMonitor"
)
public
ResponseResult
getEventMonitor
(
@RequestParam
(
value
=
"page"
,
defaultValue
=
"1"
)
Integer
page
,
public
ResponseResult
getEventMonitor
(
@RequestParam
(
value
=
"page"
,
defaultValue
=
"1"
)
Integer
page
,
@RequestParam
(
value
=
"pageSize"
,
defaultValue
=
"10"
)
Integer
pageSize
){
@RequestParam
(
value
=
"pageSize"
,
defaultValue
=
"10"
)
Integer
pageSize
){
...
@@ -219,6 +223,7 @@ public class AppEventController extends BaseController {
...
@@ -219,6 +223,7 @@ public class AppEventController extends BaseController {
@ApiOperation
(
"前台事件库-事件详情-获取事件基础信息"
)
@ApiOperation
(
"前台事件库-事件详情-获取事件基础信息"
)
@GetMapping
(
"/detail/baseInfo"
)
@GetMapping
(
"/detail/baseInfo"
)
@LogRecord
(
values
=
"title"
,
description
=
"事件库-品牌事件库"
,
arguments
=
false
,
entity
=
true
)
@Auth
(
role
=
RoleEnum
.
NO_AUTHORISE
)
@Auth
(
role
=
RoleEnum
.
NO_AUTHORISE
)
public
ResponseResult
eventBaseInfo
(
@RequestParam
(
value
=
"eventId"
)
String
eventId
){
public
ResponseResult
eventBaseInfo
(
@RequestParam
(
value
=
"eventId"
)
String
eventId
){
return
ResponseResult
.
success
(
eventService
.
eventBaseInfo
(
eventId
));
return
ResponseResult
.
success
(
eventService
.
eventBaseInfo
(
eventId
));
...
...
src/main/java/com/zhiwei/brandkbs2/controller/app/AppHotController.java
View file @
000a07fe
...
@@ -2,6 +2,7 @@ package com.zhiwei.brandkbs2.controller.app;
...
@@ -2,6 +2,7 @@ package com.zhiwei.brandkbs2.controller.app;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.zhiwei.brandkbs2.aop.LogRecord
;
import
com.zhiwei.brandkbs2.auth.Auth
;
import
com.zhiwei.brandkbs2.auth.Auth
;
import
com.zhiwei.brandkbs2.auth.UserThreadLocal
;
import
com.zhiwei.brandkbs2.auth.UserThreadLocal
;
import
com.zhiwei.brandkbs2.common.RedisKeyPrefix
;
import
com.zhiwei.brandkbs2.common.RedisKeyPrefix
;
...
@@ -77,6 +78,7 @@ public class AppHotController extends BaseController {
...
@@ -77,6 +78,7 @@ public class AppHotController extends BaseController {
* bilibili-ranking B站
* bilibili-ranking B站
*/
*/
@ApiOperation
(
"热点库-列表"
)
@ApiOperation
(
"热点库-列表"
)
@LogRecord
(
description
=
"热点库"
)
@GetMapping
(
"/getHotList"
)
@GetMapping
(
"/getHotList"
)
public
ResponseResult
getHotList
(
@RequestParam
(
value
=
"sortType"
,
defaultValue
=
"realTime"
)
String
sortType
,
public
ResponseResult
getHotList
(
@RequestParam
(
value
=
"sortType"
,
defaultValue
=
"realTime"
)
String
sortType
,
@RequestParam
(
value
=
"type"
,
defaultValue
=
"weibo"
)
String
type
)
{
@RequestParam
(
value
=
"type"
,
defaultValue
=
"weibo"
)
String
type
)
{
...
...
src/main/java/com/zhiwei/brandkbs2/controller/app/AppIndexController.java
View file @
000a07fe
package
com
.
zhiwei
.
brandkbs2
.
controller
.
app
;
package
com
.
zhiwei
.
brandkbs2
.
controller
.
app
;
import
com.zhiwei.brandkbs2.aop.LogRecord
;
import
com.zhiwei.brandkbs2.auth.Auth
;
import
com.zhiwei.brandkbs2.auth.Auth
;
import
com.zhiwei.brandkbs2.controller.BaseController
;
import
com.zhiwei.brandkbs2.controller.BaseController
;
import
com.zhiwei.brandkbs2.enmus.RoleEnum
;
import
com.zhiwei.brandkbs2.enmus.RoleEnum
;
...
@@ -38,6 +39,7 @@ public class AppIndexController extends BaseController {
...
@@ -38,6 +39,7 @@ public class AppIndexController extends BaseController {
@ApiImplicitParam
(
name
=
"startTime"
,
value
=
"开始时间"
,
paramType
=
"query"
,
dataType
=
"long"
),
@ApiImplicitParam
(
name
=
"startTime"
,
value
=
"开始时间"
,
paramType
=
"query"
,
dataType
=
"long"
),
@ApiImplicitParam
(
name
=
"endTime"
,
value
=
"结束时间"
,
paramType
=
"query"
,
dataType
=
"long"
)
@ApiImplicitParam
(
name
=
"endTime"
,
value
=
"结束时间"
,
paramType
=
"query"
,
dataType
=
"long"
)
})
})
@LogRecord
(
description
=
"首页"
)
@GetMapping
(
"/yuqing-amount"
)
@GetMapping
(
"/yuqing-amount"
)
public
ResponseResult
getYuqingAmount
(
@RequestParam
(
value
=
"startTime"
,
required
=
false
)
Long
startTime
,
public
ResponseResult
getYuqingAmount
(
@RequestParam
(
value
=
"startTime"
,
required
=
false
)
Long
startTime
,
@RequestParam
(
value
=
"endTime"
,
required
=
false
)
Long
endTime
)
{
@RequestParam
(
value
=
"endTime"
,
required
=
false
)
Long
endTime
)
{
...
...
src/main/java/com/zhiwei/brandkbs2/controller/app/AppSearchController.java
View file @
000a07fe
...
@@ -3,6 +3,7 @@ package com.zhiwei.brandkbs2.controller.app;
...
@@ -3,6 +3,7 @@ package com.zhiwei.brandkbs2.controller.app;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.zhiwei.brandkbs2.aop.LogRecord
;
import
com.zhiwei.brandkbs2.auth.Auth
;
import
com.zhiwei.brandkbs2.auth.Auth
;
import
com.zhiwei.brandkbs2.auth.UserThreadLocal
;
import
com.zhiwei.brandkbs2.auth.UserThreadLocal
;
import
com.zhiwei.brandkbs2.config.Constant
;
import
com.zhiwei.brandkbs2.config.Constant
;
...
@@ -76,6 +77,7 @@ public class AppSearchController extends BaseController {
...
@@ -76,6 +77,7 @@ public class AppSearchController extends BaseController {
ProjectService
projectService
;
ProjectService
projectService
;
@ApiOperation
(
"搜索-查热点"
)
@ApiOperation
(
"搜索-查热点"
)
@LogRecord
(
values
=
"keyword"
,
description
=
"查热点"
,
arguments
=
true
,
entity
=
false
)
@GetMapping
(
"/hot/list"
)
@GetMapping
(
"/hot/list"
)
public
ResponseResult
searchHotList
(
@RequestParam
(
value
=
"pageSize"
,
defaultValue
=
"10"
)
Integer
limit
,
public
ResponseResult
searchHotList
(
@RequestParam
(
value
=
"pageSize"
,
defaultValue
=
"10"
)
Integer
limit
,
@RequestParam
(
value
=
"page"
,
defaultValue
=
"1"
)
Integer
page
,
@RequestParam
(
value
=
"page"
,
defaultValue
=
"1"
)
Integer
page
,
...
@@ -91,6 +93,7 @@ public class AppSearchController extends BaseController {
...
@@ -91,6 +93,7 @@ public class AppSearchController extends BaseController {
}
}
@ApiOperation
(
"搜索-查危机"
)
@ApiOperation
(
"搜索-查危机"
)
@LogRecord
(
values
=
"keyword"
,
description
=
"查危机"
,
arguments
=
true
,
entity
=
false
)
@GetMapping
(
"/crisisSearch"
)
@GetMapping
(
"/crisisSearch"
)
public
ResponseResult
crisisSearch
(
@RequestParam
(
value
=
"page"
,
defaultValue
=
"1"
)
Integer
page
,
public
ResponseResult
crisisSearch
(
@RequestParam
(
value
=
"page"
,
defaultValue
=
"1"
)
Integer
page
,
@RequestParam
(
value
=
"pageSize"
,
defaultValue
=
"3"
)
Integer
pageSize
,
@RequestParam
(
value
=
"pageSize"
,
defaultValue
=
"3"
)
Integer
pageSize
,
...
@@ -112,6 +115,7 @@ public class AppSearchController extends BaseController {
...
@@ -112,6 +115,7 @@ public class AppSearchController extends BaseController {
}
}
@ApiOperation
(
"搜索-全网事件库-查事件"
)
@ApiOperation
(
"搜索-全网事件库-查事件"
)
@LogRecord
(
values
=
"keyword"
,
description
=
"查事件"
,
arguments
=
true
,
entity
=
false
)
@GetMapping
(
"/getWholeNetworkEvents"
)
@GetMapping
(
"/getWholeNetworkEvents"
)
public
ResponseResult
getWholeNetworkEvents
(
@RequestParam
(
"keyword"
)
String
keyword
,
public
ResponseResult
getWholeNetworkEvents
(
@RequestParam
(
"keyword"
)
String
keyword
,
@RequestParam
(
value
=
"page"
,
defaultValue
=
"1"
)
Integer
page
,
@RequestParam
(
value
=
"page"
,
defaultValue
=
"1"
)
Integer
page
,
...
@@ -131,6 +135,7 @@ public class AppSearchController extends BaseController {
...
@@ -131,6 +135,7 @@ public class AppSearchController extends BaseController {
}
}
@ApiOperation
(
"搜索-全网搜"
)
@ApiOperation
(
"搜索-全网搜"
)
@LogRecord
(
values
=
{
"keyword"
,
"search"
},
description
=
"全网搜"
,
arguments
=
true
,
entity
=
true
)
@PostMapping
(
"/searchWhole"
)
@PostMapping
(
"/searchWhole"
)
public
ResponseResult
searchWholeNetwork
(
@RequestBody
SearchFilterDTO
dto
)
{
public
ResponseResult
searchWholeNetwork
(
@RequestBody
SearchFilterDTO
dto
)
{
// 针对商业数据库做限制
// 针对商业数据库做限制
...
@@ -171,6 +176,7 @@ public class AppSearchController extends BaseController {
...
@@ -171,6 +176,7 @@ public class AppSearchController extends BaseController {
}
}
@ApiOperation
(
"舆情列表"
)
@ApiOperation
(
"舆情列表"
)
@LogRecord
(
values
=
"keyword"
,
description
=
"查舆情"
,
arguments
=
true
,
entity
=
true
)
@PostMapping
(
"/mark/list"
)
@PostMapping
(
"/mark/list"
)
public
ResponseResult
getYuqingMarkList
(
@RequestBody
MarkSearchDTO
markSearchDTO
)
{
public
ResponseResult
getYuqingMarkList
(
@RequestBody
MarkSearchDTO
markSearchDTO
)
{
return
ResponseResult
.
success
(
markDataService
.
getYuqingMarkList
(
markSearchDTO
));
return
ResponseResult
.
success
(
markDataService
.
getYuqingMarkList
(
markSearchDTO
));
...
@@ -201,6 +207,7 @@ public class AppSearchController extends BaseController {
...
@@ -201,6 +207,7 @@ public class AppSearchController extends BaseController {
@ApiOperation
(
"搜索-渠道列表"
)
@ApiOperation
(
"搜索-渠道列表"
)
@LogRecord
(
values
=
"keyword"
,
description
=
"查渠道"
,
arguments
=
true
,
entity
=
true
)
@PostMapping
(
value
=
"/channel/channelList"
)
@PostMapping
(
value
=
"/channel/channelList"
)
public
ResponseResult
getChannelList
(
@RequestBody
ChannelSearchDTO
channelSearchDTO
)
{
public
ResponseResult
getChannelList
(
@RequestBody
ChannelSearchDTO
channelSearchDTO
)
{
return
ResponseResult
.
success
(
channelService
.
getChannelListNew
(
channelSearchDTO
.
getPage
(),
channelSearchDTO
.
getPageSize
(),
return
ResponseResult
.
success
(
channelService
.
getChannelListNew
(
channelSearchDTO
.
getPage
(),
channelSearchDTO
.
getPageSize
(),
...
@@ -238,12 +245,14 @@ public class AppSearchController extends BaseController {
...
@@ -238,12 +245,14 @@ public class AppSearchController extends BaseController {
}
}
@ApiOperation
(
"搜索-前台事件库-品牌事件库-新"
)
@ApiOperation
(
"搜索-前台事件库-品牌事件库-新"
)
@LogRecord
(
values
=
"keyword"
,
description
=
"查事件"
,
arguments
=
true
,
entity
=
true
)
@PostMapping
(
"/event/newList"
)
@PostMapping
(
"/event/newList"
)
public
ResponseResult
getEventListMiddleware
(
@RequestBody
BrandkbsEventSearchDTO
dto
){
public
ResponseResult
getEventListMiddleware
(
@RequestBody
BrandkbsEventSearchDTO
dto
){
return
ResponseResult
.
success
(
eventService
.
getEventListMiddleware
(
dto
));
return
ResponseResult
.
success
(
eventService
.
getEventListMiddleware
(
dto
));
}
}
@ApiOperation
(
"搜索-查竞品"
)
@ApiOperation
(
"搜索-查竞品"
)
@LogRecord
(
values
=
"keyword"
,
description
=
"查竞品"
,
arguments
=
true
,
entity
=
true
)
@PostMapping
(
"/contend/list"
)
@PostMapping
(
"/contend/list"
)
public
ResponseResult
getContendSearchList
(
@RequestBody
MarkSearchDTO
markSearchDTO
)
{
public
ResponseResult
getContendSearchList
(
@RequestBody
MarkSearchDTO
markSearchDTO
)
{
return
ResponseResult
.
success
(
markDataService
.
getContendSearchList
(
markSearchDTO
));
return
ResponseResult
.
success
(
markDataService
.
getContendSearchList
(
markSearchDTO
));
...
...
src/main/java/com/zhiwei/brandkbs2/dao/EventMiddlewareDao.java
View file @
000a07fe
...
@@ -9,6 +9,7 @@ import com.zhiwei.middleware.event.pojo.dto.EventDTO;
...
@@ -9,6 +9,7 @@ import com.zhiwei.middleware.event.pojo.dto.EventDTO;
import
com.zhiwei.middleware.event.pojo.dto.EventTagRelatedDTO
;
import
com.zhiwei.middleware.event.pojo.dto.EventTagRelatedDTO
;
import
com.zhiwei.middleware.event.pojo.entity.*
;
import
com.zhiwei.middleware.event.pojo.entity.*
;
import
com.zhiwei.middleware.event.pojo.vo.EventListInfoVO
;
import
com.zhiwei.middleware.event.pojo.vo.EventListInfoVO
;
import
com.zhiwei.middleware.event.pojo.vo.EventTagBrandkbsVO
;
import
com.zhiwei.middleware.event.pojo.vo.EventVO
;
import
com.zhiwei.middleware.event.pojo.vo.EventVO
;
import
java.util.List
;
import
java.util.List
;
...
@@ -28,6 +29,7 @@ public interface EventMiddlewareDao {
...
@@ -28,6 +29,7 @@ public interface EventMiddlewareDao {
* @return
* @return
*/
*/
PageData
<
EventListInfoVO
>
getEventListBrandkbs
(
BrandkbsEventSearchDTO
dto
);
PageData
<
EventListInfoVO
>
getEventListBrandkbs
(
BrandkbsEventSearchDTO
dto
);
/**
/**
* 根据id删除事件
* 根据id删除事件
* @param eventId
* @param eventId
...
@@ -276,6 +278,14 @@ public interface EventMiddlewareDao {
...
@@ -276,6 +278,14 @@ public interface EventMiddlewareDao {
ReturnData
getBrandkbsBindingEventTags
(
String
brandkbsProjectId
);
ReturnData
getBrandkbsBindingEventTags
(
String
brandkbsProjectId
);
/**
/**
* 获取品见项目标签绑定详情
* @param brandkbsProjectId 品见项目id
* @param brandkbsBrandId 品见品牌id
* @return
*/
List
<
EventTagBrandkbsVO
>
getBrandkbsBindingEventTagsDetail
(
String
brandkbsProjectId
,
String
brandkbsBrandId
);
/**
* 修改品见关联关系,若存在则修改,否则新增
* 修改品见关联关系,若存在则修改,否则新增
* @param yuQingProject
* @param yuQingProject
* @param yuQingProjectId
* @param yuQingProjectId
...
...
src/main/java/com/zhiwei/brandkbs2/dao/UserLogRecordDao.java
0 → 100644
View file @
000a07fe
package
com
.
zhiwei
.
brandkbs2
.
dao
;
import
com.zhiwei.brandkbs2.pojo.UserLogRecord
;
/**
* @ClassName: UserLogRecordDao
* @Description UserLogRecordDao
* @author: cjz
* @date: 2023-03-22 10:46
*/
public
interface
UserLogRecordDao
extends
BaseMongoDao
<
UserLogRecord
>{
}
src/main/java/com/zhiwei/brandkbs2/dao/impl/EventMiddlewareDaoImpl.java
View file @
000a07fe
...
@@ -16,6 +16,7 @@ import com.zhiwei.middleware.event.pojo.entity.Event;
...
@@ -16,6 +16,7 @@ import com.zhiwei.middleware.event.pojo.entity.Event;
import
com.zhiwei.middleware.event.pojo.entity.EventDetailAdditionalInfo
;
import
com.zhiwei.middleware.event.pojo.entity.EventDetailAdditionalInfo
;
import
com.zhiwei.middleware.event.pojo.entity.EventDisseminationTrend
;
import
com.zhiwei.middleware.event.pojo.entity.EventDisseminationTrend
;
import
com.zhiwei.middleware.event.pojo.vo.EventListInfoVO
;
import
com.zhiwei.middleware.event.pojo.vo.EventListInfoVO
;
import
com.zhiwei.middleware.event.pojo.vo.EventTagBrandkbsVO
;
import
com.zhiwei.middleware.event.pojo.vo.EventVO
;
import
com.zhiwei.middleware.event.pojo.vo.EventVO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
...
@@ -197,6 +198,11 @@ public class EventMiddlewareDaoImpl implements EventMiddlewareDao {
...
@@ -197,6 +198,11 @@ public class EventMiddlewareDaoImpl implements EventMiddlewareDao {
}
}
@Override
@Override
public
List
<
EventTagBrandkbsVO
>
getBrandkbsBindingEventTagsDetail
(
String
brandkbsProjectId
,
String
brandkbsBrandId
)
{
return
eventTagClient
.
getBrandkbsBindingEventTagsDetail
(
brandkbsProjectId
,
brandkbsBrandId
);
}
@Override
public
ReturnData
modifyBrandkbsEventTags
(
String
yuQingProject
,
String
yuQingProjectId
,
List
<
EventTagRelatedDTO
>
eventTags
,
String
brandkbsProject
,
String
brandkbsProjectId
,
String
brandkbsBrand
,
String
brandkbsBrandId
,
String
submitter
,
String
submitterId
)
{
public
ReturnData
modifyBrandkbsEventTags
(
String
yuQingProject
,
String
yuQingProjectId
,
List
<
EventTagRelatedDTO
>
eventTags
,
String
brandkbsProject
,
String
brandkbsProjectId
,
String
brandkbsBrand
,
String
brandkbsBrandId
,
String
submitter
,
String
submitterId
)
{
return
eventTagClient
.
modifyBrandkbsEventTags
(
yuQingProject
,
yuQingProjectId
,
eventTags
,
brandkbsProject
,
brandkbsProjectId
,
brandkbsBrand
,
brandkbsBrandId
,
submitter
,
submitterId
);
return
eventTagClient
.
modifyBrandkbsEventTags
(
yuQingProject
,
yuQingProjectId
,
eventTags
,
brandkbsProject
,
brandkbsProjectId
,
brandkbsBrand
,
brandkbsBrandId
,
submitter
,
submitterId
);
}
}
...
...
src/main/java/com/zhiwei/brandkbs2/dao/impl/UserLogRecordDaoImpl.java
0 → 100644
View file @
000a07fe
package
com
.
zhiwei
.
brandkbs2
.
dao
.
impl
;
import
com.zhiwei.brandkbs2.dao.UserLogRecordDao
;
import
com.zhiwei.brandkbs2.pojo.UserLogRecord
;
import
org.springframework.stereotype.Component
;
@Component
(
"UserLogRecordDao"
)
public
class
UserLogRecordDaoImpl
extends
BaseMongoDaoImpl
<
UserLogRecord
>
implements
UserLogRecordDao
{
private
static
final
String
COLLECTION_NAME
=
"brandkbs_user_log_record"
;
public
UserLogRecordDaoImpl
()
{
super
(
COLLECTION_NAME
);
}
}
src/main/java/com/zhiwei/brandkbs2/easyexcel/dto/ExportUserLogRecordDTO.java
0 → 100644
View file @
000a07fe
package
com
.
zhiwei
.
brandkbs2
.
easyexcel
.
dto
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @author cjz
* @version 1.0
* @description 导出用户操作实体类
* @date 2023/03/22 14:14
*/
@Data
public
class
ExportUserLogRecordDTO
{
@ExcelProperty
(
"用户名"
)
private
String
nickname
;
@ExcelProperty
(
"记录"
)
private
String
description
;
@ExcelProperty
(
"操作时间"
)
private
Date
time
;
@ExcelProperty
(
"用户身份"
)
private
String
role
;
}
src/main/java/com/zhiwei/brandkbs2/es/EsQueryTools.java
View file @
000a07fe
...
@@ -114,43 +114,29 @@ public class EsQueryTools {
...
@@ -114,43 +114,29 @@ public class EsQueryTools {
nestedBoolBuilder
.
must
(
QueryBuilders
.
termQuery
(
"brandkbs_cache_maps.channel_emotion"
,
channelEmotion
));
nestedBoolBuilder
.
must
(
QueryBuilders
.
termQuery
(
"brandkbs_cache_maps.channel_emotion"
,
channelEmotion
));
}
}
boolQueryBuilder
.
must
(
cacheMapsNestedQuery
(
nestedBoolBuilder
));
boolQueryBuilder
.
must
(
cacheMapsNestedQuery
(
nestedBoolBuilder
));
// 其他字段
// mediaTypes
if
(
CollectionUtils
.
isNotEmpty
(
mediaTypes
))
{
addMediaTypes
(
mediaTypes
,
boolQueryBuilder
);
BoolQueryBuilder
mediaTypesBoolQueryBuilder
=
QueryBuilders
.
boolQuery
();
for
(
String
mediaType
:
mediaTypes
)
{
BoolQueryBuilder
mediaTypeBoolQueryBuilder
=
QueryBuilders
.
boolQuery
();
//其他
if
(
ImportantChannelEnum
.
QITA
.
getState
().
equals
(
mediaType
))
{
for
(
String
tag
:
ImportantChannelEnum
.
getAllTagExceptSpec
())
{
mediaTypeBoolQueryBuilder
.
mustNot
(
QueryBuilders
.
matchQuery
(
"channel_tag"
,
tag
));
}
}
else
{
mediaTypeBoolQueryBuilder
.
must
(
QueryBuilders
.
matchQuery
(
"channel_tag"
,
mediaType
));
}
mediaTypesBoolQueryBuilder
.
should
(
mediaTypeBoolQueryBuilder
);
}
boolQueryBuilder
.
must
(
mediaTypesBoolQueryBuilder
);
}
return
boolQueryBuilder
;
return
boolQueryBuilder
;
}
}
public
static
BoolQueryBuilder
assembleCacheMapsQueryWithProject
(
String
projectId
,
List
<
String
>
mediaTypes
)
{
public
static
BoolQueryBuilder
assembleCacheMapsQueryWithProject
(
String
projectId
,
List
<
String
>
mediaTypes
)
{
BoolQueryBuilder
nestedBoolQueryBuilder
=
QueryBuilders
.
boolQuery
();
TermQueryBuilder
mustQuery
=
QueryBuilders
.
termQuery
(
"brandkbs_cache_maps.project_id.keyword"
,
projectId
);
if
(
CollectionUtils
.
isEmpty
(
mediaTypes
))
{
// 不组装mediaTypes的情况
nestedBoolQueryBuilder
.
must
(
cacheMapsNestedQuery
(
mustQuery
));
}
else
{
BoolQueryBuilder
boolQueryBuilder
=
QueryBuilders
.
boolQuery
();
BoolQueryBuilder
boolQueryBuilder
=
QueryBuilders
.
boolQuery
();
mediaTypes
.
forEach
(
e
->
{
BoolQueryBuilder
nestedBoolBuilder
=
QueryBuilders
.
boolQuery
();
BoolQueryBuilder
mediaTypeQueryBuilder
=
QueryBuilders
.
boolQuery
();
// 必要条件
mediaTypeQueryBuilder
.
must
(
QueryBuilders
.
termQuery
(
"brandkbs_cache_maps.channel_type.keyword"
,
e
));
nestedBoolBuilder
.
must
(
QueryBuilders
.
termQuery
(
"brandkbs_cache_maps.project_id.keyword"
,
projectId
));
mediaTypeQueryBuilder
.
must
(
mustQuery
);
// 或需要添加其余nested字段
boolQueryBuilder
.
should
(
cacheMapsNestedQuery
(
mediaTypeQueryBuilder
));
boolQueryBuilder
.
must
(
cacheMapsNestedQuery
(
nestedBoolBuilder
));
});
// mediaTypes
nestedBoolQueryBuilder
.
must
(
boolQueryBuilder
);
addMediaTypes
(
mediaTypes
,
boolQueryBuilder
);
}
// BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
return
nestedBoolQueryBuilder
;
// mediaTypes.forEach(e -> {
// BoolQueryBuilder mediaTypeQueryBuilder = QueryBuilders.boolQuery();
// mediaTypeQueryBuilder.must(QueryBuilders.termQuery("brandkbs_cache_maps.channel_type.keyword", e));
// mediaTypeQueryBuilder.must(mustQuery);
// boolQueryBuilder.should(cacheMapsNestedQuery(mediaTypeQueryBuilder));
// });
// nestedBoolQueryBuilder.must(boolQueryBuilder);
return
boolQueryBuilder
;
}
}
public
static
BoolQueryBuilder
assembleCacheMapsQueryExcludePrimaryId
(
String
projectId
){
public
static
BoolQueryBuilder
assembleCacheMapsQueryExcludePrimaryId
(
String
projectId
){
...
@@ -220,12 +206,15 @@ public class EsQueryTools {
...
@@ -220,12 +206,15 @@ public class EsQueryTools {
}
}
public
static
void
assembleContendsQuery
(
BoolQueryBuilder
query
,
Collection
<
String
>
contends
)
{
public
static
void
assembleContendsQuery
(
BoolQueryBuilder
query
,
Collection
<
String
>
contends
)
{
if
(
CollectionUtils
.
isEmpty
(
contends
))
{
BoolQueryBuilder
contendQuery
=
QueryBuilders
.
boolQuery
();
return
;
// 本品舆情一定有
}
contendQuery
.
should
(
cacheMapsNestedQuery
(
QueryBuilders
.
termQuery
(
"brandkbs_cache_maps.contend_id.keyword"
,
Constant
.
PRIMARY_CONTEND_ID
)));
if
(!
CollectionUtils
.
isEmpty
(
contends
))
{
for
(
String
contendId
:
contends
)
{
for
(
String
contendId
:
contends
)
{
query
.
should
(
cacheMapsNestedQuery
(
QueryBuilders
.
termQuery
(
"brandkbs_cache_maps.contend_id.keyword"
,
contendId
)));
contendQuery
.
should
(
cacheMapsNestedQuery
(
QueryBuilders
.
termQuery
(
"brandkbs_cache_maps.contend_id.keyword"
,
contendId
)));
}
}
}
query
.
must
(
contendQuery
);
}
}
public
static
void
assembleContendsQuery4Channel
(
BoolQueryBuilder
query
,
Collection
<
String
>
contends
)
{
public
static
void
assembleContendsQuery4Channel
(
BoolQueryBuilder
query
,
Collection
<
String
>
contends
)
{
...
@@ -351,4 +340,23 @@ public class EsQueryTools {
...
@@ -351,4 +340,23 @@ public class EsQueryTools {
return
regex
.
toString
();
return
regex
.
toString
();
}
}
private
static
void
addMediaTypes
(
List
<
String
>
mediaTypes
,
BoolQueryBuilder
boolQueryBuilder
)
{
if
(
CollectionUtils
.
isNotEmpty
(
mediaTypes
))
{
BoolQueryBuilder
mediaTypesBoolQueryBuilder
=
QueryBuilders
.
boolQuery
();
for
(
String
mediaType
:
mediaTypes
)
{
BoolQueryBuilder
mediaTypeBoolQueryBuilder
=
QueryBuilders
.
boolQuery
();
//其他
if
(
ImportantChannelEnum
.
QITA
.
getState
().
equals
(
mediaType
))
{
for
(
String
tag
:
ImportantChannelEnum
.
getAllTagExceptSpec
())
{
mediaTypeBoolQueryBuilder
.
mustNot
(
QueryBuilders
.
matchQuery
(
"channel_tag"
,
tag
));
}
}
else
{
mediaTypeBoolQueryBuilder
.
must
(
QueryBuilders
.
matchQuery
(
"channel_tag"
,
mediaType
));
}
mediaTypesBoolQueryBuilder
.
should
(
mediaTypeBoolQueryBuilder
);
}
boolQueryBuilder
.
must
(
mediaTypesBoolQueryBuilder
);
}
}
}
}
src/main/java/com/zhiwei/brandkbs2/pojo/BaseMap.java
View file @
000a07fe
...
@@ -74,6 +74,8 @@ public class BaseMap {
...
@@ -74,6 +74,8 @@ public class BaseMap {
private
Double
channelEmotionIndex
;
private
Double
channelEmotionIndex
;
private
String
channelTag
;
/**
/**
* 当标题为空时用文本截取前20个字代替
* 当标题为空时用文本截取前20个字代替
*
*
...
...
src/main/java/com/zhiwei/brandkbs2/pojo/UserLogRecord.java
0 → 100644
View file @
000a07fe
package
com
.
zhiwei
.
brandkbs2
.
pojo
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.Setter
;
import
org.springframework.data.mongodb.core.mapping.Document
;
/**
* @ClassName: UserLogRecord
* @Description 用户操作记录实体类
* @author: cjz
* @date: 2023-03-21 10:16
*/
@Getter
@Setter
@AllArgsConstructor
@Document
(
collection
=
"brandkbs_user_log_record"
)
public
class
UserLogRecord
extends
AbstractBaseMongo
{
/**
* 项目id
*/
private
String
projectId
;
/**
* 用户id
*/
private
String
userId
;
/**
* nickname
*/
private
String
nickname
;
/**
* 操作记录描述
*/
private
String
description
;
/**
* 用户权限id
*/
private
Integer
roleId
;
/**
* 创建时间
*/
private
Long
cTime
;
/**
* 更新时间
*/
private
Long
updateTime
;
}
src/main/java/com/zhiwei/brandkbs2/pojo/external/BaseMapCompound.java
View file @
000a07fe
package
com
.
zhiwei
.
brandkbs2
.
pojo
.
external
;
package
com
.
zhiwei
.
brandkbs2
.
pojo
.
external
;
import
com.zhiwei.base.category.ClassB
;
import
com.zhiwei.base.category.ClassB
;
import
com.zhiwei.brandkbs2.common.GlobalPojo
;
import
com.zhiwei.brandkbs2.pojo.BaseMap
;
import
com.zhiwei.brandkbs2.pojo.BaseMap
;
import
lombok.AllArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.Data
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.List
;
/**
/**
...
@@ -33,9 +33,13 @@ public class BaseMapCompound {
...
@@ -33,9 +33,13 @@ public class BaseMapCompound {
// 情感倾向
// 情感倾向
// tagList.add(baseMap.getEmotion());
// tagList.add(baseMap.getEmotion());
// 媒体类型
// 媒体类型
String
mediaType
=
GlobalPojo
.
getMediaType
(
projectId
,
baseMap
.
getPlatform
(),
baseMap
.
getSource
());
// String mediaType = GlobalPojo.getMediaType(projectId, baseMap.getPlatform(), baseMap.getSource());
if
(
null
!=
mediaType
)
{
// if (null != mediaType) {
tagList
.
add
(
mediaType
);
// tagList.add(mediaType);
// }
String
channelTag
=
baseMap
.
getChannelTag
();
if
(
null
!=
channelTag
)
{
tagList
.
addAll
(
Arrays
.
asList
(
channelTag
.
split
(
","
)));
}
}
// 仅针对微博平台的 原创/转发 标签
// 仅针对微博平台的 原创/转发 标签
if
(
ClassB
.
TypeB
.
INCOMPLETE
.
equals
(
baseMap
.
getTypeB
()))
{
if
(
ClassB
.
TypeB
.
INCOMPLETE
.
equals
(
baseMap
.
getTypeB
()))
{
...
...
src/main/java/com/zhiwei/brandkbs2/service/BehaviorService.java
View file @
000a07fe
package
com
.
zhiwei
.
brandkbs2
.
service
;
package
com
.
zhiwei
.
brandkbs2
.
service
;
import
com.zhiwei.brandkbs2.easyexcel.dto.ExportBehaviorDTO
;
import
com.zhiwei.brandkbs2.easyexcel.dto.ExportBehaviorDTO
;
import
com.zhiwei.brandkbs2.easyexcel.dto.ExportUserLogRecordDTO
;
import
com.zhiwei.brandkbs2.pojo.Behavior
;
import
com.zhiwei.brandkbs2.pojo.Behavior
;
import
com.zhiwei.brandkbs2.pojo.UserLogRecord
;
import
com.zhiwei.brandkbs2.pojo.vo.BehaviorVO
;
import
com.zhiwei.brandkbs2.pojo.vo.BehaviorVO
;
import
com.zhiwei.brandkbs2.pojo.vo.PageVO
;
import
com.zhiwei.brandkbs2.pojo.vo.PageVO
;
...
@@ -46,4 +48,30 @@ public interface BehaviorService {
...
@@ -46,4 +48,30 @@ public interface BehaviorService {
*/
*/
List
<
ExportBehaviorDTO
>
download
(
long
startTime
,
long
endTime
,
boolean
backstage
);
List
<
ExportBehaviorDTO
>
download
(
long
startTime
,
long
endTime
,
boolean
backstage
);
/**
* 记录用户操作记录
*
* @param description
*/
void
saveUserLogRecord
(
String
description
);
/**
* 分页查询用户操作记录列表
*
* @param page 页码
* @param size 大小
* @param startTime 开始时间
* @param endTime 结束时间
* @param nickname 用户昵称
* @return 用户行为列表
*/
PageVO
<
UserLogRecord
>
findLogRecordList
(
int
page
,
int
size
,
long
startTime
,
long
endTime
,
String
nickname
);
/**
* 下载用户操作记录列表
* @param startTime
* @param endTime
* @return
*/
List
<
ExportUserLogRecordDTO
>
downloadUserLogRecord
(
long
startTime
,
long
endTime
);
}
}
src/main/java/com/zhiwei/brandkbs2/service/impl/BehaviorServiceImpl.java
View file @
000a07fe
package
com
.
zhiwei
.
brandkbs2
.
service
.
impl
;
package
com
.
zhiwei
.
brandkbs2
.
service
.
impl
;
import
com.zhiwei.brandkbs2.auth.UserThreadLocal
;
import
com.zhiwei.brandkbs2.auth.UserThreadLocal
;
import
com.zhiwei.brandkbs2.common.GenericAttribute
;
import
com.zhiwei.brandkbs2.dao.BehaviorDao
;
import
com.zhiwei.brandkbs2.dao.BehaviorDao
;
import
com.zhiwei.brandkbs2.dao.UserDao
;
import
com.zhiwei.brandkbs2.dao.UserDao
;
import
com.zhiwei.brandkbs2.dao.UserLogRecordDao
;
import
com.zhiwei.brandkbs2.easyexcel.dto.ExportBehaviorDTO
;
import
com.zhiwei.brandkbs2.easyexcel.dto.ExportBehaviorDTO
;
import
com.zhiwei.brandkbs2.easyexcel.dto.ExportUserLogRecordDTO
;
import
com.zhiwei.brandkbs2.enmus.RoleEnum
;
import
com.zhiwei.brandkbs2.enmus.RoleEnum
;
import
com.zhiwei.brandkbs2.pojo.Behavior
;
import
com.zhiwei.brandkbs2.pojo.*
;
import
com.zhiwei.brandkbs2.pojo.User
;
import
com.zhiwei.brandkbs2.pojo.UserRole
;
import
com.zhiwei.brandkbs2.pojo.vo.BehaviorVO
;
import
com.zhiwei.brandkbs2.pojo.vo.BehaviorVO
;
import
com.zhiwei.brandkbs2.pojo.vo.PageVO
;
import
com.zhiwei.brandkbs2.pojo.vo.PageVO
;
import
com.zhiwei.brandkbs2.service.BehaviorService
;
import
com.zhiwei.brandkbs2.service.BehaviorService
;
import
com.zhiwei.brandkbs2.service.UserService
;
import
com.zhiwei.brandkbs2.util.Tools
;
import
com.zhiwei.middleware.auth.util.JwtUtil
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.apache.logging.log4j.Logger
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.ArrayList
;
import
java.util.*
;
import
java.util.Collections
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
/**
/**
...
@@ -37,12 +41,21 @@ import java.util.stream.Collectors;
...
@@ -37,12 +41,21 @@ import java.util.stream.Collectors;
public
class
BehaviorServiceImpl
implements
BehaviorService
{
public
class
BehaviorServiceImpl
implements
BehaviorService
{
public
static
final
Logger
log
=
LogManager
.
getLogger
(
BehaviorServiceImpl
.
class
);
public
static
final
Logger
log
=
LogManager
.
getLogger
(
BehaviorServiceImpl
.
class
);
@Value
(
"${jwt.key}"
)
private
String
jwtKey
;
@Resource
(
name
=
"behaviorDao"
)
@Resource
(
name
=
"behaviorDao"
)
private
BehaviorDao
behaviorDao
;
private
BehaviorDao
behaviorDao
;
@Resource
(
name
=
"userDao"
)
@Resource
(
name
=
"userDao"
)
private
UserDao
userDao
;
private
UserDao
userDao
;
@Resource
(
name
=
"UserLogRecordDao"
)
private
UserLogRecordDao
userLogRecordDao
;
@Resource
(
name
=
"userServiceImpl"
)
private
UserService
userService
;
@Resource
(
name
=
"mongoUtil"
)
@Resource
(
name
=
"mongoUtil"
)
private
com
.
zhiwei
.
brandkbs2
.
util
.
MongoUtil
mongoUtil
;
private
com
.
zhiwei
.
brandkbs2
.
util
.
MongoUtil
mongoUtil
;
...
@@ -139,6 +152,71 @@ public class BehaviorServiceImpl implements BehaviorService {
...
@@ -139,6 +152,71 @@ public class BehaviorServiceImpl implements BehaviorService {
return
resList
;
return
resList
;
}
}
@Override
public
void
saveUserLogRecord
(
String
description
)
{
long
now
=
System
.
currentTimeMillis
();
ServletRequestAttributes
requestAttributes
=
(
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
();
// 获取request对象
HttpServletRequest
request
=
Objects
.
requireNonNull
(
requestAttributes
).
getRequest
();
if
(!(
Tools
.
isNullOrUndefined
(
request
.
getHeader
(
jwtKey
))))
{
Map
<
String
,
Object
>
map
=
JwtUtil
.
unsign
(
request
.
getHeader
(
jwtKey
),
Map
.
class
);
if
(
null
==
map
)
{
return
;
}
Object
userIdObj
=
map
.
get
(
GenericAttribute
.
USER_ID
);
// 无用户信息不做记录
if
(
null
==
userIdObj
)
{
return
;
}
String
userId
=
userIdObj
.
toString
();
String
projectId
=
UserThreadLocal
.
getProjectId
();
UserInfo
userInfo
=
userService
.
queryUserInfo
(
userId
,
projectId
);
if
(
null
==
userInfo
)
{
return
;
}
UserLogRecord
userLogRecord
=
new
UserLogRecord
(
projectId
,
userInfo
.
getUserId
(),
userInfo
.
getNickname
(),
description
,
userInfo
.
getRoleId
(),
now
,
now
);
userLogRecordDao
.
insertOne
(
userLogRecord
);
}
}
@Override
public
PageVO
<
UserLogRecord
>
findLogRecordList
(
int
page
,
int
size
,
long
startTime
,
long
endTime
,
String
nickname
)
{
String
projectId
=
UserThreadLocal
.
getProjectId
();
Query
query
=
new
Query
();
query
.
addCriteria
(
Criteria
.
where
(
"cTime"
).
gte
(
startTime
).
lt
(
endTime
));
query
.
addCriteria
(
Criteria
.
where
(
"projectId"
).
is
(
projectId
));
userLogRecordDao
.
addSort
(
query
,
"{\"cTime\":\"descend\"}"
);
if
(
StringUtils
.
isNotEmpty
(
nickname
))
{
userDao
.
addKeywordFuzz
(
query
,
nickname
,
"nickname"
);
}
long
count
=
userLogRecordDao
.
count
(
query
);
int
skipCount
=
(
page
-
1
)
*
size
;
query
.
limit
(
size
);
query
.
skip
(
skipCount
);
List
<
UserLogRecord
>
resList
=
userLogRecordDao
.
findList
(
query
);
return
PageVO
.
createPageVo
(
count
,
page
,
size
,
resList
);
}
@Override
public
List
<
ExportUserLogRecordDTO
>
downloadUserLogRecord
(
long
startTime
,
long
endTime
)
{
String
projectId
=
UserThreadLocal
.
getProjectId
();
Query
query
=
new
Query
();
query
.
addCriteria
(
Criteria
.
where
(
"cTime"
).
gte
(
startTime
).
lt
(
endTime
));
query
.
addCriteria
(
Criteria
.
where
(
"projectId"
).
is
(
projectId
));
userLogRecordDao
.
addSort
(
query
,
"{\"cTime\":\"descend\"}"
);
List
<
UserLogRecord
>
logRecordList
=
userLogRecordDao
.
findList
(
query
);
List
<
ExportUserLogRecordDTO
>
resList
=
new
ArrayList
<>(
logRecordList
.
size
());
logRecordList
.
forEach
(
record
->
{
ExportUserLogRecordDTO
dto
=
new
ExportUserLogRecordDTO
();
dto
.
setNickname
(
record
.
getNickname
());
dto
.
setDescription
(
record
.
getDescription
());
dto
.
setTime
(
new
Date
(
record
.
getCTime
()));
dto
.
setRole
(
RoleEnum
.
getNameByState
(
record
.
getRoleId
()));
resList
.
add
(
dto
);
});
return
resList
;
}
private
Integer
getRoleId
(
String
userId
,
String
projectId
)
{
private
Integer
getRoleId
(
String
userId
,
String
projectId
)
{
User
user
=
userDao
.
findOneById
(
userId
);
User
user
=
userDao
.
findOneById
(
userId
);
Integer
roleId
=
-
1
;
Integer
roleId
=
-
1
;
...
...
src/main/java/com/zhiwei/brandkbs2/service/impl/EventServiceImpl.java
View file @
000a07fe
...
@@ -751,10 +751,14 @@ public class EventServiceImpl implements EventService {
...
@@ -751,10 +751,14 @@ public class EventServiceImpl implements EventService {
// 品牌
// 品牌
result
.
put
(
"brands"
,
projectService
.
getBrands
(
projectId
,
true
));
result
.
put
(
"brands"
,
projectService
.
getBrands
(
projectId
,
true
));
// 事件调性
// 事件调性
AbstractProject
abstractProject
=
projectService
.
getProjectByContendId
(
UserThreadLocal
.
getProjectId
()
,
brandId
);
AbstractProject
abstractProject
=
projectService
.
getProjectByContendId
(
projectId
,
brandId
);
List
<
EventTagBrandkbsVO
>
eventTags
=
(
List
<
EventTagBrandkbsVO
>)
eventMiddlewareDao
.
getEventTagGroupInfoBrandkbs
(
abstractProject
.
getBrandLinkedGroupId
()).
getData
();
List
<
EventTagBrandkbsVO
>
eventTags
=
(
List
<
EventTagBrandkbsVO
>)
eventMiddlewareDao
.
getEventTagGroupInfoBrandkbs
(
abstractProject
.
getBrandLinkedGroupId
()).
getData
();
List
<
EventTagBrandkbsVO
>
emotion
=
eventTags
.
stream
().
filter
(
eventTag
->
EventTagEnum
.
EVENT_ATTRIBUTE
.
getName
().
equals
(
eventTag
.
getGroupName
())).
collect
(
Collectors
.
toList
());
List
<
EventTagBrandkbsVO
>
emotion
=
eventTags
.
stream
().
filter
(
eventTag
->
EventTagEnum
.
EVENT_ATTRIBUTE
.
getName
().
equals
(
eventTag
.
getGroupName
())).
collect
(
Collectors
.
toList
());
result
.
put
(
"emotions"
,
emotion
);
result
.
put
(
"emotions"
,
emotion
);
// 绑定中的事件标签
brandId
=
Objects
.
equals
(
Constant
.
PRIMARY_CONTEND_ID
,
brandId
)
?
projectId
:
brandId
;
List
<
EventTagBrandkbsVO
>
brandkbsBindingEventTagsDetail
=
eventMiddlewareDao
.
getBrandkbsBindingEventTagsDetail
(
projectId
,
brandId
);
result
.
put
(
"eventTags"
,
brandkbsBindingEventTagsDetail
);
// 时间
// 时间
result
.
put
(
"times"
,
getDefaultTimes
());
result
.
put
(
"times"
,
getDefaultTimes
());
// 传播量
// 传播量
...
...
src/main/java/com/zhiwei/brandkbs2/service/impl/ProjectWarnServiceImpl.java
View file @
000a07fe
...
@@ -12,14 +12,16 @@ import com.zhiwei.brandkbs2.enmus.EmotionEnum;
...
@@ -12,14 +12,16 @@ import com.zhiwei.brandkbs2.enmus.EmotionEnum;
import
com.zhiwei.brandkbs2.es.EsClientDao
;
import
com.zhiwei.brandkbs2.es.EsClientDao
;
import
com.zhiwei.brandkbs2.es.EsQueryTools
;
import
com.zhiwei.brandkbs2.es.EsQueryTools
;
import
com.zhiwei.brandkbs2.model.ResponseResult
;
import
com.zhiwei.brandkbs2.model.ResponseResult
;
import
com.zhiwei.brandkbs2.pojo.*
;
import
com.zhiwei.brandkbs2.pojo.AbstractProject
;
import
com.zhiwei.brandkbs2.pojo.BaseMap
;
import
com.zhiwei.brandkbs2.pojo.Channel
;
import
com.zhiwei.brandkbs2.pojo.Project
;
import
com.zhiwei.brandkbs2.pojo.external.*
;
import
com.zhiwei.brandkbs2.pojo.external.*
;
import
com.zhiwei.brandkbs2.pojo.vo.CrisisCaseWarnVO
;
import
com.zhiwei.brandkbs2.pojo.vo.CrisisCaseWarnVO
;
import
com.zhiwei.brandkbs2.service.ProjectService
;
import
com.zhiwei.brandkbs2.service.ProjectService
;
import
com.zhiwei.brandkbs2.service.ProjectWarnService
;
import
com.zhiwei.brandkbs2.service.ProjectWarnService
;
import
com.zhiwei.brandkbs2.util.RedisUtil
;
import
com.zhiwei.brandkbs2.util.RedisUtil
;
import
com.zhiwei.brandkbs2.util.Tools
;
import
com.zhiwei.brandkbs2.util.Tools
;
import
com.zhiwei.middleware.event.core.EventClient
;
import
com.zhiwei.middleware.event.pojo.entity.Event
;
import
com.zhiwei.middleware.event.pojo.entity.Event
;
import
com.zhiwei.middleware.event.pojo.entity.EventTagBasicInfo
;
import
com.zhiwei.middleware.event.pojo.entity.EventTagBasicInfo
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
...
@@ -603,10 +605,8 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
...
@@ -603,10 +605,8 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
if
(
CollectionUtils
.
isNotEmpty
(
config
.
getMarkerTags
()))
{
if
(
CollectionUtils
.
isNotEmpty
(
config
.
getMarkerTags
()))
{
config
.
getMarkerTags
().
forEach
(
tagName
->
sourceBuilder
.
should
(
QueryBuilders
.
termQuery
(
"brandkbs_mark_cache_maps.name.keyword"
,
tagName
)));
config
.
getMarkerTags
().
forEach
(
tagName
->
sourceBuilder
.
should
(
QueryBuilders
.
termQuery
(
"brandkbs_mark_cache_maps.name.keyword"
,
tagName
)));
}
}
if
(
CollectionUtils
.
isNotEmpty
(
config
.
getContends
()))
{
EsQueryTools
.
assembleContendsQuery
(
sourceBuilder
,
config
.
getContends
());
}
postFilter
.
must
(
sourceBuilder
);
postFilter
.
must
(
sourceBuilder
);
EsQueryTools
.
assembleContendsQuery
(
postFilter
,
config
.
getContends
());
// postFilter.must(EsQueryTools.assembleNormalKeywordQuery(config.getKeyword(), new String[]{GenericAttribute.ES_IND_FULL_TEXT}));
// postFilter.must(EsQueryTools.assembleNormalKeywordQuery(config.getKeyword(), new String[]{GenericAttribute.ES_IND_FULL_TEXT}));
helper
.
setPostFilter
(
postFilter
);
helper
.
setPostFilter
(
postFilter
);
SearchHits
searchHits
=
esClientDao
.
searchHits
(
helper
);
SearchHits
searchHits
=
esClientDao
.
searchHits
(
helper
);
...
...
src/main/java/com/zhiwei/brandkbs2/util/Tools.java
View file @
000a07fe
...
@@ -334,6 +334,10 @@ public class Tools {
...
@@ -334,6 +334,10 @@ public class Tools {
res
.
setRealSource
(
String
.
valueOf
(
map
.
get
(
GenericAttribute
.
ES_REAL_SOURCE
)));
res
.
setRealSource
(
String
.
valueOf
(
map
.
get
(
GenericAttribute
.
ES_REAL_SOURCE
)));
res
.
setPlatform
(
getPlatform
(
map
));
res
.
setPlatform
(
getPlatform
(
map
));
res
.
setEmotion
(
getEmotion
(
map
));
res
.
setEmotion
(
getEmotion
(
map
));
Object
channelTagObj
=
map
.
get
(
"channel_tag"
);
if
(
null
!=
channelTagObj
)
{
res
.
setChannelTag
(
channelTagObj
.
toString
());
}
int
c5
=
Integer
.
parseInt
(
String
.
valueOf
(
map
.
get
(
GenericAttribute
.
ES_C5
)));
int
c5
=
Integer
.
parseInt
(
String
.
valueOf
(
map
.
get
(
GenericAttribute
.
ES_C5
)));
// 单独设置属性title,content 部分url
// 单独设置属性title,content 部分url
switch
(
res
.
getTypeB
())
{
switch
(
res
.
getTypeB
())
{
...
@@ -517,6 +521,21 @@ public class Tools {
...
@@ -517,6 +521,21 @@ public class Tools {
return
resultStr
.
substring
(
0
,
resultStr
.
length
()
-
1
);
return
resultStr
.
substring
(
0
,
resultStr
.
length
()
-
1
);
}
}
/**
* 拼接字符串,以_隔开
*
* @param objects 可变参数
* @return 拼接后的字符串
*/
public
static
String
concat
(
List
<
Object
>
objects
)
{
StringBuilder
sb
=
new
StringBuilder
();
for
(
Object
obj
:
objects
)
{
sb
.
append
(
obj
).
append
(
Constant
.
DEFAULT_SEPARATOR
);
}
String
resultStr
=
sb
.
toString
();
return
resultStr
.
substring
(
0
,
resultStr
.
length
()
-
1
);
}
public
static
String
[]
split
(
String
concatStr
)
{
public
static
String
[]
split
(
String
concatStr
)
{
return
concatStr
.
split
(
Constant
.
DEFAULT_SEPARATOR
);
return
concatStr
.
split
(
Constant
.
DEFAULT_SEPARATOR
);
}
}
...
...
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