tanbin 7 hónapja
szülő
commit
dfe12d4db2

+ 4 - 0
sys-api-service/src/main/java/com/xy/entity/SysDict.java

@@ -47,6 +47,10 @@ public class SysDict extends BaseEntity3<SysDict> {
      * 编码说明
      */
     private String msg;
+    /**
+     * 编码说明(英文)
+     */
+    private String enMsg;
 
     /**
      * 状态

+ 37 - 0
sys-api-service/src/main/java/com/xy/service/SysDictServiceImpl.java

@@ -1,5 +1,7 @@
 package com.xy.service;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
@@ -11,17 +13,20 @@ import com.xy.dto.SysDictDto;
 import com.xy.entity.SysDict;
 import com.xy.entity.SysDictRedis;
 import com.xy.mapper.SysDictMapper;
+import com.xy.translate.baidu.TransApi;
 import com.xy.utils.*;
 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.transaction.annotation.Transactional;
 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;
 
 import static com.xy.utils.Beans.copy;
@@ -44,6 +49,38 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
 
     private RedisService<SysDictRedis> redisService;
 
+    /**
+     * 全量翻译
+     */
+    @Async
+    public void translateAllDict() {
+        List<SysDict> SysDicts = this.list();
+        List<SysDict> updateList = new ArrayList<>();
+        for (SysDict sysDict : SysDicts) {
+            String name = sysDict.getMsg();
+            String enName = sysDict.getEnMsg();
+            if (StrUtil.isEmpty(enName)) {
+                //百度api翻译
+                String translatedValue = TransApi.translate(name, "zh", "en");
+                sysDict.setEnMsg(translatedValue);
+                updateList.add(sysDict);
+                // 增加1.2秒的延迟
+                try {
+                    Thread.sleep(1800);
+                } catch (InterruptedException e) {
+                    Thread.currentThread().interrupt();
+                    log.error("线程中断异常", e);
+                    return;
+                }
+            }
+        }
+        if (CollUtil.isNotEmpty(updateList)) {
+            updateBatchById(updateList);
+            //刷新redis
+            updateList.forEach(sysDict -> refuRedis(sysDict));
+        }
+    }
+
     @ApiOperation("添加")
     @PostMapping("save")
     public R save(@RequestBody @Validated SysDictDto.Save save) {

+ 51 - 0
sys-api-service/src/main/java/com/xy/service/SysDictTranslateService.java

@@ -0,0 +1,51 @@
+package com.xy.service;
+
+import com.xy.annotate.RestMappingController;
+import com.xy.dto.TranslateDto;
+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_dict")
+public class SysDictTranslateService {
+
+    private final SysDictServiceImpl sysDictService;
+
+    @PostMapping("/one")
+    @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("/all")
+    @ApiOperation("全量翻译-已翻译的忽略")
+    public R<?> translateMenuAll() {
+        sysDictService.translateAllDict();
+        return R.ok();
+    }
+
+
+}

+ 6 - 0
sys-api/src/main/java/com/xy/dto/SysDictDto.java

@@ -40,6 +40,9 @@ public class SysDictDto {
         @ApiModelProperty("编码说明")
         private String msg;
 
+        @ApiModelProperty("编码说明(英文)")
+        private String enMsg;
+
         @ApiModelProperty("排序 正序")
         private Integer orders;
 
@@ -172,6 +175,9 @@ public class SysDictDto {
         @ApiModelProperty("编码说明")
         private String msg;
 
+        @ApiModelProperty("编码说明(英文)")
+        private String enMsg;
+
         @ApiModelProperty("状态")
         private Boolean status;