diff --git a/xjs-business/xjs-business-common/src/main/java/com/xjs/entity/BaseEntity.java b/xjs-business/xjs-business-common/src/main/java/com/xjs/entity/BaseEntity.java index 592d101c..db5ad493 100644 --- a/xjs-business/xjs-business-common/src/main/java/com/xjs/entity/BaseEntity.java +++ b/xjs-business/xjs-business-common/src/main/java/com/xjs/entity/BaseEntity.java @@ -15,6 +15,8 @@ import java.util.Date; @Data public class BaseEntity { + private static final long serialVersionUID = 1L; + /** * 通用查询条件 */ diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/article/controller/EnglishArticleController.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/article/controller/EnglishArticleController.java new file mode 100644 index 00000000..a56dbe86 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/article/controller/EnglishArticleController.java @@ -0,0 +1,96 @@ +package com.xjs.article.controller; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.log.annotation.Log; +import com.ruoyi.common.log.enums.BusinessType; +import com.ruoyi.common.security.annotation.RequiresPermissions; +import com.xjs.article.domain.EnglishArticle; +import com.xjs.article.service.impl.EnglishArticleServiceImpl; +import com.xjs.web.MyBaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * 英语文章Controller + * + * @author xiejs + * @since 2022-03-03 + */ +@RestController +@RequestMapping("/article") +@Api(tags = "业务模块-英语文章管理") +public class EnglishArticleController extends MyBaseController { + + @Autowired + private EnglishArticleServiceImpl englishArticleService; + + /** + * 查询英语文章列表 + */ + @RequiresPermissions("english:article:list") + @GetMapping("/list") + @ApiOperation("查询英语文章列表") + public AjaxResult list(EnglishArticle englishArticle) { + IPage page = englishArticleService.selectEnglishArticleList(startPageMP(), englishArticle); + return AjaxResult.success(page); + } + + @GetMapping("/test") + public AjaxResult test(EnglishArticle englishArticle) { + + EnglishArticle translation = englishArticleService.translation(englishArticle); + return AjaxResult.success(translation); + + } + + + + //--------------------------代码生成------------------------------------ + + /** + * 获取英语文章详细信息 + */ + @RequiresPermissions("english:article:query") + @GetMapping(value = "/{id}") + @ApiOperation("获取英语文章详细信息") + public AjaxResult getInfo(@PathVariable("id") Long id) { + return AjaxResult.success(englishArticleService.selectEnglishArticleById(id)); + } + + /** + * 新增英语文章 + */ + @RequiresPermissions("english:article:add") + @Log(title = "英语文章", businessType = BusinessType.INSERT) + @PostMapping + @ApiOperation("新增英语文章") + public AjaxResult add(@RequestBody EnglishArticle englishArticle) { + return toAjax(englishArticleService.insertEnglishArticle(englishArticle)); + } + + /** + * 修改英语文章 + */ + @RequiresPermissions("english:article:edit") + @Log(title = "英语文章", businessType = BusinessType.UPDATE) + @PutMapping + @ApiOperation("修改英语文章") + public AjaxResult edit(@RequestBody EnglishArticle englishArticle) { + return toAjax(englishArticleService.updateEnglishArticle(englishArticle)); + } + + /** + * 删除英语文章 + */ + @RequiresPermissions("english:article:remove") + @Log(title = "英语文章", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + @ApiOperation("删除英语文章") + public AjaxResult remove(@PathVariable Long[] ids) { + return toAjax(englishArticleService.deleteEnglishArticleByIds(ids)); + } + +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/article/domain/EnglishArticle.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/article/domain/EnglishArticle.java new file mode 100644 index 00000000..80687d3e --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/article/domain/EnglishArticle.java @@ -0,0 +1,58 @@ +package com.xjs.article.domain; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.ruoyi.common.core.annotation.Excel; +import com.xjs.entity.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.Date; + +/** + * 英语文章实体类 + * @author xiejs + * @since 2022-03-03 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +public class EnglishArticle extends BaseEntity { + + /** 主键ID */ + private Long id; + + /** 文章标题 */ + @Excel(name = "文章标题-英文") + private String titleEnglish; + + /** 文章标题-中文 */ + @Excel(name = "文章标题-中文") + private String titleChinese; + + /** 文章内容 */ + @Excel(name = "文章内容-英文") + private String contentEnglish; + + /** 文章内容-中文 */ + @Excel(name = "文章内容-中文") + private String contentChinese; + + /** 文章图片地址 */ + @Excel(name = "文章图片地址") + private String pictureUrl; + + /** 创建用户 */ + @Excel(name = "创建用户") + private String createUser; + + @Excel(name = "创建时间" ,dateFormat = "yyyy-MM-dd HH:mm:ss") + @TableField(fill = FieldFill.INSERT) + private Date createTime; + + @Excel(name = "修改时间" ,dateFormat = "yyyy-MM-dd HH:mm:ss") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date updateTime; + +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/article/mapper/EnglishArticleMapper.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/article/mapper/EnglishArticleMapper.java new file mode 100644 index 00000000..b33ad586 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/article/mapper/EnglishArticleMapper.java @@ -0,0 +1,13 @@ +package com.xjs.article.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.xjs.article.domain.EnglishArticle; + +/** + * 英语文章Mapper接口 + * @author xiejs + * @since 2022-03-03 + */ +public interface EnglishArticleMapper extends BaseMapper { + +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/article/service/EnglishArticleService.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/article/service/EnglishArticleService.java new file mode 100644 index 00000000..922f4ac9 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/article/service/EnglishArticleService.java @@ -0,0 +1,65 @@ +package com.xjs.article.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.xjs.article.domain.EnglishArticle; + +/** + * 英语文章service接口 + * + * @author xiejs + * @since 2022-03-03 + */ +public interface EnglishArticleService extends IService { + + /** + * 查询英语文章 + * + * @param id 英语文章主键 + * @return 英语文章 + */ + EnglishArticle selectEnglishArticleById(Long id); + + /** + * 查询英语文章列表 + * + * @param englishArticle 英语文章 + * @param page 分页参数 + * @return 英语文章集合 + */ + IPage selectEnglishArticleList(Page page, EnglishArticle englishArticle); + + /** + * 新增英语文章 + * + * @param englishArticle 英语文章 + * @return 结果 + */ + boolean insertEnglishArticle(EnglishArticle englishArticle); + + /** + * 修改英语文章 + * + * @param englishArticle 英语文章 + * @return 结果 + */ + boolean updateEnglishArticle(EnglishArticle englishArticle); + + /** + * 批量删除英语文章 + * + * @param ids 需要删除的英语文章主键集合 + * @return 结果 + */ + boolean deleteEnglishArticleByIds(Long[] ids); + + /** + * 删除英语文章信息 + * + * @param id 英语文章主键 + * @return 结果 + */ + boolean deleteEnglishArticleById(Long id); + +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/article/service/impl/EnglishArticleServiceImpl.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/article/service/impl/EnglishArticleServiceImpl.java new file mode 100644 index 00000000..72ac0584 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/article/service/impl/EnglishArticleServiceImpl.java @@ -0,0 +1,126 @@ +package com.xjs.article.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.constant.HttpStatus; +import com.ruoyi.common.core.domain.R; +import com.xjs.article.domain.EnglishArticle; +import com.xjs.article.mapper.EnglishArticleMapper; +import com.xjs.article.service.EnglishArticleService; +import com.xjs.business.api.RemoteTranslationFeign; +import com.xjs.business.api.domain.TranslationVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Vector; + +/** + * 英语文章service接口实现 + * + * @author xiejs + * @since 2022-03-03 + */ +@Service +public class EnglishArticleServiceImpl extends ServiceImpl implements EnglishArticleService { + + + @Autowired + private RemoteTranslationFeign remoteTranslationFeign; + + + @Override + public EnglishArticle selectEnglishArticleById(Long id) { + return super.getById(id); + } + + @Override + public IPage selectEnglishArticleList(Page page, EnglishArticle englishArticle) { + //封装查询条件 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + // todo 封装查询条件 + + return super.page(page, wrapper); + } + + @Override + public boolean insertEnglishArticle(EnglishArticle englishArticle) { + //封装添加参数 远程调用翻译 + englishArticle = this.translation(englishArticle); + + return super.save(englishArticle); + } + + + @Override + public boolean updateEnglishArticle(EnglishArticle englishArticle) { + return super.updateById(englishArticle); + } + + @Override + public boolean deleteEnglishArticleByIds(Long[] ids) { + return super.removeByIds(Arrays.asList(ids)); + } + + @Override + public boolean deleteEnglishArticleById(Long id) { + return super.removeById(id); + } + + + /** + * 翻译中文内容 + * + * @param englishArticle 文章实体类 + * @return 文章实体类 + */ + public EnglishArticle translation(EnglishArticle englishArticle) { + // 使用线程安全的Vector + Vector threads = new Vector(); + + Thread thread1 = new Thread(() -> { + R titleR = remoteTranslationFeign.translation(englishArticle.getTitleChinese()); + if (titleR.getCode() == HttpStatus.SUCCESS) { + List> transResult = titleR.getData().getTransResult(); + StringBuilder sbEnglish = new StringBuilder(); + for (Map map : transResult) { + sbEnglish.append(map.get("dst")); + } + englishArticle.setTitleEnglish(sbEnglish.toString()); + } + }); + threads.add(thread1); + thread1.start(); + + Thread thread2 = new Thread(() -> { + R titleR = remoteTranslationFeign.translation(englishArticle.getContentChinese()); + if (titleR.getCode() == HttpStatus.SUCCESS) { + List> transResult = titleR.getData().getTransResult(); + StringBuilder sbEnglish = new StringBuilder(); + for (Map map : transResult) { + sbEnglish.append(map.get("dst")); + } + englishArticle.setContentEnglish(sbEnglish.toString()); + } + }); + threads.add(thread2); + thread2.start(); + + for (Thread thread : threads) { + // 等待所有线程执行完毕 + try { + thread.join(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + return englishArticle; + } + + +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/word/controller/EnglishWordController.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/word/controller/EnglishWordController.java index 73cf3be9..f7a2614f 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/word/controller/EnglishWordController.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/word/controller/EnglishWordController.java @@ -29,7 +29,7 @@ import java.util.List; */ @RestController @RequestMapping("/word") -@Api(tags = "业务模块-英语管理") +@Api(tags = "业务模块-英语单词管理") public class EnglishWordController extends MyBaseController { @Autowired private IEnglishWordService englishWordService; diff --git a/xjs-business/xjs-business-english/src/main/resources/mapper/english/EnglishArticleMapper.xml b/xjs-business/xjs-business-english/src/main/resources/mapper/english/EnglishArticleMapper.xml new file mode 100644 index 00000000..7944b073 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/resources/mapper/english/EnglishArticleMapper.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/translation/controller/TranslationController.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/translation/controller/TranslationController.java index f883a292..143a13d9 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/translation/controller/TranslationController.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/translation/controller/TranslationController.java @@ -83,8 +83,8 @@ public class TranslationController { ArrayList factories = new ArrayList<>(); //添加了新接口只需要在这add接口进去 factories.add(youDaoTranslationFactory); - factories.add(baiDuTranslationFactory); - factories.add(rollTranslationFactory); + //factories.add(baiDuTranslationFactory); + //factories.add(rollTranslationFactory); //--------add----------------------------;- //随机调用集合中的接口 return RandomUtil.randomEle(factories); diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/translation/domain/vo/translation/TranslationVo.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/translation/domain/vo/translation/TranslationVo.java index 513f4779..b534be7e 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/translation/domain/vo/translation/TranslationVo.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/translation/domain/vo/translation/TranslationVo.java @@ -7,9 +7,10 @@ import java.util.List; import java.util.Map; /** + * 翻译实体类VO + * * @author xiejs - * @desc 翻译实体类VO - * @create 2021-12-25 + * @since 2021-12-25 */ @Data public class TranslationVo implements Serializable { diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/weather/service/impl/IPServiceImpl.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/weather/service/impl/IPServiceImpl.java index c4af2dbc..3ea7b590 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/weather/service/impl/IPServiceImpl.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/weather/service/impl/IPServiceImpl.java @@ -29,7 +29,7 @@ public class IPServiceImpl implements IPService { private RedisService redisService; @Override - public IPInfoVo getIPApiData() { + public synchronized IPInfoVo getIPApiData() { if (redisService.hasKey(IP_INFO)) { return (IPInfoVo) redisService.getCacheObject(IP_INFO); } else {