zhoux преди 1 година
родител
ревизия
c44aa1c2f1

+ 16 - 0
src/main/java/com/dk/common/infrastructure/aspect/ServiceAspect.java

@@ -15,12 +15,14 @@ import org.aspectj.lang.annotation.After;
 import org.aspectj.lang.annotation.Aspect;
 import org.aspectj.lang.annotation.Before;
 import org.aspectj.lang.annotation.Pointcut;
+import org.aspectj.lang.reflect.MethodSignature;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 import org.springframework.web.servlet.HandlerInterceptor;
 
 import javax.servlet.http.HttpServletRequest;
+import java.lang.reflect.Method;
 import java.util.*;
 
 /**
@@ -103,6 +105,20 @@ public class ServiceAspect implements HandlerInterceptor {
                 }
             }
 
+//            MethodSignature signature = (MethodSignature) joinPoint.getSignature();
+//
+//            // 获取当前类名
+//            String className = signature.getDeclaringTypeName();
+//            String methodName = "getPrimaryKey";
+//            Class clz = Class.forName(className);
+//            Object obj = clz.newInstance();
+//            //获取方法
+//            Method m = obj.getClass().getDeclaredMethod(methodName);
+//            //调用方法
+//            String primaryKey = (String) m.invoke(obj);
+
+            /* 从请求头中获取主键Id,用于用Id进行查询的是否加入语言和公司 */
+            MybatisSqlIntercept.primaryKey = httpServletRequest.getHeader("primaryKey");
             /* 从请求头中获取国际化参数 */
             MybatisSqlIntercept.I18N = httpServletRequest.getHeader("i18n");
 

+ 14 - 1
src/main/java/com/dk/common/infrastructure/util/MybatisSqlIntercept.java

@@ -2,6 +2,7 @@ package com.dk.common.infrastructure.util;
 
 
 import com.alibaba.fastjson.JSON;
+import com.google.common.base.CaseFormat;
 import org.apache.ibatis.builder.StaticSqlSource;
 import org.apache.ibatis.executor.Executor;
 import org.apache.ibatis.mapping.MappedStatement;
@@ -41,6 +42,7 @@ public class MybatisSqlIntercept implements Interceptor {
 
     public static String I18N = "";
     public static Integer cpId = 0;
+    public static String primaryKey = null;
 
     @Override
     public Object intercept(Invocation invocation) throws Throwable {
@@ -71,7 +73,18 @@ public class MybatisSqlIntercept implements Interceptor {
                 args2[1] = argsNo2Map;
             }
         } else {
-            args2[1] = args[1];
+            if(primaryKey != null ){
+                Map<String, Object> argsNo2Map = new HashMap<>();
+                // 默认叫id
+                argsNo2Map.put(primaryKey,args[1]);
+                argsNo2Map.put("i18n", I18N);
+                if(cpId != 0){
+                    argsNo2Map.put("cpId", cpId);
+                }
+                args2[1] =argsNo2Map;
+            }else{
+                args2[1] = args[1];
+            }
             //TODO 在此添加单参数的逻辑 做法是获取父类的方法的参数名 然后把单参数转成Map传给xml
         }
         args2[0] = args[0];