后台服务
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

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