| @@ -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<JsonRootBean> list) { | |||
| String str = "https://suimang.oss-accelerate.aliyuncs.com/builtin/country/"; | |||
| HashSet<VoiceLanguage> 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<VoiceInfo> list1 = new ArrayList<>(); | |||
| for (JsonRootBean bean : list) { | |||
| Date date = new Date(); | |||
| VoiceInfo voiceInfo = new VoiceInfo(); | |||
| voiceInfo.setIsDel(0); | |||
| VoiceMould voiceMould = voiceMouldMapper.selectOne(new QueryWrapper<VoiceMould>().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<VoiceLanguage>().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("导入完成"); | |||
| } | |||
| } | |||
| @@ -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)); | |||
| } | |||
| } | |||
| @@ -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<String> 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<String> getStyleList() { | |||
| return styleList; | |||
| } | |||
| public void setStyleList(List<String> styleList) { | |||
| this.styleList = styleList; | |||
| } | |||
| } | |||
| @@ -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<String> style; | |||
| /** | |||
| * 创建时间 | |||
| */ | |||
| private Date createDate; | |||
| /** | |||
| * 更新时间 | |||
| */ | |||
| private Date updateDate; | |||
| /** | |||
| * 是否删除1是0否 | |||
| */ | |||
| private Integer isDel; | |||
| } | |||
| @@ -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; | |||
| } | |||
| } | |||
| } | |||
| @@ -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<VoiceLanguage, String> { | |||
| void saveBatch(@Param("set") HashSet<VoiceLanguage> set); | |||
| } | |||
| @@ -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<VoiceInfo, String> { | |||
| void saveBatch(@Param("list") List<VoiceInfo> list); | |||
| } | |||
| @@ -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<VoiceInfo> chooseType(Long id); | |||
| } | |||
| @@ -0,0 +1,12 @@ | |||
| package com.iformall.service.sm; | |||
| import com.iformall.domain.po.sm.VoiceLanguage; | |||
| import java.util.List; | |||
| public interface VoiceLanguageService { | |||
| List<VoiceLanguage> voiceTotal(); | |||
| } | |||
| @@ -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<VoiceInfo> chooseType(Long id) { | |||
| List<VoiceInfo> voiceInfos = voiceMapper.selectList(new LambdaQueryWrapper<VoiceInfo>().eq(VoiceInfo::getLanguageId, id).select(VoiceInfo::getId, VoiceInfo::getDisplayName, VoiceInfo::getStyleList)); | |||
| voiceInfos.forEach(x -> { | |||
| if (StringUtils.isNotEmpty(x.getStyleList())) { | |||
| List<String> strings = JSON.parseArray(x.getStyleList(), String.class); | |||
| x.setStyle(strings); | |||
| } | |||
| }); | |||
| return voiceInfos; | |||
| } | |||
| } | |||
| @@ -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<VoiceLanguage> voiceTotal() { | |||
| List<VoiceLanguage> languages = voiceLanguageMapper.selectList(new LambdaQueryWrapper<VoiceLanguage>().eq(VoiceLanguage::getIsDel, 0).select(VoiceLanguage::getId, VoiceLanguage::getName)); | |||
| return CollectionUtils.isEmpty(languages) ? Lists.newArrayList() : languages; | |||
| } | |||
| } | |||
| @@ -0,0 +1,20 @@ | |||
| <?xml version="1.0" encoding="utf-8" ?> | |||
| <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > | |||
| <mapper namespace="com.iformall.mapper.VoiceLanguageMapper"> | |||
| <insert id="saveBatch" parameterType="java.util.HashSet"> | |||
| INSERT INTO voice_language (`id`, `country`, | |||
| `language`, `local`, `name`, `img`, `is_del`) | |||
| VALUES | |||
| <foreach collection="set" item="item" separator=","> | |||
| ( | |||
| #{item.id}, | |||
| #{item.country}, | |||
| #{item.language}, | |||
| #{item.local}, | |||
| #{item.name}, | |||
| #{item.img}, | |||
| #{item.isDel} | |||
| ) | |||
| </foreach> | |||
| </insert> | |||
| </mapper> | |||
| @@ -0,0 +1,28 @@ | |||
| <?xml version="1.0" encoding="utf-8" ?> | |||
| <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > | |||
| <mapper namespace="com.iformall.mapper.VoiceMapper"> | |||
| <insert id="saveBatch" parameterType="java.util.List"> | |||
| 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 | |||
| <foreach collection="list" item="item" separator=","> | |||
| ( | |||
| #{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} | |||
| ) | |||
| </foreach> | |||
| </insert> | |||
| </mapper> | |||