@@ -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> |