|
@@ -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,21 @@ 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 org.springframework.web.bind.annotation.RequestHeader;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
|
|
|
import static com.xy.utils.Beans.copy;
|
|
@@ -44,6 +50,47 @@ 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));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 全量刷新redis字典数据
|
|
|
+ */
|
|
|
+ @Async
|
|
|
+ public void refreshAll() {
|
|
|
+ List<SysDict> SysDicts = this.list();
|
|
|
+ SysDicts.forEach(sysDict -> refuRedis(sysDict));
|
|
|
+ }
|
|
|
+
|
|
|
@ApiOperation("添加")
|
|
|
@PostMapping("save")
|
|
|
public R save(@RequestBody @Validated SysDictDto.Save save) {
|
|
@@ -128,7 +175,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
|
|
|
|
|
|
@ApiOperation("集合查询")
|
|
|
@PostMapping("list")
|
|
|
- public R<List<SysDictDto.Vo>> list(@RequestBody SysDictDto.SelectList selectList) {
|
|
|
+ public R<List<SysDictDto.Vo>> list(@RequestHeader(value = "lang", required = false) String lang, @RequestBody SysDictDto.SelectList selectList) {
|
|
|
LambdaQueryWrapper<SysDict> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(selectList, SysDict.class)
|
|
|
.in(SysDict::getId, selectList.getIds())
|
|
|
.in(SysDict::getCode, selectList.getCodes())
|
|
@@ -138,13 +185,24 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
|
|
|
.build()
|
|
|
.orderByAsc(SysDict::getOrders);
|
|
|
List<SysDict> list = list(lambdaQueryWrapper);
|
|
|
- return R.ok(copy(SysDictDto.Vo.class, list));
|
|
|
+ List<SysDictDto.Vo> voList = copy(SysDictDto.Vo.class, list);
|
|
|
+ if ("en".equals(lang)) {
|
|
|
+ //英文菜单
|
|
|
+ voList.forEach(v -> {
|
|
|
+ String enName = v.getEnMsg();
|
|
|
+ if (StrUtil.isNotEmpty(enName)) {
|
|
|
+ v.setMsg(enName);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ }
|
|
|
+ return R.ok(voList);
|
|
|
}
|
|
|
|
|
|
@ApiOperation("集合查询(无需授权)")
|
|
|
@PostMapping("list2")
|
|
|
- public R<List<SysDictDto.Vo>> list2(@RequestBody SysDictDto.SelectList selectList) {
|
|
|
- return list(selectList);
|
|
|
+ public R<List<SysDictDto.Vo>> list2(@RequestHeader(value = "lang", required = false) String lang, @RequestBody SysDictDto.SelectList selectList) {
|
|
|
+ return list(lang, selectList);
|
|
|
}
|
|
|
|
|
|
/**
|