Selaa lähdekoodia

Merge remote-tracking branch 'origin/master'

lijin 9 kuukautta sitten
vanhempi
commit
b0d7ce6342

+ 1 - 0
.gitignore

@@ -20,6 +20,7 @@ log/
 *.iws
 *.iml
 *.ipr
+*.log
 
 ### NetBeans ###
 /nbproject/private/

+ 4 - 0
authorize-api-service/src/main/java/com/xy/entity/SysMenu.java

@@ -41,6 +41,10 @@ public class SysMenu extends BaseEntity2<SysMenu> implements Serializable {
      * 名称
      */
     private String name;
+    /**
+     * 英文名称
+     */
+    private String enName;
 
     /**
      * 类型;1=目录 2=菜单 3=数据接口/按钮

+ 53 - 0
authorize-api-service/src/main/java/com/xy/service/TranslateService.java

@@ -0,0 +1,53 @@
+package com.xy.service;
+
+import com.xy.annotate.RestMappingController;
+import com.xy.dto.TranslateDto;
+import com.xy.service.impl.SysMenuServiceImpl;
+import com.xy.translate.baidu.TransApi;
+import com.xy.utils.R;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+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;
+
+/**
+ * 翻译服务
+ */
+@Api(tags = "翻译服务")
+@Slf4j
+@Service
+@RequiredArgsConstructor
+@RestMappingController("/translate")
+public class TranslateService {
+
+
+    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 = TransApi.translate(content, "zh", targetType);
+        return R.ok(translatedValue);
+    }
+
+
+    /**
+     * 全量菜单翻译
+     *
+     * @return
+     */
+    @PostMapping("/menuAll")
+    @ApiOperation("菜单全量翻译-已翻译的忽略")
+    public R<?> translateMenuAll() {
+        sysMenuService.translateAllMenu();
+        return R.ok();
+    }
+
+
+}

+ 54 - 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,21 @@ import com.xy.mapper.SysSystemMapper;
 import com.xy.redis.RedisCache;
 import com.xy.service.SysMenuService;
 import com.xy.service.SysRoleMenuService;
+import com.xy.translate.baidu.TransApi;
+import com.xy.utils.AuthorizeUtils;
 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 +47,7 @@ import static com.xy.utils.Beans.tree;
  * @author lijin
  * @since 2022-12-09
  */
+@Slf4j
 @Api(tags = "菜单管理")
 @Service
 @AllArgsConstructor
@@ -53,6 +61,36 @@ 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);
+                    return;
+                }
+            }
+        }
+        if (CollUtil.isNotEmpty(updateMenus)) {
+            updateBatchById(updateMenus);
+        }
+    }
+
     @PostMapping("workMenu")
     @ApiOperation("用户菜单树")
     public R<List<SysMenuDto.Vo>> workMenu(@RequestBody @Validated SysMenuDto.WorkMenu workMenu) {
@@ -70,9 +108,10 @@ 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();
+        Long loginId = AuthorizeUtils.getLoginId(Long.class);
         List<SysSystem> sysSystems = sysSystemMapper.selectList(new LambdaQueryWrapper<SysSystem>().in(SysSystem::getId, sysIds));
         JMap<Long, SysSystem> sysSystemJMap = new JArrayList<>(sysSystems).toMap(SysSystem::getId).cover();
         for (Long sysId : sysIds) {
@@ -81,6 +120,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 +140,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

@@ -418,7 +418,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)));
     }
 
 }

+ 2 - 0
authorize-api-service/src/main/java/com/xy/third/ThirdLoginServiceImpl.java

@@ -2,6 +2,7 @@ package com.xy.third;
 
 import cn.dev33.satoken.stp.StpUtil;
 import com.xy.dto.ThirdLoginDto;
+import com.xy.redis.RedisCache;
 import com.xy.service.ThirdLoginService;
 import com.xy.utils.R;
 import io.swagger.annotations.Api;
@@ -18,6 +19,7 @@ public class ThirdLoginServiceImpl implements ThirdLoginService {
     @ApiOperation("登录")
     public R<String> login(ThirdLoginDto thirdLoginDto) {
         StpUtil.login(thirdLoginDto.getLoginId());
+        RedisCache.workCache(thirdLoginDto.getLoginId());
         return R.ok(StpUtil.getTokenValue());
     }
 }

+ 28 - 0
authorize-api/src/main/java/com/xy/dto/SysMenuDto.java

@@ -77,6 +77,13 @@ public class SysMenuDto {
         @ApiModelProperty(value = "名称", required = true)
         private String name;
 
+        /**
+         * 英文名称
+         */
+        @ApiModelProperty(value = "英文名称", required = true)
+        private String enName;
+
+
         @NotNull(message = "type不能为空")
         @ApiModelProperty(value = "类型", required = true)
         private Integer type;
@@ -124,6 +131,13 @@ public class SysMenuDto {
         @ApiModelProperty(value = "菜单id", required = true)
         private Long id;
 
+        /**
+         * 英文名称
+         */
+        @ApiModelProperty(value = "英文名称", required = true)
+        private String enName;
+
+
         @ApiModelProperty(value = "名称")
         private String name;
 
@@ -191,6 +205,13 @@ public class SysMenuDto {
         @ApiModelProperty("系统名称")
         private String name;
 
+        /**
+         * 英文名称
+         */
+        @ApiModelProperty(value = "英文名称", required = true)
+        private String enName;
+
+
         @ApiModelProperty("系统图标")
         private String icon;
 
@@ -214,6 +235,13 @@ public class SysMenuDto {
         @ApiModelProperty("名称")
         private String name;
 
+        /**
+         * 英文名称
+         */
+        @ApiModelProperty(value = "英文名称", required = true)
+        private String enName;
+
+
         @ApiModelProperty("类型")
         private Integer type;
 

+ 27 - 0
authorize-api/src/main/java/com/xy/dto/TranslateDto.java

@@ -0,0 +1,27 @@
+package com.xy.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+@ApiModel("翻译DTO")
+@Accessors(chain = true)
+public class TranslateDto {
+
+    @Data
+    @Accessors(chain = true)
+    public static class One {
+        @NotBlank(message = "待翻译字符串不能为空")
+        @ApiModelProperty(value = "待翻译字符串")
+        private String content;
+
+        @NotBlank(message = "目标语言类型不能为空")
+        @ApiModelProperty(value = "目标语言类型:(en-英语,kor-韩语,th-泰语..")
+        private String targetType;
+    }
+
+}

+ 8 - 0
authorize-sdk/src/main/java/com/xy/entity/SysMenuJoinSysRoleMenu.java

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
 import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
@@ -48,6 +49,13 @@ public class SysMenuJoinSysRoleMenu implements Serializable {
      */
     private String name;
 
+    /**
+     * 英文名称
+     */
+    @ApiModelProperty(value = "英文名称", required = true)
+    private String enName;
+
+
     /**
      * 类型
      */