使用AOP来对前端传来的对象参数进行 BaseDto中属性的填充 这样就不用每次都去UserThreadLocal中拿了再又往BaseDto中放了

@Aspect
@Component
public class  UserAspect {
    @Pointcut("@annotation(org.springframework.web.bind.annotation.RequestMapping) || @annotation(org.springframework.web.bind.annotation.PostMapping) ||  @annotation(org.springframework.web.bind.annotation.GetMapping)")
    public void controllerAspect() {
    }
    @Before("controllerAspect()")
    public void doBefore(JoinPoint joinPoint) {
        if (joinPoint.getArgs() != null && (joinPoint.getArgs()).length != 0) {
            UserInfoDto userInfo = UserThreadLocal.getNotValid();
            if (!Objects.isNull(userInfo) && null != userInfo.getPkUser())
                Arrays.stream(joinPoint.getArgs()).forEach(arg -> {
                    if (arg instanceof BaseDto) {
                        ((BaseDto) arg).setUserId(userInfo.getPkUser());
                        ((BaseDto) arg).setUserName(userInfo.getUserName());
                        ((BaseDto) arg).setCard(userInfo.getCard());
                        ((BaseDto) arg).setEamPkDept(userInfo.getPkDept());
                        ((BaseDto) arg).setEamChineseName(userInfo.getChineseName());
                    }
                    if (arg instanceof DefaultPageDto) {
                        ((DefaultPageDto) arg).setUserId(userInfo.getPkUser());
                        ((DefaultPageDto) arg).setUserName(userInfo.getUserName());
                        ((DefaultPageDto) arg).setCard(userInfo.getCard());
                        ((DefaultPageDto) arg).setEamPkDept(userInfo.getPkDept());
                        ((DefaultPageDto) arg).setEamChineseName(userInfo.getChineseName());
                    }
                });
        }
    }
}
                


















