Commit c6d041d2 by shenjunjie

Merge branch 'release' into 'master'

Release

See merge request !288
parents 018304d6 981cbd0f
...@@ -16,6 +16,8 @@ import io.swagger.annotations.Api; ...@@ -16,6 +16,8 @@ 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.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.Logger;
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;
...@@ -31,7 +33,6 @@ import javax.servlet.ServletRequest; ...@@ -31,7 +33,6 @@ import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.*; import java.util.*;
import static java.util.Objects.nonNull; import static java.util.Objects.nonNull;
...@@ -45,6 +46,8 @@ import static java.util.Objects.nonNull; ...@@ -45,6 +46,8 @@ import static java.util.Objects.nonNull;
@Aspect @Aspect
@Component @Component
public class AopLogRecord { public class AopLogRecord {
public static final Logger log = LogManager.getLogger(AopLogRecord.class);
@Value("${jwt.key}") @Value("${jwt.key}")
private String jwtKey; private String jwtKey;
@Resource(name = "userServiceImpl") @Resource(name = "userServiceImpl")
...@@ -58,57 +61,61 @@ public class AopLogRecord { ...@@ -58,57 +61,61 @@ 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");
@AfterReturning(value = "execution(public * com..controller..admin..*Controller.*(..)) || execution(* com..controller..app..*Controller.*(..)) || execution(* com..controller..LoginController.checkBind())", 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){
long now = System.currentTimeMillis(); try {
// RequestContextHolder 顾名思义 持有 request 上下文的容器 long now = System.currentTimeMillis();
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); // RequestContextHolder 顾名思义 持有 request 上下文的容器
// 获取request对象 ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = Objects.requireNonNull(requestAttributes).getRequest(); // 获取request对象
// webRequest拿路径的uri和request拿的uri有区别 HttpServletRequest request = Objects.requireNonNull(requestAttributes).getRequest();
NativeWebRequest webRequest = new ServletWebRequest(request); // webRequest拿路径的uri和request拿的uri有区别
Object webRequestAttribute = webRequest.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE, RequestAttributes.SCOPE_REQUEST); NativeWebRequest webRequest = new ServletWebRequest(request);
if (filterUrl(webRequestAttribute)) { Object webRequestAttribute = webRequest.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE, RequestAttributes.SCOPE_REQUEST);
// controller接口信息 if (filterUrl(webRequestAttribute)) {
String httpMethod = request.getMethod(); // controller接口信息
String uri = request.getRequestURI(); String httpMethod = request.getMethod();
String methodName = joinPoint.getSignature().getName(); String uri = request.getRequestURI();
// 访问页面 String methodName = joinPoint.getSignature().getName();
String className = joinPoint.getTarget().getClass().getName(); // 访问页面
Class<?> clazz = Class.forName(className); String className = joinPoint.getTarget().getClass().getName();
String controller = clazz.getAnnotation(Api.class).tags()[0]; 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(); MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
// 前后台,false:前台,true:后台 String method = methodSignature.getMethod().getAnnotation(ApiOperation.class).value();
boolean backstage = uri.contains("admin"); // 前后台,false:前台,true:后台
if (!(Tools.isNullOrUndefined(request.getHeader(jwtKey)) || Tools.isNullOrUndefined(request.getHeader("pid")))) { boolean backstage = uri.contains("admin");
Map<String, Object> map = JwtUtil.unsign(request.getHeader(jwtKey), Map.class); if (!(Tools.isNullOrUndefined(request.getHeader(jwtKey)) || Tools.isNullOrUndefined(request.getHeader("pid")))) {
if (null == map) { Map<String, Object> map = JwtUtil.unsign(request.getHeader(jwtKey), Map.class);
return; if (null == map) {
} return;
Object userIdObj = map.get(GenericAttribute.USER_ID); }
// 无用户信息不做记录 Object userIdObj = map.get(GenericAttribute.USER_ID);
if (null == userIdObj) { // 无用户信息不做记录
return; if (null == userIdObj) {
} return;
String userId = userIdObj.toString(); }
String projectId = request.getHeader("pid"); String userId = userIdObj.toString();
UserInfo userInfo = userService.queryUserInfo(userId, projectId); String projectId = request.getHeader("pid");
String nickName = userInfo.getNickname(); UserInfo userInfo = userService.queryUserInfo(userId, projectId);
// 请求地址和服务器地址 String nickName = userInfo.getNickname();
String severAddress = InetAddress.getLocalHost().getHostAddress(); // 请求地址和服务器地址
String ipAddress = Tools.getIpAddress(request); String severAddress = InetAddress.getLocalHost().getHostAddress();
// 接口传参信息 String ipAddress = Tools.getIpAddress(request);
List<Map<String, Object>> arguments = getRequestArguments(joinPoint); // 接口传参信息
Behavior behavior = new Behavior(userId, projectId, nickName, ipAddress, now, controller, method, backstage, List<Map<String, Object>> arguments = getRequestArguments(joinPoint);
uri, methodName, httpMethod, arguments, now, severAddress, null); Behavior behavior = new Behavior(userId, projectId, nickName, ipAddress, now, controller, method, backstage,
UserLogRecord userLogRecord = userLogRecord(projectId, userInfo, joinPoint, methodSignature, ResponseResult); uri, methodName, httpMethod, arguments, now, severAddress, null);
if (Objects.nonNull(userLogRecord)) { UserLogRecord userLogRecord = userLogRecord(projectId, userInfo, joinPoint, methodSignature, ResponseResult);
userLogRecordDao.insertOne(userLogRecord); if (Objects.nonNull(userLogRecord)) {
userLogRecordDao.insertOne(userLogRecord);
}
String collectionName = behaviorDao.generateCollectionName();
behaviorDao.insertOneWithoutId(behavior, collectionName);
} }
String collectionName = behaviorDao.generateCollectionName();
behaviorDao.insertOneWithoutId(behavior, collectionName);
} }
} catch (Exception e) {
log.error("beforeLog", e);
} }
} }
......
...@@ -70,7 +70,7 @@ public class AuthAspect { ...@@ -70,7 +70,7 @@ public class AuthAspect {
} }
String token = request.getHeader(jwtKey); String token = request.getHeader(jwtKey);
// 存在有效token // 存在有效token
if (null != token && !Tools.tokenEmpty(token)) { if (null != token && !Tools.isNullOrUndefined(token)) {
Object proceed; Object proceed;
try { try {
Map<String, Object> tokenInfo = JwtUtil.unsign(token, Map.class); Map<String, Object> tokenInfo = JwtUtil.unsign(token, Map.class);
......
...@@ -53,7 +53,7 @@ public class MainAuthInterceptor implements HandlerInterceptor { ...@@ -53,7 +53,7 @@ public class MainAuthInterceptor implements HandlerInterceptor {
String token = request.getHeader("Token"); String token = request.getHeader("Token");
try { try {
// 不存在token 重新获取token // 不存在token 重新获取token
if (Tools.tokenEmpty(token)) { if (Tools.isNullOrUndefined(token)) {
Tools.responseMessage(response, HttpServletResponse.SC_UNAUTHORIZED, new ResponseResult(CommonCodeEnum.UNAUTHENTICATED, null)); Tools.responseMessage(response, HttpServletResponse.SC_UNAUTHORIZED, new ResponseResult(CommonCodeEnum.UNAUTHENTICATED, null));
return false; return false;
} }
......
...@@ -649,10 +649,6 @@ public class Tools { ...@@ -649,10 +649,6 @@ public class Tools {
} }
} }
public static boolean tokenEmpty(String token) {
return null == token || Objects.equals("undefined", token) || Objects.equals("null", token);
}
/** /**
* 获得区段时间的最大最小值 * 获得区段时间的最大最小值
* *
...@@ -1027,6 +1023,6 @@ public class Tools { ...@@ -1027,6 +1023,6 @@ public class Tools {
* @return * @return
*/ */
public static boolean isNullOrUndefined(Object o) { public static boolean isNullOrUndefined(Object o) {
return (isEmpty(o) || Objects.equals("undefined", o)); return (isEmpty(o) || Objects.equals("undefined", o) || Objects.equals("null", o));
} }
} }
\ No newline at end of file
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