Commit f077b961 by 陈健智

用户行为增加搜索关键词、渠道活动页面访问的渠道信息、事件详情页事件名记录

parent d035081d
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.dao.BehaviorDao;
import com.zhiwei.brandkbs2.model.ResponseResult;
import com.zhiwei.brandkbs2.pojo.Behavior;
import com.zhiwei.brandkbs2.service.UserService;
import com.zhiwei.brandkbs2.util.Tools;
......@@ -9,8 +12,8 @@ import com.zhiwei.middleware.auth.util.JwtUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
......@@ -45,8 +48,8 @@ public class AopLogRecord {
private static final List<String> URL_PATTERNS = Arrays.asList("/getNewAll", "/getNew", "/schedule");
@Before("execution(public * com..controller..admin..*Controller.*(..)) || execution(* com..controller..app..*Controller.*(..))")
private void beforeLog(JoinPoint joinPoint) throws UnknownHostException, ClassNotFoundException{
@AfterReturning(value = "execution(public * com..controller..admin..*Controller.*(..)) || execution(* com..controller..app..*Controller.*(..))", returning = "ResponseResult")
private void beforeLog(JoinPoint joinPoint, ResponseResult ResponseResult) throws UnknownHostException, ClassNotFoundException{
long now = System.currentTimeMillis();
// RequestContextHolder 顾名思义 持有 request 上下文的容器
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
......@@ -87,8 +90,9 @@ public class AopLogRecord {
String ipAddress = Tools.getIpAddress(request);
// 接口传参信息
List<Map<String, Object>> arguments = getRequestArguments(joinPoint);
Behavior behavior = new Behavior(userId, projectId, nickName, ipAddress, now, controller, method, backstage, uri, methodName, httpMethod, arguments, now, severAddress);
Behavior behavior = new Behavior(userId, projectId, nickName, ipAddress, now, controller, method, backstage,
uri, methodName, httpMethod, arguments, now, severAddress, null, null, null);
setInfo(behavior, uri, joinPoint, methodSignature, arguments, ResponseResult);
String collectionName = behaviorDao.generateCollectionName();
behaviorDao.insertOneWithoutId(behavior, collectionName);
}
......@@ -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
* @return
......
......@@ -73,6 +73,18 @@ public class Behavior extends AbstractBaseMongo {
* 服务器地址
*/
private String severAddress;
/**
* 搜索关键词
*/
private String searchKeyword;
/**
* 渠道
*/
private String channel;
/**
* 事件名
*/
private String eventTitle;
@Getter
public static class Operation {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment