A.java 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package com.gxzc.zen;
  2. import com.gxzc.zen.orm.DynamicDataSource;
  3. import com.gxzc.zen.orm.DynamicMultipleDataSource;
  4. import kotlin.TypeCastException;
  5. import kotlin.jvm.internal.Intrinsics;
  6. import org.apache.ibatis.binding.MapperProxy;
  7. import org.aspectj.lang.JoinPoint;
  8. import org.aspectj.lang.Signature;
  9. import org.aspectj.lang.annotation.Aspect;
  10. import org.aspectj.lang.annotation.Before;
  11. import org.aspectj.lang.reflect.MethodSignature;
  12. import org.aspectj.lang.reflect.SourceLocation;
  13. import org.jetbrains.annotations.NotNull;
  14. import org.springframework.core.annotation.Order;
  15. import org.springframework.stereotype.Component;
  16. import java.lang.reflect.Method;
  17. import java.lang.reflect.Proxy;
  18. import java.util.Objects;
  19. @Aspect
  20. @Order(-1)
  21. @Component
  22. public class A {
  23. @Before("execution(* com.gxzc.zen.api.sys..*Service.*(..))")
  24. public void sysService(@NotNull JoinPoint joinPoint) {
  25. this.setDataSource(joinPoint, "sysDataSource");
  26. }
  27. @Before("execution(* com.baomidou.mybatisplus..*Service.*(..)) || execution(* com.baomidou.mybatisplus..*Mapper.*(..))")
  28. public void dataSourceSys2(@NotNull JoinPoint joinPoint) {
  29. SourceLocation a = joinPoint.getSourceLocation();
  30. Class b = a.getWithinType();
  31. String k = joinPoint.getKind();
  32. Object o = joinPoint.getTarget();
  33. Class cs = o.getClass();
  34. JoinPoint.StaticPart s = joinPoint.getStaticPart();
  35. String packageName = joinPoint.getTarget().getClass().getPackage().getName();
  36. if (packageName.contains("com.gxzc.zen.api.sys")) {
  37. sysService(joinPoint);
  38. } else if (packageName.contains("com.gxzc.zen.api.rec")) {
  39. recService(joinPoint);
  40. }
  41. }
  42. @Before("execution(* com.gxzc.zen.api.rec..*Service.*(..))")
  43. public void recService(@NotNull JoinPoint joinPoint) {
  44. this.setDataSource(joinPoint, "recDataSource");
  45. }
  46. private void setDataSource(JoinPoint joinPoint, String defaultKey) {
  47. DynamicDataSource dynamicDataSource = this.currentMethod(joinPoint).getAnnotation(DynamicDataSource.class);
  48. if (Objects.isNull(dynamicDataSource)) {
  49. DynamicMultipleDataSource.Companion.setDataSource(defaultKey);
  50. } else {
  51. DynamicMultipleDataSource.Companion.setDataSource(dynamicDataSource.value());
  52. }
  53. }
  54. private Method currentMethod(JoinPoint joinPoint) {
  55. Signature var10000 = joinPoint.getSignature();
  56. if (var10000 == null) {
  57. throw new TypeCastException("null cannot be cast to non-null type org.aspectj.lang.reflect.MethodSignature");
  58. } else {
  59. Method var2 = ((MethodSignature) var10000).getMethod();
  60. Intrinsics.checkExpressionValueIsNotNull(var2, "(joinPoint.signature as MethodSignature).method");
  61. return var2;
  62. }
  63. }
  64. }