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
f077b961
Commit
f077b961
authored
Feb 27, 2023
by
陈健智
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
用户行为增加搜索关键词、渠道活动页面访问的渠道信息、事件详情页事件名记录
parent
d035081d
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
64 additions
and
5 deletions
+64
-5
src/main/java/com/zhiwei/brandkbs2/aop/AopLogRecord.java
+52
-5
src/main/java/com/zhiwei/brandkbs2/pojo/Behavior.java
+12
-0
No files found.
src/main/java/com/zhiwei/brandkbs2/aop/AopLogRecord.java
View file @
f077b961
package
com
.
zhiwei
.
brandkbs2
.
aop
;
package
com
.
zhiwei
.
brandkbs2
.
aop
;
import
com.alibaba.fastjson.JSON
;
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.model.ResponseResult
;
import
com.zhiwei.brandkbs2.pojo.Behavior
;
import
com.zhiwei.brandkbs2.pojo.Behavior
;
import
com.zhiwei.brandkbs2.service.UserService
;
import
com.zhiwei.brandkbs2.service.UserService
;
import
com.zhiwei.brandkbs2.util.Tools
;
import
com.zhiwei.brandkbs2.util.Tools
;
...
@@ -9,8 +12,8 @@ import com.zhiwei.middleware.auth.util.JwtUtil;
...
@@ -9,8 +12,8 @@ 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.aspectj.lang.JoinPoint
;
import
org.aspectj.lang.JoinPoint
;
import
org.aspectj.lang.annotation.AfterReturning
;
import
org.aspectj.lang.annotation.Aspect
;
import
org.aspectj.lang.annotation.Aspect
;
import
org.aspectj.lang.annotation.Before
;
import
org.aspectj.lang.reflect.MethodSignature
;
import
org.aspectj.lang.reflect.MethodSignature
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
...
@@ -45,8 +48,8 @@ public class AopLogRecord {
...
@@ -45,8 +48,8 @@ public class AopLogRecord {
private
static
final
List
<
String
>
URL_PATTERNS
=
Arrays
.
asList
(
"/getNewAll"
,
"/getNew"
,
"/schedule"
);
private
static
final
List
<
String
>
URL_PATTERNS
=
Arrays
.
asList
(
"/getNewAll"
,
"/getNew"
,
"/schedule"
);
@
Before
(
"execution(public * com..controller..admin..*Controller.*(..)) || execution(* com..controller..app..*Controller.*(..))
"
)
@
AfterReturning
(
value
=
"execution(public * com..controller..admin..*Controller.*(..)) || execution(* com..controller..app..*Controller.*(..))"
,
returning
=
"ResponseResult
"
)
private
void
beforeLog
(
JoinPoint
joinPoint
)
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 上下文的容器
ServletRequestAttributes
requestAttributes
=
(
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
();
ServletRequestAttributes
requestAttributes
=
(
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
();
...
@@ -87,8 +90,9 @@ public class AopLogRecord {
...
@@ -87,8 +90,9 @@ public class AopLogRecord {
String
ipAddress
=
Tools
.
getIpAddress
(
request
);
String
ipAddress
=
Tools
.
getIpAddress
(
request
);
// 接口传参信息
// 接口传参信息
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
);
uri
,
methodName
,
httpMethod
,
arguments
,
now
,
severAddress
,
null
,
null
,
null
);
setInfo
(
behavior
,
uri
,
joinPoint
,
methodSignature
,
arguments
,
ResponseResult
);
String
collectionName
=
behaviorDao
.
generateCollectionName
();
String
collectionName
=
behaviorDao
.
generateCollectionName
();
behaviorDao
.
insertOneWithoutId
(
behavior
,
collectionName
);
behaviorDao
.
insertOneWithoutId
(
behavior
,
collectionName
);
}
}
...
@@ -96,6 +100,49 @@ public class AopLogRecord {
...
@@ -96,6 +100,49 @@ public class AopLogRecord {
}
}
/**
/**
* 用户行为实体搜索关键词、渠道库渠道、事件详情事件名赋值
*
* @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
keyword
=
null
;
String
channel
=
null
;
String
title
=
null
;
Object
[]
args
=
joinPoint
.
getArgs
();
if
(
uri
.
contains
(
"/app/search"
)
&&
!
Tools
.
isEmpty
(
args
)){
if
(
1
==
arguments
.
size
()){
if
(!(
args
[
0
]
instanceof
Integer
)
&&
!(
args
[
0
]
instanceof
String
)){
JSONObject
jsonObject
=
(
JSONObject
)
JSON
.
toJSON
(
args
[
0
]);
keyword
=
Objects
.
nonNull
(
jsonObject
.
get
(
"keyword"
))
?
String
.
valueOf
(
jsonObject
.
get
(
"keyword"
))
:
String
.
valueOf
(
jsonObject
.
get
(
"search"
));
}
}
else
{
String
[]
parameterNames
=
methodSignature
.
getParameterNames
();
for
(
int
i
=
0
;
i
<
parameterNames
.
length
;
i
++)
{
if
(
Objects
.
equals
(
parameterNames
[
i
],
"keyword"
)){
keyword
=
String
.
valueOf
(
args
[
i
]);
}
}
}
}
if
(
uri
.
contains
(
"/app/channel/baseInfo"
)){
JSONObject
jsonObject
=
(
JSONObject
)
JSONObject
.
toJSON
(
ResponseResult
.
getData
());
channel
=
jsonObject
.
get
(
"platform"
)
+
"_"
+
jsonObject
.
get
(
"source"
);
}
if
(
uri
.
contains
(
"/app/event/detail/baseInfo"
)){
JSONObject
jsonObject
=
(
JSONObject
)
JSON
.
toJSON
(
ResponseResult
.
getData
());
title
=
String
.
valueOf
(
jsonObject
.
get
(
"title"
));
}
behavior
.
setSearchKeyword
(
keyword
);
behavior
.
setChannel
(
channel
);
behavior
.
setEventTitle
(
title
);
}
/**
* 获取接口传参信息
* 获取接口传参信息
* @param joinPoint
* @param joinPoint
* @return
* @return
...
...
src/main/java/com/zhiwei/brandkbs2/pojo/Behavior.java
View file @
f077b961
...
@@ -73,6 +73,18 @@ public class Behavior extends AbstractBaseMongo {
...
@@ -73,6 +73,18 @@ public class Behavior extends AbstractBaseMongo {
* 服务器地址
* 服务器地址
*/
*/
private
String
severAddress
;
private
String
severAddress
;
/**
* 搜索关键词
*/
private
String
searchKeyword
;
/**
* 渠道
*/
private
String
channel
;
/**
* 事件名
*/
private
String
eventTitle
;
@Getter
@Getter
public
static
class
Operation
{
public
static
class
Operation
{
...
...
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