自动化立体仓库 - WMS系统
whycq
2024-05-29 0cc3fbedc7d27dda956bb263a346c1ea934fdc54
Merge remote-tracking branch 'origin/phyzasrs' into phyzasrs
2个文件已修改
1个文件已添加
125 ■■■■■ 已修改文件
pom.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/config/AdminInterceptor.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/config/AspectConfig.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -37,6 +37,10 @@
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <dependency>
            <groupId>cn.cool</groupId>
            <artifactId>framework</artifactId>
            <version>${cool.version}</version>
src/main/java/com/zy/common/config/AdminInterceptor.java
@@ -137,13 +137,13 @@
                    Http.response(response, BaseRes.NO_ACTIVATION);
                    return false;
                }
                // 记录操作日志
                OperateLog operateLog = new OperateLog();
                operateLog.setAction(Cools.isEmpty(memo)?request.getRequestURI():memo);
                operateLog.setIp(request.getRemoteAddr());
                operateLog.setUserId(user.getId());
                operateLog.setRequest(JSON.toJSONString(request.getParameterMap()));
                request.setAttribute("operateLog", operateLog);
//                // 记录操作日志
//                OperateLog operateLog = new OperateLog();
//                operateLog.setAction(Cools.isEmpty(memo)?request.getRequestURI():memo);
//                operateLog.setIp(request.getRemoteAddr());
//                operateLog.setUserId(user.getId());
//                operateLog.setRequest(JSON.toJSONString(request.getParameterMap()));
//                request.setAttribute("operateLog", operateLog);
            }
            return true;
        } catch (Exception e){
src/main/java/com/zy/common/config/AspectConfig.java
New file
@@ -0,0 +1,107 @@
package com.zy.common.config;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.annotations.ManagerAuth;
import com.core.common.Cools;
import com.zy.system.entity.OperateLog;
import com.zy.system.entity.User;
import com.zy.system.entity.UserLogin;
import com.zy.system.service.OperateLogService;
import com.zy.system.service.UserLoginService;
import com.zy.system.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@Component
@Aspect
@Slf4j
public class AspectConfig {
    @Autowired
    private UserLoginService userLoginService;
    @Autowired
    private UserService userService;
    @Autowired
    private OperateLogService operateLogService;
    @Pointcut("execution(* com.zy.asrs.controller..*.*(..))")
    private void webLog() {
    }
    @Around("@within(org.springframework.web.bind.annotation.RestController)" +
            "||@within(org.springframework.stereotype.Controller)")
    public Object after(ProceedingJoinPoint joinPoint) throws Throwable{
        ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = requestAttributes.getRequest();
        long start = System.currentTimeMillis();
        Object result = joinPoint.proceed(joinPoint.getArgs());
        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
        Method method = signature.getMethod();
        if (method.isAnnotationPresent(ManagerAuth.class)){
            ManagerAuth annotation = method.getAnnotation(ManagerAuth.class);
            if (annotation.value().equals(ManagerAuth.Auth.CHECK)){
                if (!Cools.isEmpty(annotation.memo())) {
                    saveLog(joinPoint, request, result);
                }
            }
        }
        long end = System.currentTimeMillis();
//        log.info("请求日志的打印");
//        log.info("请求地址:{}", Optional.ofNullable(request.getRequestURI().toString()).orElse(null));
//        log.info("请求方式:{}",request.getMethod());
//        log.info("请求类方法:{}",joinPoint.getSignature());
//        log.info("请求类方法参数:{}", JSONObject.toJSONString(filterArgs(joinPoint.getArgs())));
//        log.info("请求响应参数{}", JSONObject.toJSONString(result));
//        log.info("执行耗时:{}", end - start);
        return result;
    }
    private List<Object> filterArgs(Object[] objects) {
        return Arrays.stream(objects).filter(obj -> !(obj instanceof MultipartFile)
                && !(obj instanceof HttpServletResponse)
                && !(obj instanceof HttpServletRequest)).collect(Collectors.toList());
    }
    private void saveLog(ProceedingJoinPoint joinPoint, HttpServletRequest request, Object result) {
        Long userId = 9527L;
        String token = request.getHeader("token");
        UserLogin userLogin = userLoginService.selectOne(new EntityWrapper<UserLogin>().eq("token", token).eq("system", "WMS"));
        if (userLogin != null) {
            User user = userService.selectById(userLogin.getUserId());
            if (user != null) {
                userId = user.getId();
            }
        }
        // 记录操作日志
        OperateLog operateLog = new OperateLog();
        operateLog.setAction(request.getRequestURI());
        operateLog.setIp(request.getRemoteAddr());
        operateLog.setUserId(userId);
        operateLog.setRequest(JSONObject.toJSONString(filterArgs(joinPoint.getArgs())));
        operateLog.setResponse(JSONObject.toJSONString(result));
        operateLogService.insert(operateLog);
    }
}