From 6ba131ac9ae934359b219629950ec3879414a0c7 Mon Sep 17 00:00:00 2001 From: lrh <1585126058@qq.com> Date: Thu, 1 Jun 2023 15:14:36 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=AD=E8=A8=80=E4=B8=8B=E6=8B=89=E6=A1=86?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/JsonImportController.java | 96 +++++++++++++++ .../controller/VoiceMouldController.java | 30 ++++- .../iformall/domain/po/json/JsonRootBean.java | 114 ++++++++++++++++++ .../com/iformall/domain/po/sm/VoiceInfo.java | 75 ++++++++++++ .../iformall/domain/po/sm/VoiceLanguage.java | 75 ++++++++++++ .../iformall/mapper/VoiceLanguageMapper.java | 13 ++ .../java/com/iformall/mapper/VoiceMapper.java | 13 ++ .../iformall/service/sm/VoiceInfoService.java | 13 ++ .../service/sm/VoiceLanguageService.java | 12 ++ .../service/sm/impl/VoiceInfoServiceImpl.java | 32 +++++ .../sm/impl/VoiceLanguageServiceImpl.java | 26 ++++ .../resources/mapper/VoiceLanguageMapper.xml | 20 +++ .../src/main/resources/mapper/VoiceMapper.xml | 28 +++++ 13 files changed, 543 insertions(+), 4 deletions(-) create mode 100644 suimangCApi/src/main/java/com/iformall/controller/JsonImportController.java create mode 100644 suimangService/src/main/java/com/iformall/domain/po/json/JsonRootBean.java create mode 100644 suimangService/src/main/java/com/iformall/domain/po/sm/VoiceInfo.java create mode 100644 suimangService/src/main/java/com/iformall/domain/po/sm/VoiceLanguage.java create mode 100644 suimangService/src/main/java/com/iformall/mapper/VoiceLanguageMapper.java create mode 100644 suimangService/src/main/java/com/iformall/mapper/VoiceMapper.java create mode 100644 suimangService/src/main/java/com/iformall/service/sm/VoiceInfoService.java create mode 100644 suimangService/src/main/java/com/iformall/service/sm/VoiceLanguageService.java create mode 100644 suimangService/src/main/java/com/iformall/service/sm/impl/VoiceInfoServiceImpl.java create mode 100644 suimangService/src/main/java/com/iformall/service/sm/impl/VoiceLanguageServiceImpl.java create mode 100644 suimangService/src/main/resources/mapper/VoiceLanguageMapper.xml create mode 100644 suimangService/src/main/resources/mapper/VoiceMapper.xml diff --git a/suimangCApi/src/main/java/com/iformall/controller/JsonImportController.java b/suimangCApi/src/main/java/com/iformall/controller/JsonImportController.java new file mode 100644 index 0000000..d6cef7a --- /dev/null +++ b/suimangCApi/src/main/java/com/iformall/controller/JsonImportController.java @@ -0,0 +1,96 @@ +package com.iformall.controller; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.iformall.common.ResultData; +import com.iformall.domain.po.json.JsonRootBean; +import com.iformall.domain.po.sm.VoiceInfo; +import com.iformall.domain.po.sm.VoiceLanguage; +import com.iformall.domain.po.sm.VoiceMould; +import com.iformall.enums.EnumSex; +import com.iformall.mapper.VoiceLanguageMapper; +import com.iformall.mapper.VoiceMapper; +import com.iformall.mapper.VoiceMouldMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.*; + +import java.util.*; + +@RestController +@RequestMapping("/import") +public class JsonImportController { + + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private VoiceLanguageMapper voiceLanguageMapper; + + @Autowired + private VoiceMouldMapper voiceMouldMapper; + + @Autowired + private VoiceMapper voiceMapper; + + @Transactional(rollbackFor = Exception.class) + @PostMapping("/json") + public ResultData importMethod(@RequestBody List list) { + String str = "https://suimang.oss-accelerate.aliyuncs.com/builtin/country/"; + HashSet set = new HashSet<>(); + for (JsonRootBean bean : list) { + VoiceLanguage language = new VoiceLanguage(); + String[] split = bean.getLocale().split("-"); + language.setCountry(split[0]); + language.setLanguage(split[1]); + language.setImg(str + split[0] + ".png"); + language.setLocal(bean.getLocale()); + language.setName(bean.getLocaleName()); + language.setIsDel(0); + set.add(language); + } + voiceLanguageMapper.saveBatch(set); + + List list1 = new ArrayList<>(); + for (JsonRootBean bean : list) { + Date date = new Date(); + VoiceInfo voiceInfo = new VoiceInfo(); + voiceInfo.setIsDel(0); + VoiceMould voiceMould = voiceMouldMapper.selectOne(new QueryWrapper().lambda().eq(VoiceMould::getMouldSmId, bean.getShortName()).eq(VoiceMould::getParentId, 0).select(VoiceMould::getId)); + if (!ObjectUtils.isEmpty(voiceMould)) { + voiceInfo.setId(voiceMould.getId()); + } + VoiceLanguage voiceLanguage = voiceLanguageMapper.selectOne(new QueryWrapper().lambda().eq(VoiceLanguage::getLocal, bean.getLocale())); + if (!ObjectUtils.isEmpty(voiceLanguage)) { + voiceInfo.setLanguageId(voiceLanguage.getId()); + }else { + System.out.println(bean.getName()); + } + String gender = bean.getGender(); + if (gender.equals("Male")) { + voiceInfo.setSex(EnumSex.MALE.getCode()); + } else if (gender.equals("Female")) { + voiceInfo.setSex(EnumSex.FEMALE.getCode()); + } else { + voiceInfo.setSex(EnumSex.UNKNOWN.getCode()); + } + voiceInfo.setDisplayName(bean.getDisplayName()); + voiceInfo.setLocalName(bean.getLocalName()); + voiceInfo.setMouldSmId(bean.getShortName()); + voiceInfo.setSampleRateHertz(bean.getSampleRateHertz()); + voiceInfo.setWordsPerMinute(bean.getWordsPerMinute()); + voiceInfo.setVoiceType(bean.getVoiceType()); + if (!StringUtils.isEmpty(bean.getStyleList())) { + voiceInfo.setStyleList(JSON.toJSONString(bean.getStyleList())); + } + voiceInfo.setCreateDate(date); + voiceInfo.setUpdateDate(date); + list1.add(voiceInfo); + } + voiceMapper.saveBatch(list1); + return new ResultData("导入完成"); + } +} diff --git a/suimangCApi/src/main/java/com/iformall/controller/VoiceMouldController.java b/suimangCApi/src/main/java/com/iformall/controller/VoiceMouldController.java index a67a701..d5189d5 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/VoiceMouldController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/VoiceMouldController.java @@ -11,15 +11,14 @@ import com.iformall.domain.po.sm.UserMouldVideo; import com.iformall.domain.po.sm.VoiceMould; import com.iformall.enums.*; import com.iformall.language.LanguageDetect; -import com.iformall.service.sm.MouldPatchService; -import com.iformall.service.sm.MouldPatchSignService; -import com.iformall.service.sm.PersonMouldService; -import com.iformall.service.sm.VoiceMouldService; +import com.iformall.mapper.VoiceLanguageMapper; +import com.iformall.service.sm.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; +import org.checkerframework.checker.units.qual.A; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -44,6 +43,12 @@ public class VoiceMouldController extends BaseController { @Autowired private MouldPatchSignService mouldPatchSignService; + @Autowired + private VoiceInfoService voiceInfoService; + + @Autowired + private VoiceLanguageService voiceLanguageService; + @AuthIgnore @ApiOperation("获取语种") @GetMapping("getLanguages") @@ -131,4 +136,21 @@ public class VoiceMouldController extends BaseController { return new ResultData(page); } + @AuthIgnore + @ApiOperation("语言选择下拉框") + @GetMapping("/voiceTotal") + @ApiImplicitParams({}) + public ResultData voiceTotal() { + logger.debug("[" + getIpAddr() + "] MouldPatchController::voiceTotal"); + return new ResultData(voiceLanguageService.voiceTotal()); + } + + @AuthIgnore + @ApiOperation("选择声音选择风格") + @GetMapping("/chooseType") + @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) + public ResultData chooseType(Long id) { + logger.debug("[" + getIpAddr() + "] MouldPatchController::chooseType"); + return new ResultData(voiceInfoService.chooseType(id)); + } } diff --git a/suimangService/src/main/java/com/iformall/domain/po/json/JsonRootBean.java b/suimangService/src/main/java/com/iformall/domain/po/json/JsonRootBean.java new file mode 100644 index 0000000..bfac32f --- /dev/null +++ b/suimangService/src/main/java/com/iformall/domain/po/json/JsonRootBean.java @@ -0,0 +1,114 @@ +package com.iformall.domain.po.json; + +import java.util.List; + +public class JsonRootBean { + private String name; + private String displayName; + private String localName; + private String shortName; + private String gender; + private String locale; + private String localeName; + private String sampleRateHertz; + private String voiceType; + private String status; + private String wordsPerMinute; + private List styleList; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDisplayName() { + return displayName; + } + + public void setDisplayName(String displayName) { + this.displayName = displayName; + } + + public String getLocalName() { + return localName; + } + + public void setLocalName(String localName) { + this.localName = localName; + } + + public String getShortName() { + return shortName; + } + + public void setShortName(String shortName) { + this.shortName = shortName; + } + + public String getGender() { + return gender; + } + + public void setGender(String gender) { + this.gender = gender; + } + + public String getLocale() { + return locale; + } + + public void setLocale(String locale) { + this.locale = locale; + } + + public String getLocaleName() { + return localeName; + } + + public void setLocaleName(String localeName) { + this.localeName = localeName; + } + + public String getSampleRateHertz() { + return sampleRateHertz; + } + + public void setSampleRateHertz(String sampleRateHertz) { + this.sampleRateHertz = sampleRateHertz; + } + + public String getVoiceType() { + return voiceType; + } + + public void setVoiceType(String voiceType) { + this.voiceType = voiceType; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getWordsPerMinute() { + return wordsPerMinute; + } + + public void setWordsPerMinute(String wordsPerMinute) { + this.wordsPerMinute = wordsPerMinute; + } + + public List getStyleList() { + return styleList; + } + + public void setStyleList(List styleList) { + this.styleList = styleList; + } +} \ No newline at end of file diff --git a/suimangService/src/main/java/com/iformall/domain/po/sm/VoiceInfo.java b/suimangService/src/main/java/com/iformall/domain/po/sm/VoiceInfo.java new file mode 100644 index 0000000..06a3f8d --- /dev/null +++ b/suimangService/src/main/java/com/iformall/domain/po/sm/VoiceInfo.java @@ -0,0 +1,75 @@ +package com.iformall.domain.po.sm; + + +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** +* 声音表 +*/ +@Data +public class VoiceInfo { + /** + * 主键ID + */ + private Long id; + /** + * 语种表id(voice_language.id) + */ + private Long languageId; + /** + * 租户ID + */ + private String tenantId; + /** + * 父租户ID + */ + private String parentTenantId; + /** + * 性别 + */ + private Integer sex; + /** + * + */ + private String displayName; + /** + * + */ + private String localName; + /** + * + */ + private String mouldSmId; + /** + * + */ + private String sampleRateHertz; + /** + * + */ + private String wordsPerMinute; + /** + * + */ + private String voiceType; + /** + * 说话类型json + */ + private String styleList; + private List style; + /** + * 创建时间 + */ + private Date createDate; + /** + * 更新时间 + */ + private Date updateDate; + /** + * 是否删除1是0否 + */ + private Integer isDel; +} diff --git a/suimangService/src/main/java/com/iformall/domain/po/sm/VoiceLanguage.java b/suimangService/src/main/java/com/iformall/domain/po/sm/VoiceLanguage.java new file mode 100644 index 0000000..ca5ef2d --- /dev/null +++ b/suimangService/src/main/java/com/iformall/domain/po/sm/VoiceLanguage.java @@ -0,0 +1,75 @@ +package com.iformall.domain.po.sm; + + +import lombok.Data; + +import java.util.Date; +import java.util.Objects; + +/** + * 语种表 + */ +@Data +public class VoiceLanguage implements Comparable { + + /** + * 主键ID + */ + private Long id; + /** + * 租户ID + */ + private String tenantId; + /** + * 父租户ID + */ + private String parentTenantId; + /** + * 国家code + */ + private String country; + /** + * 语言code + */ + private String language; + /** + * + */ + private String local; + /** + * + */ + private String name; + /** + * 图片 + */ + private String img; + /** + * 创建时间 + */ + private Date createDate; + /** + * 更新时间 + */ + private Date updateDate; + /** + * 是否删除1是0否 + */ + private Integer isDel; + + @Override + public int compareTo(Object obj) { + // 判断是否是学生类型 + if (obj instanceof VoiceLanguage) { + VoiceLanguage s = (VoiceLanguage) obj; + // 如果是学生类型,如果学号相等,则不加入Set + if (Objects.equals(s.getLanguage(), this.getLanguage()) && Objects.equals(s.getCountry(), this.getCountry())) { + return 0; + } else { + return 1; + } + } else { + return 0; + } + } +} diff --git a/suimangService/src/main/java/com/iformall/mapper/VoiceLanguageMapper.java b/suimangService/src/main/java/com/iformall/mapper/VoiceLanguageMapper.java new file mode 100644 index 0000000..b8777a8 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/mapper/VoiceLanguageMapper.java @@ -0,0 +1,13 @@ +package com.iformall.mapper; + + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.sm.VoiceLanguage; +import org.apache.ibatis.annotations.Param; + +import java.util.HashSet; + +public interface VoiceLanguageMapper extends CommonMapper { + void saveBatch(@Param("set") HashSet set); +} + diff --git a/suimangService/src/main/java/com/iformall/mapper/VoiceMapper.java b/suimangService/src/main/java/com/iformall/mapper/VoiceMapper.java new file mode 100644 index 0000000..2f8f395 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/mapper/VoiceMapper.java @@ -0,0 +1,13 @@ +package com.iformall.mapper; + + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.sm.VoiceInfo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface VoiceMapper extends CommonMapper { + void saveBatch(@Param("list") List list); +} + diff --git a/suimangService/src/main/java/com/iformall/service/sm/VoiceInfoService.java b/suimangService/src/main/java/com/iformall/service/sm/VoiceInfoService.java new file mode 100644 index 0000000..e24967e --- /dev/null +++ b/suimangService/src/main/java/com/iformall/service/sm/VoiceInfoService.java @@ -0,0 +1,13 @@ +package com.iformall.service.sm; + + +import com.iformall.common.ErrorCode; +import com.iformall.domain.po.sm.VoiceInfo; +import com.iformall.domain.po.sm.VoiceLanguage; + +import java.util.List; + +public interface VoiceInfoService { + + List chooseType(Long id); +} diff --git a/suimangService/src/main/java/com/iformall/service/sm/VoiceLanguageService.java b/suimangService/src/main/java/com/iformall/service/sm/VoiceLanguageService.java new file mode 100644 index 0000000..d16cfb8 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/service/sm/VoiceLanguageService.java @@ -0,0 +1,12 @@ +package com.iformall.service.sm; + + +import com.iformall.domain.po.sm.VoiceLanguage; + +import java.util.List; + +public interface VoiceLanguageService { + + List voiceTotal(); + +} diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/VoiceInfoServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/VoiceInfoServiceImpl.java new file mode 100644 index 0000000..eba303e --- /dev/null +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/VoiceInfoServiceImpl.java @@ -0,0 +1,32 @@ +package com.iformall.service.sm.impl; + + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.iformall.domain.po.sm.VoiceInfo; +import com.iformall.mapper.VoiceMapper; +import com.iformall.service.sm.VoiceInfoService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class VoiceInfoServiceImpl implements VoiceInfoService { + + @Autowired + private VoiceMapper voiceMapper; + + @Override + public List chooseType(Long id) { + List voiceInfos = voiceMapper.selectList(new LambdaQueryWrapper().eq(VoiceInfo::getLanguageId, id).select(VoiceInfo::getId, VoiceInfo::getDisplayName, VoiceInfo::getStyleList)); + voiceInfos.forEach(x -> { + if (StringUtils.isNotEmpty(x.getStyleList())) { + List strings = JSON.parseArray(x.getStyleList(), String.class); + x.setStyle(strings); + } + }); + return voiceInfos; + } +} diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/VoiceLanguageServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/VoiceLanguageServiceImpl.java new file mode 100644 index 0000000..9d618db --- /dev/null +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/VoiceLanguageServiceImpl.java @@ -0,0 +1,26 @@ +package com.iformall.service.sm.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.google.common.collect.Lists; +import com.iformall.domain.po.sm.VoiceLanguage; +import com.iformall.mapper.VoiceLanguageMapper; +import com.iformall.service.sm.VoiceLanguageService; +import org.apache.commons.collections.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class VoiceLanguageServiceImpl implements VoiceLanguageService { + + @Autowired + private VoiceLanguageMapper voiceLanguageMapper; + + @Override + public List voiceTotal() { + List languages = voiceLanguageMapper.selectList(new LambdaQueryWrapper().eq(VoiceLanguage::getIsDel, 0).select(VoiceLanguage::getId, VoiceLanguage::getName)); + return CollectionUtils.isEmpty(languages) ? Lists.newArrayList() : languages; + } +} diff --git a/suimangService/src/main/resources/mapper/VoiceLanguageMapper.xml b/suimangService/src/main/resources/mapper/VoiceLanguageMapper.xml new file mode 100644 index 0000000..e9dfaf0 --- /dev/null +++ b/suimangService/src/main/resources/mapper/VoiceLanguageMapper.xml @@ -0,0 +1,20 @@ + + + + + INSERT INTO voice_language (`id`, `country`, + `language`, `local`, `name`, `img`, `is_del`) + VALUES + + ( + #{item.id}, + #{item.country}, + #{item.language}, + #{item.local}, + #{item.name}, + #{item.img}, + #{item.isDel} + ) + + + diff --git a/suimangService/src/main/resources/mapper/VoiceMapper.xml b/suimangService/src/main/resources/mapper/VoiceMapper.xml new file mode 100644 index 0000000..1fb1703 --- /dev/null +++ b/suimangService/src/main/resources/mapper/VoiceMapper.xml @@ -0,0 +1,28 @@ + + + + + INSERT INTO voice_info (`id`, `language_id`, `sex`, + `display_name`, `local_name`, `mould_sm_id`, + `sample_rate_hertz`, `words_per_minute`, `voice_type`, + `style_list`, `create_date`, `update_date`, `is_del`) + VALUES + + ( + #{item.id}, + #{item.languageId}, + #{item.sex}, + #{item.localName}, + #{item.displayName}, + #{item.mouldSmId}, + #{item.sampleRateHertz}, + #{item.wordsPerMinute}, + #{item.voiceType}, + #{item.styleList}, + #{item.createDate}, + #{item.updateDate}, + #{item.isDel} + ) + + +