后台服务
Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

167 linhas
7.0 KiB

  1. package com.iformall.controller;
  2. import com.github.pagehelper.PageInfo;
  3. import com.iformall.annotation.AuthIgnore;
  4. import com.iformall.common.ErrorCode;
  5. import com.iformall.common.ResultData;
  6. import com.iformall.domain.po.base.BaseEntity;
  7. import com.iformall.domain.po.sm.MouldPatch;
  8. import com.iformall.domain.po.sm.PersonMould;
  9. import com.iformall.domain.po.sm.UserMouldVideo;
  10. import com.iformall.domain.po.sm.VoiceMould;
  11. import com.iformall.enums.*;
  12. import com.iformall.language.LanguageDetect;
  13. import com.iformall.mapper.VoiceLanguageMapper;
  14. import com.iformall.service.sm.*;
  15. import com.iformall.sm.AiPreviewParam;
  16. import io.swagger.annotations.Api;
  17. import io.swagger.annotations.ApiImplicitParam;
  18. import io.swagger.annotations.ApiImplicitParams;
  19. import io.swagger.annotations.ApiOperation;
  20. import org.apache.commons.lang3.StringUtils;
  21. import org.checkerframework.checker.units.qual.A;
  22. import org.slf4j.Logger;
  23. import org.slf4j.LoggerFactory;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.web.bind.annotation.*;
  26. import java.util.HashMap;
  27. import java.util.List;
  28. @RestController
  29. @RequestMapping("/api/voiceMould")
  30. @Api(description = "模板接口")
  31. public class VoiceMouldController extends BaseController {
  32. private final Logger logger = LoggerFactory.getLogger(this.getClass());
  33. @Autowired
  34. private VoiceMouldService voiceMouldService;
  35. @Autowired
  36. private PersonMouldService personMouldService;
  37. @Autowired
  38. private MouldPatchSignService mouldPatchSignService;
  39. @Autowired
  40. private VoiceInfoService voiceInfoService;
  41. @Autowired
  42. private VoiceLanguageService voiceLanguageService;
  43. @AuthIgnore
  44. @ApiOperation("获取语种")
  45. @GetMapping("getLanguages")
  46. @ApiImplicitParams({})
  47. public ResultData getLanguages() {
  48. logger.debug("[" + getIpAddr() + "] VoiceMouldController::getLanguages");
  49. List<HashMap<String, Object>> allLanguages = EnumLanguages.getAllLanguages();
  50. return new ResultData(allLanguages);
  51. }
  52. @AuthIgnore
  53. @ApiOperation("分页列表接口")
  54. @GetMapping("list")
  55. @ApiImplicitParams({
  56. @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
  57. @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)})
  58. public ResultData list(@ModelAttribute VoiceMould record, Integer pageNum, Integer pageSize) {
  59. logger.debug("[" + getIpAddr() + "] MouldPatchController::list");
  60. if (record == null) record = new VoiceMould();
  61. // record.setSendType(EnumMouldSendType.auto.getCode());
  62. record.setStatus(EnumaMouldPatchStatus.put_on.getCode());
  63. record.setSortColumns(BaseEntity.SortField.UpdateDate_DESC);
  64. final PageInfo<VoiceMould> page = voiceMouldService.cListAsPage(record, pageNum, pageSize);
  65. return new ResultData(page);
  66. }
  67. @AuthIgnore
  68. @ApiOperation("根据id查询接口")
  69. @GetMapping("/findById")
  70. @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true)
  71. public ResultData findById(Long id) {
  72. logger.debug("[" + getIpAddr() + "] MouldPatchController::findById");
  73. VoiceMould voiceMould = voiceMouldService.getDetailById(id);
  74. if(voiceMould != null
  75. && voiceMould.getParentId() == 0l && voiceMould.getCountSub() > 0){
  76. VoiceMould voiceQ = new VoiceMould();
  77. voiceQ.setParentId(voiceMould.getId());
  78. voiceQ.setVoiceType(EnumVoiceType.speak.getCode());//目前只查询说话风格
  79. voiceQ.setStatus(EnumaMouldPatchStatus.put_on.getCode());
  80. voiceQ.setSortColumns(BaseEntity.SortField.UpdateDate_DESC);
  81. List<VoiceMould> sublist = voiceMouldService.getClist(voiceQ);
  82. if(sublist != null && !sublist.isEmpty()){
  83. voiceMould.setSubVoiceMould(sublist);
  84. }
  85. }
  86. return new ResultData(voiceMould);
  87. }
  88. @ApiOperation("根据输入文案获取音色")
  89. @PostMapping("voiceList")
  90. @ApiImplicitParams({
  91. @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
  92. @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)})
  93. public ResultData voiceList(@RequestBody UserMouldVideo record, Integer pageNum, Integer pageSize) {
  94. logger.debug("[" + getIpAddr() + "] MouldPatchController::voiceList");
  95. if (record == null || StringUtils.isBlank(record.getPaperwork())) {
  96. return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL);
  97. }
  98. Integer sex = null;
  99. if(record.getPersonMouldId() != null){
  100. PersonMould personMode = personMouldService.getDetailById(record.getPersonMouldId());
  101. if(personMode == null){
  102. return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"选择模板不存在");
  103. }
  104. sex = personMode.getSex();
  105. }
  106. String detect = LanguageDetect.detect(record.getPaperwork());
  107. if(StringUtils.isBlank(detect)){
  108. return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"语种识别失败");
  109. }
  110. EnumLanguages anEnum = EnumLanguages.getEnum(detect);
  111. if(anEnum == null){
  112. return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"暂不支持该语种");
  113. }
  114. VoiceMould voiceMould = new VoiceMould();
  115. voiceMould.setParentId(0l);
  116. voiceMould.setSex(sex);
  117. voiceMould.setSendType(EnumMouldSendType.auto.getCode());
  118. voiceMould.setStatus(EnumaMouldPatchStatus.put_on.getCode());
  119. voiceMould.setLanguages(anEnum.getCode().longValue());
  120. voiceMould.setSortColumns(BaseEntity.SortField.UpdateDate_DESC);
  121. final PageInfo<VoiceMould> page = voiceMouldService.cListAsPage(voiceMould, pageNum, pageSize);
  122. return new ResultData(page);
  123. }
  124. @AuthIgnore
  125. @ApiOperation("语言选择下拉框")
  126. @GetMapping("/voiceTotal")
  127. @ApiImplicitParams({})
  128. public ResultData voiceTotal() {
  129. logger.debug("[" + getIpAddr() + "] MouldPatchController::voiceTotal");
  130. return new ResultData(voiceLanguageService.voiceTotal());
  131. }
  132. @AuthIgnore
  133. @ApiOperation("选择声音选择风格")
  134. @GetMapping("/chooseType")
  135. @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true)
  136. public ResultData chooseType(Long id) {
  137. logger.debug("[" + getIpAddr() + "] MouldPatchController::chooseType");
  138. return new ResultData(voiceInfoService.chooseType(id));
  139. }
  140. @AuthIgnore
  141. @ApiOperation("TTS音色预览")
  142. @GetMapping("/preview")
  143. @ApiImplicitParams({})
  144. public ResultData voicePreview(@RequestBody AiPreviewParam aiPreviewParam) {
  145. logger.debug("[" + getIpAddr() + "] MouldPatchController::voicePreview");
  146. return new ResultData(voiceInfoService.voicePreview(aiPreviewParam));
  147. }
  148. }