Commit 2881a1f0 by 陈健智

用户行为记录相关修改

parent 114e6fd7
......@@ -6,12 +6,15 @@ import com.zhiwei.brandkbs2.pojo.Behavior;
import com.zhiwei.brandkbs2.service.UserService;
import com.zhiwei.brandkbs2.util.Tools;
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.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;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.context.request.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.HandlerMapping;
......@@ -19,9 +22,12 @@ import org.springframework.web.servlet.HandlerMapping;
import javax.annotation.Resource;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.*;
import java.util.stream.Collectors;
import static java.util.Objects.nonNull;
......@@ -36,7 +42,6 @@ import static java.util.Objects.nonNull;
public class AopLogRecord {
@Value("${jwt.key}")
private String jwtKey;
@Resource(name = "userServiceImpl")
private UserService userService;
@Resource(name = "behaviorDao")
......@@ -45,9 +50,9 @@ 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 {
private void beforeLog(JoinPoint joinPoint) throws UnknownHostException, ClassNotFoundException, NoSuchMethodException {
long now = System.currentTimeMillis();
// RequestContextHolder是持有上下文的Request容器
// RequestContextHolder 顾名思义 持有 request 上下文的容器
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
// 获取request对象
HttpServletRequest request = Objects.requireNonNull(requestAttributes).getRequest();
......@@ -59,6 +64,15 @@ public class AopLogRecord {
String httpMethod = request.getMethod();
String uri = request.getRequestURI();
String methodName = joinPoint.getSignature().getName();
// 访问页面
String className = joinPoint.getTarget().getClass().getName();
Class<?> clazz = Class.forName(className);
String controller = clazz.getAnnotation(Api.class).tags()[0];
// 操作模块
MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
String method = methodSignature.getMethod().getAnnotation(ApiOperation.class).value();
// 前后台,false:前台,true:后台
boolean backstage = uri.contains("admin");
if (!(Tools.isNullOrUndefined(request.getHeader(jwtKey)) || Tools.isNullOrUndefined(request.getHeader("pid")))) {
// 用户信息
String userId = JwtUtil.unsign(request.getHeader(jwtKey), Map.class).get(GenericAttribute.USER_ID).toString();
......@@ -68,15 +82,20 @@ public class AopLogRecord {
String severAddress = InetAddress.getLocalHost().getHostAddress();
String ipAddress = Tools.getIpAddress(request);
// 接口传参信息
List<Map<String, Object>> requestArguments = getRequestArguments(joinPoint);
List<Map<String, Object>> param = getRequestArguments(joinPoint);
Behavior behavior = Behavior.createBehaviorNew(userId, nickName, projectId, uri, methodName, httpMethod, requestArguments, now, now, severAddress, ipAddress);
Behavior behavior = new Behavior(userId, projectId, nickName, ipAddress, now, controller, method, backstage, uri, methodName, httpMethod, param, now, severAddress);
String collectionName = behaviorDao.generateCollectionName();
behaviorDao.insertOneWithoutId(behavior, collectionName);
}
}
}
/**
* 获取接口传参信息
* @param joinPoint
* @return
*/
private List<Map<String, Object>> getRequestArguments(JoinPoint joinPoint) {
List<Map<String, Object>> arguments = new ArrayList<>();
// 获取参数名
......
......@@ -41,7 +41,7 @@ import java.util.Map;
*/
@RestController
@RequestMapping("/admin/article")
@Api(tags = "稿件上传接口", description = "提供稿件的上传功能")
@Api(tags = "稿件上传", description = "提供稿件的上传功能")
@Auth(role = RoleEnum.COMMON_ADMIN)
public class ArticleController extends BaseController {
public static final Logger log = LogManager.getLogger(ArticleController.class);
......
......@@ -29,7 +29,7 @@ import java.util.List;
*/
@RestController
@RequestMapping("/admin/behavior")
@Api(tags = "用户行为管理接口", description = "提供用户行为的查询和导出功能")
@Api(tags = "用户行为管理", description = "提供用户行为的查询和导出功能")
@Auth(role = RoleEnum.COMMON_ADMIN)
public class BehaviorController extends BaseController {
......
......@@ -37,7 +37,7 @@ import java.util.stream.Collectors;
*/
@RestController
@RequestMapping("/admin/channel")
@Api(tags = "渠道模块接口", description = "提供渠道相关功能")
@Api(tags = "渠道管理", description = "提供渠道相关功能")
@Auth(role = RoleEnum.COMMON_ADMIN)
public class ChannelController extends BaseController {
......
......@@ -28,7 +28,7 @@ import static com.alibaba.fastjson.JSON.parseArray;
*/
@RestController
@RequestMapping("/admin/custom")
@Api(tags = "自定义标签管理接口", description = "提供自定义标签的增、删、改、查")
@Api(tags = "自定义标签管理", description = "提供自定义标签的增、删、改、查")
@Auth(role = RoleEnum.COMMON_ADMIN)
public class CustomTagController extends BaseController {
......
......@@ -42,7 +42,7 @@ import java.util.Set;
*/
@RestController
@RequestMapping("/admin/event")
@Api(tags = "事件管理接口", description = "提供事件的增、删、改、查等功能")
@Api(tags = "事件管理", description = "提供事件的增、删、改、查等功能")
@Auth(role = RoleEnum.COMMON_ADMIN)
public class EventController extends BaseController {
......
......@@ -42,7 +42,7 @@ import java.util.stream.Collectors;
*/
@RestController
@RequestMapping("/admin/project")
@Api(tags = "项目管理接口", description = "提供项目的增、删、改、查")
@Api(tags = "项目管理", description = "提供项目的增、删、改、查")
@Auth(role = RoleEnum.SUPER_ADMIN)
public class ProjectController extends BaseController {
......
......@@ -19,7 +19,7 @@ import javax.annotation.Resource;
*/
@RestController
@RequestMapping("/admin/module/report")
@Api(tags = "简报配置接口", description = "提供简报配置功能")
@Api(tags = "简报配置", description = "提供简报配置功能")
@Auth(role= RoleEnum.COMMON_ADMIN)
public class ReportController {
......
......@@ -26,7 +26,7 @@ import javax.annotation.Resource;
*/
@RestController
@RequestMapping("/admin/user")
@Api(tags = "用户管理接口", description = "提供用户的增、删、改、查")
@Api(tags = "用户管理", description = "提供用户的增、删、改、查")
@Auth(role = RoleEnum.COMMON_ADMIN)
public class UserController extends BaseController {
......
......@@ -31,7 +31,7 @@ import java.util.List;
*/
@RestController
@RequestMapping("/app/yuqing")
@Api(tags = "前台舆情库展示接口", description = "提供前台舆情库相关信息展示")
@Api(tags = "前台舆情库", description = "提供前台舆情库相关信息展示")
@Auth(role = RoleEnum.CUSTOMER)
public class AppArticleController extends BaseController {
......
......@@ -25,7 +25,7 @@ import java.util.List;
*/
@RestController
@RequestMapping("/app/channel")
@Api(tags = "前台渠道库展示接口", description = "提供前台渠道库相关信息展示")
@Api(tags = "前台渠道库", description = "提供前台渠道库相关信息展示")
@Auth(role = RoleEnum.CUSTOMER)
public class AppChannelController extends BaseController {
......
......@@ -33,7 +33,7 @@ import java.util.stream.Collectors;
*/
@RestController
@RequestMapping("/app/contend")
@Api(tags = "前台竞品库展示接口",description = "提供前台竞品库相关信息展示")
@Api(tags = "前台竞品库",description = "提供前台竞品库相关信息展示")
@Auth(role = RoleEnum.CUSTOMER)
public class AppContendController extends BaseController {
......
......@@ -23,7 +23,7 @@ import org.springframework.web.client.RestTemplate;
*/
@RestController
@RequestMapping("/app/crisis")
@Api(tags = "前台危机展示接口",description = "提供前台危机相关信息展示")
@Api(tags = "前台危机",description = "提供前台危机相关信息展示")
@Auth(role = RoleEnum.CUSTOMER)
public class AppCrisisController extends BaseController {
......
......@@ -21,7 +21,7 @@ import javax.annotation.Resource;
*/
@RestController
@RequestMapping("/app/customEvent")
@Api(tags = "前台自定义事件展示接口", description = "提供前台自定义事件模块信息展示及操作")
@Api(tags = "前台自定义事件", description = "提供前台自定义事件模块信息展示及操作")
@Auth(role = RoleEnum.CUSTOMER)
public class AppCustomEventController {
......
......@@ -41,7 +41,7 @@ import java.util.stream.Collectors;
*/
@RestController
@RequestMapping("/app/hot")
@Api(tags = "前台热点展示接口",description = "提供前台热点相关信息展示")
@Api(tags = "前台热点",description = "提供前台热点相关信息展示")
@Auth(role = RoleEnum.CUSTOMER)
public class AppHotController extends BaseController {
private static final long ONE_HOUR = 1L;
......@@ -116,7 +116,7 @@ public class AppHotController extends BaseController {
}
}
@ApiOperation("竞品库-最新资讯")
@ApiOperation("首页-近24小时热门舆情,查竞品-竞品动态")
@GetMapping("/latestNews")
public ResponseResult latestNews(@RequestParam(value = "size", defaultValue = "5") Integer size,
@RequestParam(value = "include", defaultValue = "true") boolean include) throws IOException {
......
......@@ -26,7 +26,7 @@ import javax.annotation.Resource;
@RestController
@RequestMapping("/app/index")
@Api(tags = "前台首页展示接口", description = "提供前台首页相关信息展示")
@Api(tags = "前台首页", description = "提供前台首页相关信息展示")
@Auth(role = RoleEnum.CUSTOMER)
public class AppIndexController extends BaseController {
......
......@@ -36,7 +36,7 @@ import java.util.Objects;
*/
@RestController
@RequestMapping("/app/search")
@Api(tags = "前台搜索相关接口", description = "提供搜索相关功能")
@Api(tags = "前台搜索相关", description = "提供搜索相关功能")
@Auth(role = RoleEnum.CUSTOMER)
public class AppSearchController extends BaseController {
@Autowired
......
......@@ -25,10 +25,10 @@ public class ExportBehaviorDTO {
private Date time;
@ExcelProperty("访问页面")
private String page;
private String controller;
@ExcelProperty("操作模块")
private String module;
private String method;
@ExcelProperty("用户身份")
private String role;
......
package com.zhiwei.brandkbs2.pojo;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
......@@ -14,6 +15,7 @@ import java.util.Map;
*/
@Getter
@Setter
@AllArgsConstructor
public class Behavior extends AbstractBaseMongo {
/**
* 用户ID
......@@ -24,6 +26,10 @@ public class Behavior extends AbstractBaseMongo {
*/
private String projectId;
/**
* nickName
*/
private String nickName;
/**
* IP地址
*/
private String ip;
......@@ -34,22 +40,15 @@ public class Behavior extends AbstractBaseMongo {
/**
* 访问页面
*/
private String page;
private String controller;
/**
* 操作模块
*/
private String module;
private String method;
/**
* false:前台,true:后台
*/
private boolean backstage;
/**
* nickName
*/
private String nickName;
/**
* uri 访问路径
*/
......@@ -65,7 +64,7 @@ public class Behavior extends AbstractBaseMongo {
/**
* 方法传入参数
*/
private List<Map<String, Object>> arguments;
private List<Map<String, Object>> param;
/**
* 更新时间
*/
......@@ -86,20 +85,4 @@ public class Behavior extends AbstractBaseMongo {
this.backstage = backstage;
}
}
public static Behavior createBehaviorNew(String userId, String nickName, String projectId, String uri, String methodName, String httpMethod,
List<Map<String, Object>> requestArguments, Long CTime, Long updateTime, String severAddress, String clientAddress){
Behavior behavior = new Behavior();
behavior.setUserId(userId);
behavior.setNickName(nickName);
behavior.setProjectId(projectId);
behavior.setUri(uri);
behavior.setMethodName(methodName);
behavior.setHttpMethod(httpMethod);
behavior.setArguments(requestArguments);
behavior.setCTime(CTime);
behavior.setUpdateTime(updateTime);
behavior.setSeverAddress(severAddress);
behavior.setIp(clientAddress);
return behavior;
}
}
......@@ -35,11 +35,11 @@ public class BehaviorVO {
/**
* 访问页面
*/
private String page;
private String controller;
/**
* 操作模块
*/
private String module;
private String method;
/**
* 角色ID
......
......@@ -111,8 +111,8 @@ public class BehaviorServiceImpl implements BehaviorService {
exportBehaviorDTO.setNickname(nicknameAndRoleId.getLeft());
exportBehaviorDTO.setIp(behavior.getIp());
exportBehaviorDTO.setTime(new Date(behavior.getCTime()));
exportBehaviorDTO.setPage(behavior.getPage());
exportBehaviorDTO.setModule(behavior.getModule());
exportBehaviorDTO.setController(behavior.getController());
exportBehaviorDTO.setMethod(behavior.getMethod());
exportBehaviorDTO.setRole(RoleEnum.getNameByState(nicknameAndRoleId.getRight()));
resList.add(exportBehaviorDTO);
});
......
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