Ver código fonte

提交中英文切换相关代码

kouchengxing 5 anos atrás
pai
commit
5723745c86

+ 32 - 3
dgtly-apiframework/src/main/java/com/dgtly/apiframework/interceptor/SwitchEnSqlInterceptor.java

@@ -1,5 +1,8 @@
 package com.dgtly.apiframework.interceptor;
 
+import com.dgtly.common.annotation.SwitchEn;
+import com.dgtly.common.utils.ServletUtils;
+import com.dgtly.common.utils.StringUtils;
 import org.apache.ibatis.cache.CacheKey;
 import org.apache.ibatis.executor.Executor;
 import org.apache.ibatis.mapping.BoundSql;
@@ -11,6 +14,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
 
+import javax.servlet.http.HttpServletRequest;
+import java.lang.reflect.Method;
 import java.util.Properties;
 
 @Component
@@ -34,13 +39,37 @@ public class SwitchEnSqlInterceptor  implements Interceptor {
         Object parameter = invocation.getArgs()[1];
         BoundSql boundSql = mappedStatement.getBoundSql(parameter);
         String oldsql = boundSql.getSql();
-       // log.info("old:"+oldsql);
-        oldsql = oldsql.replaceAll("gi.name","gi.id name");
+        //oldsql = oldsql.replaceAll("gi.name","gi.name_en name");
+
+        //@TODO 获取前端标识是否切换获取中英文切换
+        HttpServletRequest request = ServletUtils.getRequest();
+
+        // 方法中含有获取注解
+        Class<?> classType = Class.forName(mappedStatement.getId().substring(0,mappedStatement.getId().lastIndexOf(".")));
+        String mName  = mappedStatement.getId().substring(mappedStatement.getId().lastIndexOf(".") + 1 ,mappedStatement.getId().length());
+        for(Method method : classType.getDeclaredMethods()){
+            if(method!=null && mName.equals(method.getName()))
+            {
+                SwitchEn switchEn = method.getAnnotation(SwitchEn.class);
+                String[] oldfiles = switchEn.oldfiles();
+                String[] newfiles = switchEn.newfiles();
+                //旧字段和替换字段长度相同
+                if(newfiles.length==oldfiles.length){
+                    for(int i = 0;i<oldfiles.length;i++){
+                        oldsql = oldsql.replaceAll(oldfiles[i],newfiles[i]);
+                    }
+                }
+            }
+        }
+
+        // log.info("old:"+oldsql);
+
         // 改变sql语句
         BoundSql newBoundSql = new BoundSql(mappedStatement.getConfiguration(), oldsql ,
                 boundSql.getParameterMappings(), boundSql.getParameterObject());
         invocation.getArgs()[5] = newBoundSql;
-        // 注解invocation.method.annotations()
+
+
         // 继续执行
         Object result = invocation.proceed();
         return result;

+ 3 - 3
dgtly-common/src/main/java/com/dgtly/common/annotation/SwitchEn.java

@@ -4,12 +4,12 @@ import java.lang.annotation.*;
 
 @Target(ElementType.METHOD)
 @Retention(RetentionPolicy.RUNTIME)
-@Documented
 public @interface SwitchEn {
 
 
     /**
-     * 
+     * 注解方式写入旧属性替换
      */
-    public String files() default "";
+    public String[] oldfiles() default {""};
+    public String[] newfiles() default {""};
 }

+ 1 - 1
dgtly-common/src/main/java/com/dgtly/common/utils/AddressUtils.java

@@ -1,11 +1,11 @@
 package com.dgtly.common.utils;
 
+import com.dgtly.common.utils.http.HttpUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import com.dgtly.common.config.Global;
 import com.dgtly.common.json.JSON;
 import com.dgtly.common.json.JSONObject;
-import com.ruoyi.common.utils.http.HttpUtils;
 
 /**
  * 获取地址类

+ 77 - 0
dgtly-common/src/main/java/com/dgtly/common/utils/TranslateUtil.java

@@ -0,0 +1,77 @@
+package com.dgtly.common.utils;
+
+import com.dgtly.common.utils.http.HttpUtils;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author koucx
+ * @version 1.0
+ * @descption: TODO
+ * @company 神州数码通用软件(洛阳)有限公司
+ * @copyright (c) 2019 LuoYang DGT Co'Ltd Inc. All rights reserved.
+ * @date 2020-03-24
+ * @since JDK1.8
+ */
+public class TranslateUtil {
+
+    private static final Logger log = LoggerFactory.getLogger(TranslateUtil.class);
+
+    private static final String TRANSLATE_URL = "http://fanyi.youdao.com/translate";
+
+    /**
+     * @Description: 调用有道翻译接口中文翻译成英文
+     * @Param: [msg]
+     * @Return: java.lang.String
+     * @Author: koucx
+     * @Date: 2020-03-24
+    **/
+    public static String getEnTranslateInfo(String msg){
+        String params = "doctype=json&type=AUTO&i="+msg;
+        String enInfo = HttpUtils.sendGet(TRANSLATE_URL, params);
+        /**
+         * {
+         *     "type": "ZH_CN2EN",
+         *     "errorCode": 0,
+         *     "elapsedTime": 1,
+         *     "translateResult": [
+         *         [
+         *             {
+         *                 "src": "计算",//需要翻译的中文
+         *                 "tgt": "To calculate"//翻译后的中文
+         *             }
+         *         ]
+         *     ]
+         * }
+         *
+         * 根据以上json串获取相应英文翻译
+         *
+         */
+        JSONObject object = JSONObject.fromObject(enInfo);
+        if(object!=null){
+            JSONArray array = object.getJSONArray("translateResult");
+            if(array!=null && array.size()>0){
+                for (Object obj:array) {
+                    JSONArray arr = JSONArray.fromObject(obj);
+                    for (Object o:arr) {
+                        JSONObject json = JSONObject.fromObject(o);
+                        if(json!=null && json.containsKey("tgt")){
+                            String tgt = json.getString("tgt");
+                            log.info("'"+json.getString("src")+"'翻译后'"+tgt+"'");
+                            return tgt;
+                        }
+                    }
+                }
+            }
+        }
+        return "";
+    }
+
+
+    public static void main(String[] args) {
+        System.out.println(getEnTranslateInfo("60厘米")); ;
+    }
+
+}

+ 1 - 1
dgtly-common/src/main/java/com/dgtly/common/utils/http/HttpUtils.java

@@ -1,4 +1,4 @@
-package com.ruoyi.common.utils.http;
+package com.dgtly.common.utils.http;
 
 import java.io.BufferedReader;
 import java.io.IOException;