Эх сурвалжийг харах

Merge remote-tracking branch 'origin/master' into prod

tanbin 10 сар өмнө
parent
commit
745052530b

+ 3 - 64
authorize-api-service/src/main/java/com/xy/service/TranslateService.java

@@ -1,13 +1,7 @@
 package com.xy.service;
 
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.json.JSONArray;
-import cn.hutool.json.JSONObject;
-import cn.hutool.json.JSONUtil;
 import com.xy.annotate.RestMappingController;
 import com.xy.dto.TranslateDto;
-import com.xy.entity.SysMenu;
 import com.xy.service.impl.SysMenuServiceImpl;
 import com.xy.third.baidu.TransApi;
 import com.xy.utils.R;
@@ -15,16 +9,11 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.cloud.client.loadbalancer.AsyncLoadBalancerAutoConfiguration;
-import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 
-import java.util.ArrayList;
-import java.util.List;
-
 /**
  * 翻译服务
  */
@@ -35,40 +24,15 @@ import java.util.List;
 @RestMappingController("/translate")
 public class TranslateService {
 
-    private static final String APP_ID = "20240428002037687";
-    private static final String SECURITY_KEY = "nXkFm4SaA2Wrmb42Xmky";
-    private final SysMenuServiceImpl sysMenuService;
-    private final AsyncLoadBalancerAutoConfiguration asyncLoadBalancerAutoConfiguration;
 
-    /**
-     * 调用百度翻译API
-     *
-     * @param query  待翻译的文本
-     * @param lanSrc 原语言 zh
-     * @param lanDst 目标语言 en
-     * @return
-     */
-    public static String translate(String query, String lanSrc, String lanDst) {
-        TransApi api = new TransApi(APP_ID, SECURITY_KEY);
-        log.info("正在翻译文本:{}", query);
-        JSONObject res = JSONUtil.parseObj(api.getTransResult(query, lanSrc, lanDst));
-        JSONArray transResult = res.getJSONArray("trans_result");
-        if (!JSONUtil.isNull(transResult)) {
-            JSONObject jsonObject = transResult.getJSONObject(0);
-            log.info("文本:{},翻译结果:{}", query, jsonObject.getStr("dst"));
-            return jsonObject.getStr("dst");
-        } else {
-            log.info("文本:{},翻译失败:{}", query, JSONUtil.toJsonPrettyStr(res));
-            return "-";
-        }
-    }
+    private final SysMenuServiceImpl sysMenuService;
 
     @PostMapping("/menuOne")
     @ApiOperation("单个菜单翻译-同步返回结果")
     public R<String> translateMenuOne(@RequestBody @Validated TranslateDto.One one) {
         String content = one.getContent();
         String targetType = one.getTargetType();
-        String translatedValue = translate(content, "zh", targetType);
+        String translatedValue = TransApi.translate(content, "zh", targetType);
         return R.ok(translatedValue);
     }
 
@@ -81,34 +45,9 @@ public class TranslateService {
     @PostMapping("/menuAll")
     @ApiOperation("菜单全量翻译-已翻译的忽略")
     public R<?> translateMenuAll() {
-        translateAllMenu();
+        sysMenuService.translateAllMenu();
         return R.ok();
     }
 
-    @Async
-    protected void translateAllMenu() {
-        List<SysMenu> sysMenus = sysMenuService.list();
-        List<SysMenu> updateMenus = new ArrayList<>();
-        for (SysMenu sysMenu : sysMenus) {
-            String name = sysMenu.getName();
-            String enName = sysMenu.getEnName();
-            if (StrUtil.isEmpty(enName)) {
-                //百度api翻译
-                String translatedValue = translate(name, "zh", "en");
-                sysMenu.setName(translatedValue);
-                updateMenus.add(sysMenu);
-                // 增加1.2秒的延迟
-                try {
-                    Thread.sleep(1800);
-                } catch (InterruptedException e) {
-                    Thread.currentThread().interrupt();
-                    log.error("线程中断异常", e);
-                }
-            }
-        }
-        if (CollUtil.isNotEmpty(updateMenus)) {
-            sysMenuService.updateBatchById(updateMenus);
-        }
-    }
 
 }

+ 51 - 1
authorize-api-service/src/main/java/com/xy/service/impl/SysMenuServiceImpl.java

@@ -1,5 +1,7 @@
 package com.xy.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xy.collections.list.JArrayList;
@@ -15,16 +17,20 @@ import com.xy.mapper.SysSystemMapper;
 import com.xy.redis.RedisCache;
 import com.xy.service.SysMenuService;
 import com.xy.service.SysRoleMenuService;
+import com.xy.third.baidu.TransApi;
 import com.xy.utils.Emptys;
 import com.xy.utils.MybatisPlusQuery;
 import com.xy.utils.R;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -40,6 +46,7 @@ import static com.xy.utils.Beans.tree;
  * @author lijin
  * @since 2022-12-09
  */
+@Slf4j
 @Api(tags = "菜单管理")
 @Service
 @AllArgsConstructor
@@ -53,6 +60,35 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
 
     private SysSystemMapper sysSystemMapper;
 
+    /**
+     * 菜单全量翻译
+     */
+    @Async
+    public void translateAllMenu() {
+        List<SysMenu> sysMenus = this.list();
+        List<SysMenu> updateMenus = new ArrayList<>();
+        for (SysMenu sysMenu : sysMenus) {
+            String name = sysMenu.getName();
+            String enName = sysMenu.getEnName();
+            if (StrUtil.isEmpty(enName)) {
+                //百度api翻译
+                String translatedValue = TransApi.translate(name, "zh", "en");
+                sysMenu.setEnName(translatedValue);
+                updateMenus.add(sysMenu);
+                // 增加1.2秒的延迟
+                try {
+                    Thread.sleep(1800);
+                } catch (InterruptedException e) {
+                    Thread.currentThread().interrupt();
+                    log.error("线程中断异常", e);
+                }
+            }
+        }
+        if (CollUtil.isNotEmpty(updateMenus)) {
+            updateBatchById(updateMenus);
+        }
+    }
+
     @PostMapping("workMenu")
     @ApiOperation("用户菜单树")
     public R<List<SysMenuDto.Vo>> workMenu(@RequestBody @Validated SysMenuDto.WorkMenu workMenu) {
@@ -70,7 +106,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
 
     @PostMapping("workMenuList")
     @ApiOperation("用户菜单集合")
-    public R<List<SysMenuDto.MenuVo>> workMenuList(@RequestBody @Validated SysMenuDto.WorkMenuList workMenu) {
+    public R<List<SysMenuDto.MenuVo>> workMenuList(@RequestHeader(value = "lang", required = false) String lang, @RequestBody @Validated SysMenuDto.WorkMenuList workMenu) {
         List<SysMenuDto.MenuVo> menuVos = new ArrayList<>();
         List<Long> sysIds = workMenu.getSysId();
         List<SysSystem> sysSystems = sysSystemMapper.selectList(new LambdaQueryWrapper<SysSystem>().in(SysSystem::getId, sysIds));
@@ -81,6 +117,16 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
                     ? RedisCache.getMenu(sysId, workMenu.getClientType())
                     : RedisCache.getMenu(sysId);
             menus.forEach(sysMenuJoinSysRoleMenu -> list.add(copy(SysMenuDto.Vo.class, sysMenuJoinSysRoleMenu)));
+            if ("en".equals(lang)) {
+                //英文菜单
+                list.forEach(sm -> {
+                    String enName = sm.getEnName();
+                    if (StrUtil.isNotEmpty(enName)) {
+                        sm.setName(enName);
+                    }
+                });
+
+            }
             SysSystem sysSystem = sysSystemJMap.get(sysId);
             if (sysSystem == null) {
                 continue;
@@ -91,6 +137,10 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
                     .setName(sysSystem.getName())
                     .setIcon(sysSystem.getIcon())
                     .setMenu(list);
+            if ("en".equals(lang) && "xy_merc_mini".equals(sysSystem.getCode())) {
+                //商管端
+                menuVo.setName("Business Management Platform");
+            }
             menuVos.add(menuVo);
         }
         return R.ok(menuVos);

+ 1 - 1
authorize-api-service/src/main/java/com/xy/service/impl/SysWorkUserServiceImpl.java

@@ -419,7 +419,7 @@ public class SysWorkUserServiceImpl extends ServiceImpl<SysWorkUserMapper, SysWo
 
     @Override
     public R<List<SysMenuDto.MenuVo>> getUserMenus(SysMenuDto.WorkMenuList workMenu) {
-        return R.ok(R.feignCheckData(sysMenuService.workMenuList(workMenu)));
+        return R.ok(R.feignCheckData(sysMenuService.workMenuList("", workMenu)));
     }
 
 }

+ 33 - 1
authorize-api-service/src/main/java/com/xy/third/baidu/TransApi.java

@@ -1,14 +1,22 @@
 package com.xy.third.baidu;
 
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import lombok.extern.slf4j.Slf4j;
+
 import java.util.HashMap;
 import java.util.Map;
 
 /**
  * 百度翻译API接口
  */
+
+@Slf4j
 public class TransApi {
     private static final String TRANS_API_HOST = "https://fanyi-api.baidu.com/api/trans/vip/translate";
-
+    private static final String APP_ID = "20240428002037687";
+    private static final String SECURITY_KEY = "nXkFm4SaA2Wrmb42Xmky";
     private String appid;
     private String securityKey;
 
@@ -17,6 +25,29 @@ public class TransApi {
         this.securityKey = securityKey;
     }
 
+    /**
+     * 调用百度翻译API
+     *
+     * @param query  待翻译的文本
+     * @param lanSrc 原语言 zh
+     * @param lanDst 目标语言 en
+     * @return
+     */
+    public static String translate(String query, String lanSrc, String lanDst) {
+        TransApi api = new TransApi(APP_ID, SECURITY_KEY);
+        log.info("正在翻译文本:{}", query);
+        JSONObject res = JSONUtil.parseObj(api.getTransResult(query, lanSrc, lanDst));
+        JSONArray transResult = res.getJSONArray("trans_result");
+        if (!JSONUtil.isNull(transResult)) {
+            JSONObject jsonObject = transResult.getJSONObject(0);
+            log.info("文本:{},翻译结果:{}", query, jsonObject.getStr("dst"));
+            return jsonObject.getStr("dst");
+        } else {
+            log.info("文本:{},翻译失败:{}", query, JSONUtil.toJsonPrettyStr(res));
+            return "";
+        }
+    }
+
     public String getTransResult(String query, String from, String to) {
         Map<String, String> params = buildParams(query, from, to);
         return HttpGet.get(TRANS_API_HOST, params);
@@ -41,4 +72,5 @@ public class TransApi {
         return params;
     }
 
+
 }