123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- package com.gxzc.zen;
- import com.gxzc.zen.orm.DynamicDataSource;
- import com.gxzc.zen.orm.DynamicMultipleDataSource;
- import kotlin.TypeCastException;
- import kotlin.jvm.internal.Intrinsics;
- import org.apache.ibatis.binding.MapperProxy;
- import org.aspectj.lang.JoinPoint;
- import org.aspectj.lang.Signature;
- import org.aspectj.lang.annotation.Aspect;
- import org.aspectj.lang.annotation.Before;
- import org.aspectj.lang.reflect.MethodSignature;
- import org.aspectj.lang.reflect.SourceLocation;
- import org.jetbrains.annotations.NotNull;
- import org.springframework.core.annotation.Order;
- import org.springframework.stereotype.Component;
- import java.lang.reflect.Method;
- import java.lang.reflect.Proxy;
- import java.util.Objects;
- @Aspect
- @Order(-1)
- @Component
- public class A {
- @Before("execution(* com.gxzc.zen.api.sys..*Service.*(..))")
- public void sysService(@NotNull JoinPoint joinPoint) {
- this.setDataSource(joinPoint, "sysDataSource");
- }
- @Before("execution(* com.baomidou.mybatisplus..*Service.*(..)) || execution(* com.baomidou.mybatisplus..*Mapper.*(..))")
- public void dataSourceSys2(@NotNull JoinPoint joinPoint) {
- SourceLocation a = joinPoint.getSourceLocation();
- Class b = a.getWithinType();
- String k = joinPoint.getKind();
- Object o = joinPoint.getTarget();
- Class cs = o.getClass();
- JoinPoint.StaticPart s = joinPoint.getStaticPart();
- String packageName = joinPoint.getTarget().getClass().getPackage().getName();
- if (packageName.contains("com.gxzc.zen.api.sys")) {
- sysService(joinPoint);
- } else if (packageName.contains("com.gxzc.zen.api.rec")) {
- recService(joinPoint);
- }
- }
- @Before("execution(* com.gxzc.zen.api.rec..*Service.*(..))")
- public void recService(@NotNull JoinPoint joinPoint) {
- this.setDataSource(joinPoint, "recDataSource");
- }
- private void setDataSource(JoinPoint joinPoint, String defaultKey) {
- DynamicDataSource dynamicDataSource = this.currentMethod(joinPoint).getAnnotation(DynamicDataSource.class);
- if (Objects.isNull(dynamicDataSource)) {
- DynamicMultipleDataSource.Companion.setDataSource(defaultKey);
- } else {
- DynamicMultipleDataSource.Companion.setDataSource(dynamicDataSource.value());
- }
- }
- private Method currentMethod(JoinPoint joinPoint) {
- Signature var10000 = joinPoint.getSignature();
- if (var10000 == null) {
- throw new TypeCastException("null cannot be cast to non-null type org.aspectj.lang.reflect.MethodSignature");
- } else {
- Method var2 = ((MethodSignature) var10000).getMethod();
- Intrinsics.checkExpressionValueIsNotNull(var2, "(joinPoint.signature as MethodSignature).method");
- return var2;
- }
- }
- }
|