Ver código fonte

Merge branch 'master' of http://git.homecommunity.cn/supervip/MicroCommunity

java110 4 anos atrás
pai
commit
bdd1104ebd

+ 57 - 0
java110-core/src/main/java/com/java110/core/language/Cn.java

@@ -1,7 +1,10 @@
 package com.java110.core.language;
 
 import com.java110.dto.menu.MenuDto;
+import com.java110.dto.menuCatalog.MenuCatalogDto;
+import com.java110.utils.util.StringUtil;
 import com.java110.vo.ResultVo;
+import org.springframework.stereotype.Component;
 
 import java.util.HashMap;
 import java.util.List;
@@ -11,9 +14,63 @@ import java.util.Map;
  * 繁体
  *
  */
+@Component
 public class Cn extends DefaultLanguage {
+    private static Map<String, String> menuCatalogs = new HashMap<>();
+    private static Map<String, String> menus = new HashMap<>();
+    private static Map<String, String> msgs = new HashMap<>();
 
 
+
+    public List<MenuCatalogDto> getMenuCatalog(List<MenuCatalogDto> menuCatalogDtos) {
+        String menuCatalogsName = "";
+        for (MenuCatalogDto menuCatalogDto : menuCatalogDtos) {
+            menuCatalogsName = menuCatalogs.get(menuCatalogDto.getName());
+            if (!StringUtil.isEmpty(menuCatalogsName)) {
+                menuCatalogDto.setName(menuCatalogsName);
+            }
+        }
+        return menuCatalogDtos;
+    }
+
+
+    @Override
+    public List<Map> getMenuDto(List<Map> menuDtos) {
+        String menuName = "";
+        for (Map menuDto : menuDtos) {
+            menuName = menus.get(menuDto.get("menuGroupName"));
+            if (!StringUtil.isEmpty(menuName)) {
+                menuDto.put("menuGroupName", menuName);
+            }
+
+            menuName = menus.get(menuDto.get("menuName"));
+            if (!StringUtil.isEmpty(menuName)) {
+                menuDto.put("menuName", menuName);
+            }
+
+        }
+        return menuDtos;
+    }
+
+    @Override
+    public ResultVo getResultVo(ResultVo resultVo) {
+        String msg = msgs.get(resultVo.getMsg());
+        if (!StringUtil.isEmpty(msg)) {
+            resultVo.setMsg(msg);
+        }
+
+        return resultVo;
+    }
+
+    public String getLangMsg(String msg){
+        String msgStr = msgs.get(msg);
+        if (!StringUtil.isEmpty(msg)) {
+            return msgStr;
+        }
+
+        return msg;
+    }
+
     static {
         menuCatalogs.put("设备", "設備");
         menuCatalogs.put("首页", "首頁");

+ 39 - 10
java110-core/src/main/java/com/java110/core/language/DefaultLanguage.java

@@ -9,18 +9,20 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-public abstract class DefaultLanguage implements Language{
+public abstract class DefaultLanguage implements Language {
 
-    protected static Map<String,String> menuCatalogs = new HashMap<>();
-    protected static Map<String,String> menus = new HashMap<>();
-    protected static Map<String,String> msgs = new HashMap<>();
 
+    protected static Map<String, String> menuCatalogs = new HashMap<>();
+    protected static Map<String, String> menus = new HashMap<>();
+    protected static Map<String, String> msgs = new HashMap<>();
 
-    public List<MenuCatalogDto> getMenuCatalog(List<MenuCatalogDto> menuCatalogDtos){
+
+
+    public List<MenuCatalogDto> getMenuCatalog(List<MenuCatalogDto> menuCatalogDtos) {
         String menuCatalogsName = "";
-        for(MenuCatalogDto menuCatalogDto :menuCatalogDtos){
+        for (MenuCatalogDto menuCatalogDto : menuCatalogDtos) {
             menuCatalogsName = menuCatalogs.get(menuCatalogDto.getName());
-            if(!StringUtil.isEmpty(menuCatalogsName)){
+            if (!StringUtil.isEmpty(menuCatalogsName)) {
                 menuCatalogDto.setName(menuCatalogsName);
             }
         }
@@ -29,13 +31,40 @@ public abstract class DefaultLanguage implements Language{
 
 
     @Override
-    public List<MenuDto> getMenuDto(List<MenuDto> menus) {
-        return null;
+    public List<Map> getMenuDto(List<Map> menuDtos) {
+        String menuName = "";
+        for (Map menuDto : menuDtos) {
+            menuName = menus.get(menuDto.get("menuGroupName"));
+            if (!StringUtil.isEmpty(menuName)) {
+                menuDto.put("menuGroupName", menuName);
+            }
+
+            menuName = menus.get(menuDto.get("menuName"));
+            if (!StringUtil.isEmpty(menuName)) {
+                menuDto.put("menuName", menuName);
+            }
+
+        }
+        return menuDtos;
     }
 
     @Override
     public ResultVo getResultVo(ResultVo resultVo) {
-        return null;
+        String msg = msgs.get(resultVo.getMsg());
+        if (!StringUtil.isEmpty(msg)) {
+            resultVo.setMsg(msg);
+        }
+
+        return resultVo;
+    }
+
+    public String getLangMsg(String msg){
+        String msgStr = msgs.get(msg);
+        if (!StringUtil.isEmpty(msg)) {
+            return msgStr;
+        }
+
+        return msg;
     }
 
 }

+ 64 - 0
java110-core/src/main/java/com/java110/core/language/En.java

@@ -1,9 +1,73 @@
 package com.java110.core.language;
 
+import com.java110.dto.menuCatalog.MenuCatalogDto;
+import com.java110.utils.util.StringUtil;
+import com.java110.vo.ResultVo;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 /**
  * 英文
  */
+@Component
 public class En extends DefaultLanguage{
+    private static Map<String, String> menuCatalogs = new HashMap<>();
+    private static Map<String, String> menus = new HashMap<>();
+    private static Map<String, String> msgs = new HashMap<>();
+
+
+
+    public List<MenuCatalogDto> getMenuCatalog(List<MenuCatalogDto> menuCatalogDtos) {
+        String menuCatalogsName = "";
+        for (MenuCatalogDto menuCatalogDto : menuCatalogDtos) {
+            menuCatalogsName = menuCatalogs.get(menuCatalogDto.getName());
+            if (!StringUtil.isEmpty(menuCatalogsName)) {
+                menuCatalogDto.setName(menuCatalogsName);
+            }
+        }
+        return menuCatalogDtos;
+    }
+
+
+    @Override
+    public List<Map> getMenuDto(List<Map> menuDtos) {
+        String menuName = "";
+        for (Map menuDto : menuDtos) {
+            menuName = menus.get(menuDto.get("menuGroupName"));
+            if (!StringUtil.isEmpty(menuName)) {
+                menuDto.put("menuGroupName", menuName);
+            }
+
+            menuName = menus.get(menuDto.get("menuName"));
+            if (!StringUtil.isEmpty(menuName)) {
+                menuDto.put("menuName", menuName);
+            }
+
+        }
+        return menuDtos;
+    }
+
+    @Override
+    public ResultVo getResultVo(ResultVo resultVo) {
+        String msg = msgs.get(resultVo.getMsg());
+        if (!StringUtil.isEmpty(msg)) {
+            resultVo.setMsg(msg);
+        }
+
+        return resultVo;
+    }
+
+    public String getLangMsg(String msg){
+        String msgStr = msgs.get(msg);
+        if (!StringUtil.isEmpty(msg)) {
+            return msgStr;
+        }
+
+        return msg;
+    }
     static {
         menuCatalogs.put("设备","Machine");
         menuCatalogs.put("首页","Front page");

+ 13 - 0
java110-core/src/main/java/com/java110/core/language/Java110Lang.java

@@ -0,0 +1,13 @@
+package com.java110.core.language;
+
+
+import org.springframework.stereotype.Component;
+
+import java.lang.annotation.*;
+
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Component
+public @interface Java110Lang {
+}

+ 75 - 0
java110-core/src/main/java/com/java110/core/language/Java110LangAop.java

@@ -0,0 +1,75 @@
+package com.java110.core.language;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.trace.Java110TraceFactory;
+import com.java110.dto.trace.TraceParamDto;
+import com.java110.utils.constant.CommonConstant;
+import com.java110.utils.factory.ApplicationContextFactory;
+import com.java110.utils.util.StringUtil;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+import org.springframework.web.context.request.RequestAttributes;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * trace log  api aop
+ */
+@Component
+@Aspect
+public class Java110LangAop {
+
+
+
+    @Pointcut("@annotation(com.java110.core.language.Java110Lang)")
+    public void dataProcess() {
+    }
+
+    //环绕通知,环绕增强,相当于MethodInterceptor
+    @Around("dataProcess()")
+    public Object around(ProceedingJoinPoint pjp) throws Throwable {
+        Object out = null;
+        RequestAttributes ra = RequestContextHolder.getRequestAttributes();
+        ServletRequestAttributes sra = (ServletRequestAttributes) ra;
+        HttpServletRequest request = sra.getRequest();
+        String lang = request.getHeader(CommonConstant.JAVA110_LANG);
+
+        out = pjp.proceed();
+
+        if (StringUtil.isEmpty(lang) || "zh-cn".equals(lang)) {
+            return out;
+        }
+
+
+        if (out instanceof ResponseEntity) {
+            String body = ((ResponseEntity) out).getBody().toString();
+
+            if (!StringUtil.isJsonObject(body)) {
+                return out;
+            }
+            JSONObject outJson = JSONObject.parseObject(body);
+            String msg = outJson.getString("msg");
+
+            Language language = ApplicationContextFactory.getBean(lang, Language.class);
+
+            if (language == null) {
+                return out;
+            }
+
+            msg = language.getLangMsg(msg);
+
+            outJson.put("msg", msg);
+
+            return new ResponseEntity(outJson.toJSONString(), ((ResponseEntity) out).getStatusCode());
+        }
+
+        return out;
+    }
+}

+ 10 - 0
java110-core/src/main/java/com/java110/core/language/LangErrorMsgCode.java

@@ -0,0 +1,10 @@
+package com.java110.core.language;
+
+/**
+ * 国际化统一回复编码
+ */
+public class LangErrorMsgCode {
+
+
+    private String LANG_RESULT_MSG_CODE = "";
+}

+ 14 - 2
java110-core/src/main/java/com/java110/core/language/Language.java

@@ -1,18 +1,22 @@
 package com.java110.core.language;
 
 import com.java110.dto.menu.MenuDto;
+import com.java110.dto.menuCatalog.MenuCatalogDto;
 import com.java110.vo.ResultVo;
 
 import java.util.List;
+import java.util.Map;
 
 public interface Language {
 
+    List<MenuCatalogDto> getMenuCatalog(List<MenuCatalogDto> menuCatalogDtos);
+
     /**
      * 获取菜单
-     * @param menus
+     * @param menuDtos
      * @return
      */
-    List<MenuDto> getMenuDto(List<MenuDto> menus);
+    List<Map> getMenuDto(List<Map> menuDtos);
 
 
     /**
@@ -21,4 +25,12 @@ public interface Language {
      * @return
      */
     ResultVo getResultVo(ResultVo resultVo);
+
+
+    /**
+     * 返回
+     * @param msg
+     * @return
+     */
+    String getLangMsg(String msg);
 }

+ 0 - 2
java110-core/src/main/java/com/java110/core/trace/Java110TraceConfigurer.java

@@ -2,8 +2,6 @@ package com.java110.core.trace;
 
 import okhttp3.ConnectionPool;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
-import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;

+ 1 - 1
java110-utils/src/main/java/com/java110/utils/constant/CommonConstant.java

@@ -152,7 +152,7 @@ public class CommonConstant {
 
     public final static String INSTANCE_N = "N";
 
-
+    public static final String JAVA110_LANG = "java110-lang";
     public static final String APP_ID = "app-id";
     public static final String TRANSACTION_ID = "transaction-id";
     public static final String REQUEST_TIME = "req-time";

+ 7 - 0
service-api/src/main/java/com/java110/api/controller/app/AppController.java

@@ -21,6 +21,7 @@ import com.java110.api.smo.api.IApiSMO;
 import com.java110.api.smo.privilege.IPrivilegeSMO;
 import com.java110.core.base.controller.BaseController;
 import com.java110.core.context.IPageData;
+import com.java110.core.language.Java110Lang;
 import com.java110.core.log.LoggerFactory;
 import com.java110.utils.constant.CommonConstant;
 import com.java110.vo.ResultVo;
@@ -79,6 +80,7 @@ public class AppController extends BaseController {
     @RequestMapping(path = "/{service:.+}", method = RequestMethod.POST)
     @ApiOperation(value = "资源post请求", notes = "test: 返回 2XX 表示服务正常")
     @ApiImplicitParam(paramType = "query", name = "service", value = "用户编号", required = true, dataType = "String")
+    @Java110Lang
     public ResponseEntity<String> servicePost(@PathVariable String service,
                                               @RequestBody String postInfo,
                                               HttpServletRequest request) {
@@ -112,6 +114,7 @@ public class AppController extends BaseController {
     @RequestMapping(path = "/{service:.+}", method = RequestMethod.GET)
     @ApiOperation(value = "资源get请求", notes = "test: 返回 2XX 表示服务正常")
     @ApiImplicitParam(paramType = "query", name = "service", value = "用户编号", required = true, dataType = "String")
+    @Java110Lang
     public ResponseEntity<String> serviceGet(@PathVariable String service,
                                              HttpServletRequest request) {
         ResponseEntity<String> responseEntity = null;
@@ -144,6 +147,7 @@ public class AppController extends BaseController {
     @RequestMapping(path = "/{resource}/{action}", method = RequestMethod.GET)
     @ApiOperation(value = "资源get请求", notes = "test: 返回 2XX 表示服务正常")
     @ApiImplicitParam(paramType = "query", name = "subServiceGet", value = "用户编号", required = true, dataType = "String")
+    @Java110Lang
     public ResponseEntity<String> subServiceGet(
             @PathVariable String resource,
             @PathVariable String action,
@@ -181,6 +185,7 @@ public class AppController extends BaseController {
     @RequestMapping(path = "/{resource}/{action}", method = RequestMethod.POST)
     @ApiOperation(value = "资源post请求", notes = "test: 返回 2XX 表示服务正常")
     @ApiImplicitParam(paramType = "query", name = "subServicePost", value = "用户编号", required = true, dataType = "String")
+    @Java110Lang
     public ResponseEntity<String> subServicePost(
             @PathVariable String resource,
             @PathVariable String action,
@@ -220,6 +225,7 @@ public class AppController extends BaseController {
     @RequestMapping(path = "/{service:.+}", method = RequestMethod.PUT)
     @ApiOperation(value = "资源put请求", notes = "test: 返回 2XX 表示服务正常")
     @ApiImplicitParam(paramType = "query", name = "service", value = "用户编号", required = true, dataType = "String")
+    @Java110Lang
     public ResponseEntity<String> servicePut(@PathVariable String service,
                                              @RequestBody String postInfo,
                                              HttpServletRequest request) {
@@ -253,6 +259,7 @@ public class AppController extends BaseController {
     @RequestMapping(path = "/{service:.+}", method = RequestMethod.DELETE)
     @ApiOperation(value = "资源delete请求", notes = "test: 返回 2XX 表示服务正常")
     @ApiImplicitParam(paramType = "query", name = "service", value = "用户编号", required = true, dataType = "String")
+    @Java110Lang
     public ResponseEntity<String> serviceDelete(@PathVariable String service,
                                                 HttpServletRequest request) {
         ResponseEntity<String> responseEntity = null;

+ 5 - 0
service-api/src/main/java/com/java110/api/controller/component/CallComponentController.java

@@ -20,6 +20,7 @@ import com.java110.api.smo.DefaultAbstractComponentSMO;
 import com.java110.core.base.controller.BaseController;
 import com.java110.core.context.IPageData;
 import com.java110.core.context.PageData;
+import com.java110.core.language.Java110Lang;
 import com.java110.utils.constant.CommonConstant;
 import com.java110.utils.exception.SMOException;
 import com.java110.utils.factory.ApplicationContextFactory;
@@ -68,6 +69,7 @@ public class CallComponentController extends DefaultAbstractComponentSMO {
      */
 
     @RequestMapping(path = "/callComponent/{api}")
+    @Java110Lang
     public ResponseEntity<String> callApi(
             @PathVariable String api,
             //@RequestBody String info,
@@ -138,6 +140,7 @@ public class CallComponentController extends DefaultAbstractComponentSMO {
      */
 
     @RequestMapping(path = "/callComponent/{componentCode}/{componentMethod}")
+    @Java110Lang
     public ResponseEntity<String> callComponent(
             @PathVariable String componentCode,
             @PathVariable String componentMethod,
@@ -210,6 +213,7 @@ public class CallComponentController extends DefaultAbstractComponentSMO {
      */
 
     @RequestMapping(path = "/callComponent/upload/{componentCode}/{componentMethod}")
+    @Java110Lang
     public ResponseEntity<String> callComponentUploadFile(
             @PathVariable String componentCode,
             @PathVariable String componentMethod,
@@ -279,6 +283,7 @@ public class CallComponentController extends DefaultAbstractComponentSMO {
      */
 
     @RequestMapping(path = "/callComponent/download/{componentCode}/{componentMethod}")
+    @Java110Lang
     public ResponseEntity<Object> callComponentDownloadFile(
             @PathVariable String componentCode,
             @PathVariable String componentMethod,

+ 13 - 0
service-user/src/main/java/com/java110/user/cmd/menu/ListCatalogCmd.java

@@ -20,13 +20,17 @@ import com.java110.core.annotation.Java110Cmd;
 import com.java110.core.context.ICmdDataFlowContext;
 import com.java110.core.event.cmd.AbstractServiceCmdListener;
 import com.java110.core.event.cmd.CmdEvent;
+import com.java110.core.language.Language;
 import com.java110.dto.menuCatalog.MenuCatalogDto;
 import com.java110.dto.store.StoreDto;
 import com.java110.intf.store.IStoreInnerServiceSMO;
 import com.java110.intf.user.IMenuCatalogV1InnerServiceSMO;
+import com.java110.utils.constant.CommonConstant;
 import com.java110.utils.exception.CmdException;
+import com.java110.utils.factory.ApplicationContextFactory;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.StringUtil;
 import com.java110.vo.ResultVo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -87,6 +91,15 @@ public class ListCatalogCmd extends AbstractServiceCmdListener {
             menuCatalogDtos = new ArrayList<>();
         }
 
+        String lang = cmdDataFlowContext.getReqHeaders().get(CommonConstant.JAVA110_LANG);
+        if (!StringUtil.isEmpty(lang)) {
+            Language language = ApplicationContextFactory.getBean(lang, Language.class);
+            if (language != null) {
+                menuCatalogDtos = language.getMenuCatalog(menuCatalogDtos);
+            }
+
+        }
+
         ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) reqJson.getInteger("row")), count, menuCatalogDtos);
 
         ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);

+ 12 - 0
service-user/src/main/java/com/java110/user/cmd/menu/ListCatalogMenusCmd.java

@@ -21,13 +21,17 @@ import com.java110.core.annotation.Java110Cmd;
 import com.java110.core.context.ICmdDataFlowContext;
 import com.java110.core.event.cmd.AbstractServiceCmdListener;
 import com.java110.core.event.cmd.CmdEvent;
+import com.java110.core.language.Language;
 import com.java110.dto.menuGroup.MenuGroupDto;
 import com.java110.dto.store.StoreDto;
 import com.java110.intf.store.IStoreInnerServiceSMO;
 import com.java110.intf.user.IMenuCatalogV1InnerServiceSMO;
+import com.java110.utils.constant.CommonConstant;
 import com.java110.utils.exception.CmdException;
+import com.java110.utils.factory.ApplicationContextFactory;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.StringUtil;
 import com.java110.vo.ResultVo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -89,6 +93,14 @@ public class ListCatalogMenusCmd extends AbstractServiceCmdListener {
         menuCatalogDto.setStoreType(storeDtos.get(0).getStoreTypeCd());
 
         List<Map> menus = menuCatalogV1InnerServiceSMOImpl.queryMenus(menuCatalogDto);
+        String lang = cmdDataFlowContext.getReqHeaders().get(CommonConstant.JAVA110_LANG);
+        if (!StringUtil.isEmpty(lang)) {
+            Language language = ApplicationContextFactory.getBean(lang, Language.class);
+            if (language != null) {
+                menus = language.getMenuDto(menus);
+            }
+
+        }
 
         cmdDataFlowContext.setResponseEntity(refreshMenusInfo(menus));
     }