2 Commits

14 changed files with 273 additions and 190 deletions
Split View
  1. +1
    -0
      suimangAdmin/src/main/resources/application-dev.yml
  2. +1
    -0
      suimangAdmin/src/main/resources/application-prod.yml
  3. +140
    -86
      suimangCApi/src/main/java/com/iformall/controller/UserLiveController.java
  4. +1
    -0
      suimangCApi/src/main/resources/application-dev.yml
  5. +1
    -0
      suimangCApi/src/main/resources/application-prod.yml
  6. +1
    -0
      suimangSchedule/src/main/resources/application-dev.yml
  7. +1
    -0
      suimangSchedule/src/main/resources/application-prod.yml
  8. +2
    -0
      suimangService/src/main/java/com/iformall/service/WxCUserAuthorityService.java
  9. +1
    -1
      suimangService/src/main/java/com/iformall/service/WxCVideoService.java
  10. +4
    -2
      suimangService/src/main/java/com/iformall/service/WxCVoiceService.java
  11. +7
    -44
      suimangService/src/main/java/com/iformall/service/impl/WxCUserAuthorityServiceImpl.java
  12. +6
    -17
      suimangService/src/main/java/com/iformall/service/impl/WxCVideoServiceImpl.java
  13. +32
    -40
      suimangService/src/main/java/com/iformall/service/impl/WxCVoiceServiceImpl.java
  14. +75
    -0
      suimangService/src/main/java/com/iformall/sm/AiTtsHelper.java

+ 1
- 0
suimangAdmin/src/main/resources/application-dev.yml View File

@@ -204,6 +204,7 @@ logging:

suimang:
oral_broadcasting: xxx
video_tts:
photo_speak: xxx
photo_speak_hy: xxx
digital_avatar: xxx


+ 1
- 0
suimangAdmin/src/main/resources/application-prod.yml View File

@@ -160,6 +160,7 @@ logging:

suimang:
oral_broadcasting: xxx
video_tts:
photo_speak: xxx
photo_speak_hy: xxx
digital_avatar: xxx


+ 140
- 86
suimangCApi/src/main/java/com/iformall/controller/UserLiveController.java View File

@@ -85,43 +85,44 @@ public class UserLiveController extends BaseController {
@PostMapping("/login")
@ApiOperation(value = "用户登录", notes = "{\"username\":\"string\",\"password\":\"string\",\"code\":\"string\",\"status\":\"int\"}")
public Map<String, Object> login(@RequestBody Map<String, String> map, HttpServletResponse response) {
Map<String, Object> wxCLiveLoginVos = new HashMap<>();
String ipAddr = getIpAddr();
logger.debug("[" + ipAddr + "] WxUserGrantController::login");

Map<String, Object> resultMap = new HashMap<>();
HashMap<String, Object> status = new HashMap<>();

String code = map.get("code");
String phone = map.get("username");
String password = map.get("password");

if (StringUtils.isBlank(phone) || StringUtils.isBlank(password)) {
HashMap<Object, Object> status = new HashMap<>();
status.put("code", ErrorCode.SYS_PARAMETER_ERROR.getCode());
status.put("message", "手机号或密码为空");
wxCLiveLoginVos.put("status", status);
return wxCLiveLoginVos;
resultMap.put("status", status);
return resultMap;
}
WxCUserBasicInfo basicInfo = wxCUserBasicInfoService.findInfoByPhone(getTenantInfo(), phone);
if (basicInfo == null) {
HashMap<Object, Object> status = new HashMap<>();
status.put("code", ErrorCode.USER_IS_EMPTY);
status.put("message", "用户不存在");
wxCLiveLoginVos.put("status", status);
return wxCLiveLoginVos;
resultMap.put("status", status);
return resultMap;
}
String encryptPassword = new PasswordHelper().encryptPassword(password);
if (!encryptPassword.equals(basicInfo.getPassword())) {
HashMap<Object, Object> status = new HashMap<>();
status.put("code", ErrorCode.USER_PASSWD_ERR.getCode());
status.put("message", "手机号或密码错误");
wxCLiveLoginVos.put("status", status);
return wxCLiveLoginVos;
resultMap.put("status", status);
return resultMap;
}
int statu = Integer.parseInt(map.get("status"));
if (statu == 0) {
WxCUserBasicInfo basicLiveInfo = wxCLiveUserBasicInfoService.getById(basicInfo.getId());
if (basicLiveInfo.getCode() != null && !map.get("code").equals(basicLiveInfo.getCode())) {
HashMap<Object, Object> status = new HashMap<>();
if (basicLiveInfo.getCode() != null && !basicLiveInfo.getCode().equals(code)) {
status.put("code", ErrorCode.USER_ALREADY_LOGIN.getCode());
status.put("message", "用户已在其他设备登录");
wxCLiveLoginVos.put("status", status);
return wxCLiveLoginVos;
resultMap.put("status", status);
return resultMap;
}
if (basicLiveInfo.getCode() == null) {
wxCLiveUserBasicInfoService.updateCode(basicInfo.getId(), map.get("code"));
@@ -130,37 +131,28 @@ public class UserLiveController extends BaseController {
if (statu == -1) {
wxCLiveUserBasicInfoService.updateCode(basicInfo.getId(), null);
basicInfo.setStatus(-2);
HashMap<Object, Object> status = new HashMap<>();
status.put("code", ErrorCode.USER_CANCEL_MCODE.getCode());
status.put("message", "设备已注销");
wxCLiveLoginVos.put("status", status);
return wxCLiveLoginVos;
resultMap.put("status", status);
return resultMap;
}
wxCUserBasicInfoService.handleLoginUser(basicInfo);
WxCUserBasicInfo basicLiveInfo = wxCLiveUserBasicInfoService.getById(basicInfo.getId());
WxCLiveLoginVo wxCLiveLoginVo = new WxCLiveLoginVo();
wxCLiveLoginVo.setCode(map.get("code"));
wxCLiveLoginVo.setUsername(map.get("username"));
Map<String, Object> info = new HashMap();

Map<String, Object> data = new HashMap();
Map<Object, Object> status = new HashMap<>();
status.put("code", 1000);
status.put("message", "success");
data.put("token", basicInfo.getToken());
data.put("username",basicInfo.getPhone());
data.put("status", 0);
data.put("version", basicLiveInfo.getVersion());
data.put("current_time", new Date(System.currentTimeMillis() / 1000));
data.put("expire_time", basicLiveInfo.getExpireTime().getTime() / 1000);
info.put("log_id", basicInfo.getId());
info.put("server_type", "user login");
info.put("username", basicInfo.getPhone());
wxCLiveLoginVos.put("data", data);
wxCLiveLoginVos.put("info", info);
wxCLiveLoginVo.setData(data);
wxCLiveLoginVo.setInfo(info);
wxCLiveLoginVos.put("status", status);
System.out.println("wxCLiveLoginVo.getToken() = " + wxCLiveLoginVo.getToken());
return wxCLiveLoginVos;
data.put("token", basicInfo.getToken());
resultMap.put("data", data);

status.put("code", 1000);
status.put("message", "success");
resultMap.put("status", status);

return resultMap;
}

/**
@@ -170,24 +162,30 @@ public class UserLiveController extends BaseController {
@PostMapping("/avatarList")
@ApiOperation(value = "视频模板列表", notes = "{\"username\",\"string\",\"code\",\"string\"}")
public Map<String, Object> avatarList(@RequestBody Map<String, String> params) throws Exception {
Map<String, Object> avatarVos = new HashMap<>();
String ipaddress = getIpAddr();
logger.debug("[" + ipaddress + "] WxUserGrantController::getAvatarList");
Long id = getMemberId();

Map<String, Object> resultMap = new HashMap<>();
HashMap<String, Object> status = new HashMap<>();

String code = params.get("code");
Long userId = getMemberId();
//鉴权
WxCUserBasicInfo basicLiveInfo = wxCLiveUserBasicInfoService.getById(id);
if (basicLiveInfo.getCode() != null && !params.get("code").equals(basicLiveInfo.getCode())) {
HashMap<Object, Object> status = new HashMap<>();
WxCUserBasicInfo basicLiveInfo = wxCLiveUserBasicInfoService.getById(userId);
if (basicLiveInfo.getCode() != null && !basicLiveInfo.getCode().equals(code)) {
status.put("code", ErrorCode.USER_ALREADY_LOGIN.getCode());
status.put("message", "用户已在其他设备登录");
avatarVos.put("status", status);
return avatarVos;
resultMap.put("status", status);
return resultMap;
}
Map<Object, Object> status = new HashMap<>();

Map<String, Object> data = wxCVideoService.getById(userId);
resultMap.put("data", data);

status.put("code", 1000);
status.put("msg", "success");
avatarVos.put("status", status);
return wxCVideoService.getById(id);
resultMap.put("status", status);
return resultMap;
}


@@ -198,77 +196,134 @@ public class UserLiveController extends BaseController {
@PostMapping("/audioList")
@ApiOperation(value = "音频模板列表", notes = "{\"username\",\"string\",\"code\",\"string\"}")
public Map<String, Object> audioList(@RequestBody Map<String, String> params) {
Map<String, Object> resultMap = new HashMap<>();
String ipaddress = getIpAddr();
logger.debug("[" + ipaddress + "] WxUserGrantController::getAudioList");
Long id = getMemberId();
WxCUserBasicInfo basicLiveInfo = wxCLiveUserBasicInfoService.getById(id);
if (basicLiveInfo.getCode() != null && !params.get("code").equals(basicLiveInfo.getCode())) {
HashMap<Object, Object> status = new HashMap<>();

Map<String, Object> resultMap = new HashMap<>();
HashMap<String, Object> status = new HashMap<>();

String code = params.get("code");

Long userId = getMemberId();
WxCUserBasicInfo basicLiveInfo = wxCLiveUserBasicInfoService.getById(userId);
if (basicLiveInfo.getCode() != null && !basicLiveInfo.getCode().equals(code)) {
status.put("code", ErrorCode.USER_ALREADY_LOGIN.getCode());
status.put("message", "用户已在其他设备登录");
resultMap.put("status", status);
return resultMap;
}
return wxCVoiceService.getById(id,null);
Map<String, Object> data = wxCVoiceService.getById(userId);
resultMap.put("data", data);

status.put("code", 1000);
status.put("msg", "success");
resultMap.put("status", status);
return resultMap;
}

/**
* 资源权限查询
*/


@ApiOperation(value = "资源权限查询", notes = "{\"username\",\"string\",\"code\",\"string\",\"type\",\"int\",\"resource_id\",\"long\"}")
@PostMapping("/author")
public Map<String, Object> getAuthor(@RequestBody Map<String, String> params) {
Map<String, Object> resultMap = new HashMap<>();
String ipaddress = getIpAddr();
logger.debug("[" + ipaddress + "] WxUserGrantController::getAuthor");
Long id = getMemberId();
WxCUserBasicInfo basicLiveInfo = wxCLiveUserBasicInfoService.getById(id);
if (basicLiveInfo.getCode() != null && !params.get("code").equals(basicLiveInfo.getCode())) {
HashMap<Object, Object> status = new HashMap<>();

Map<String, Object> resultMap = new HashMap<>();
HashMap<String, Object> status = new HashMap<>();

String code = params.get("code");
Integer type = Integer.parseInt(params.get("type"));
Long resourceId = Long.valueOf(params.get("resource_id"));

if(type == null){
status.put("code", ErrorCode.SYS_PARAMETER_NOT_NULL.getCode());
status.put("message", "type 为空");
resultMap.put("status", status);
return resultMap;
}
if(resourceId == null){
status.put("code", ErrorCode.SYS_PARAMETER_NOT_NULL.getCode());
status.put("message", "资源ID 为空");
resultMap.put("status", status);
return resultMap;
}

Long userId = getMemberId();
WxCUserBasicInfo basicLiveInfo = wxCLiveUserBasicInfoService.getById(userId);
if (basicLiveInfo.getCode() != null && !basicLiveInfo.getCode().equals(code)) {
status.put("code", ErrorCode.USER_ALREADY_LOGIN.getCode());
status.put("message", "用户已在其他设备登录");
resultMap.put("status", status);
return resultMap;
}
String code = params.get("code");
Integer type = Integer.parseInt(params.get("type"));
Long resourceId = Long.valueOf(params.get("resource_id"));
return wxCUserAuthorityService.getAuthor(id, code, type, resourceId);

Map<String, Object> data = wxCUserAuthorityService.getAuthor(userId, code, type, resourceId);
if(data != null){
resultMap.put("data", data);

status.put("code", 1000);
status.put("msg", "success");
resultMap.put("status", status);
return resultMap;
}

status.put("code", ErrorCode.SYS_NULLPOINTER_ERROR.getCode());
status.put("msg", "未查询到资源权限");
resultMap.put("status", status);
return resultMap;
}

@ApiOperation(value = "tts", notes = "{\"username\",\"string\",\"gen_txt\",\"string\",\"voice_id\",\"string\",\"voice_style\",\"string\",\"speed\",\"int\"}")
@PostMapping("/audiotts")
public Map<String, Object> voicePreview(@RequestBody Map<String, String> params) {
logger.debug("[" + getIpAddr() + "] UserLiveController::voicePreview");
Long id = getMemberId();
AiPreviewParam param = new AiPreviewParam();
if (params.get("voice_id") == null) {
Map<String, Object> status = new HashMap<>();
status.put("code", ErrorCode.SYS_SERVER_ERROR.getCode());
Map<String, Object> resultMap = new HashMap<>();
HashMap<String, Object> status = new HashMap<>();

String voice_id = params.get("voice_id");
String voiceStyle = params.get("voice_style");
if (StringUtils.isBlank(voice_id)) {
status.put("code", ErrorCode.SYS_PARAMETER_NOT_NULL.getCode());
status.put("msg", "音色ID不能为空");
return status;
resultMap.put("status", status);
return resultMap;
}
if (StringUtils.isBlank(params.get("gen_txt"))) {
Map<String, Object> status = new HashMap<>();
status.put("code", ErrorCode.SYS_SERVER_ERROR.getCode());
status.put("msg", "需要生成的文字不能为空");
return status;
Long voiceId = null;
try{
voiceId = Long.parseLong(voice_id);
}catch(Exception e){
status.put("code", ErrorCode.SYS_PARAMETER_ERROR.getCode());
status.put("msg", "音色ID参数异常");
resultMap.put("status", status);
return resultMap;
}

String text = params.get("gen_txt");
if (StringUtils.isBlank(text)) {
resultMap.put("code", ErrorCode.SYS_PARAMETER_NOT_NULL.getCode());
resultMap.put("msg", "需要生成的文字不能为空");
return resultMap;
}
if (Integer.parseInt(params.get("speed")) == -1) {
param.setSpeed(0);
String speedStr = params.get("speed");
Integer speed = null;
try{
speed = Integer.parseInt(speedStr);
}catch(Exception e){}

Map<String, Object> data = wxCVoiceService.voicePreview(voiceId,voiceStyle,text,speed);
if(data != null){
resultMap.put("data", data);

status.put("code", 1000);
status.put("msg", "success");
resultMap.put("status", status);
return resultMap;
}
param.setSpeed(Integer.parseInt(params.get("speed")));
param.setVoice_id(params.get("voice_id"));
param.setVoice_style(params.get("voice_style"));
param.setGen_txt(params.get("gen_txt"));
Map<String, Object> resultMap = wxCVoiceService.voicePreview(param);
Map<String, Object> info = new HashMap<>();
info.put("log_id", id);
info.put("server_type", "audio tts");
resultMap.put("info", info);
status.put("code", ErrorCode.SYS_PARAMETER_NOT_NULL.getCode());
status.put("msg", "获取tts 异常");
resultMap.put("status", status);
return resultMap;
}

@@ -330,7 +385,6 @@ public class UserLiveController extends BaseController {
public ResultData chooseType(Long id) {
logger.debug("[" + getIpAddr() + "] MouldPatchController::chooseType");
List<VoiceInfo> voiceInfos = wxCVoiceService.chooseType(id);
System.out.println("voiceInfos = " + voiceInfos);
return new ResultData(wxCVoiceService.chooseType(id));
return new ResultData(voiceInfos);
}
}

+ 1
- 0
suimangCApi/src/main/resources/application-dev.yml View File

@@ -190,6 +190,7 @@ logging:

suimang:
oral_broadcasting: http://111.198.0.15:22266
video_tts: http://111.198.0.15:22222
photo_speak: http://111.198.0.15:22299
photo_speak_hy: http://111.198.0.15:22288
digital_avatar: http://nas.pucao.cn:2005


+ 1
- 0
suimangCApi/src/main/resources/application-prod.yml View File

@@ -145,6 +145,7 @@ logging:

suimang:
oral_broadcasting: http://111.198.0.15:22266
video_tts: http://111.198.0.15:22222
photo_speak: http://111.198.0.15:22299
photo_speak_hy: http://111.198.0.15:22288
digital_avatar: http://111.198.0.15:22200


+ 1
- 0
suimangSchedule/src/main/resources/application-dev.yml View File

@@ -193,6 +193,7 @@ logging:

suimang:
oral_broadcasting: http://nas.pucao.cn:2001
video_tts: http://111.198.0.15:22222
photo_speak: http://111.198.0.15:22299
photo_speak_hy: http://111.198.0.15:22288
digital_avatar: http://nas.pucao.cn:2005


+ 1
- 0
suimangSchedule/src/main/resources/application-prod.yml View File

@@ -149,6 +149,7 @@ logging:

suimang:
oral_broadcasting: http://111.198.0.15:22266
video_tts: http://111.198.0.15:22222
photo_speak: http://111.198.0.15:22299
photo_speak_hy: http://111.198.0.15:22288
digital_avatar: http://111.198.0.15:22200


+ 2
- 0
suimangService/src/main/java/com/iformall/service/WxCUserAuthorityService.java View File

@@ -5,5 +5,7 @@ import com.iformall.common.ResultData;
import java.util.Map;

public interface WxCUserAuthorityService {

Map<String,Object> getAuthor(Long id, String code, Integer type, Long resourceId);

}

+ 1
- 1
suimangService/src/main/java/com/iformall/service/WxCVideoService.java View File

@@ -8,7 +8,7 @@ import java.util.Map;
public interface WxCVideoService {


Map<String, Object> getById(Long id) throws Exception;
Map<String, Object> getById(Long userId) throws Exception;

WxCVideoTable selectOne(Long id, long resource_id);
}

+ 4
- 2
suimangService/src/main/java/com/iformall/service/WxCVoiceService.java View File

@@ -8,9 +8,11 @@ import java.util.List;
import java.util.Map;

public interface WxCVoiceService {
Map<String,Object> getById(Long id,String phone);

Map<String,Object> getById(Long userId);

List<VoiceInfo> chooseType(Long id);

Map<String,Object> voicePreview(AiPreviewParam aiPreviewParam);
Map<String, Object> voicePreview(Long voiceId, String voiceStyle, String text, Integer speed);

}

+ 7
- 44
suimangService/src/main/java/com/iformall/service/impl/WxCUserAuthorityServiceImpl.java View File

@@ -19,8 +19,9 @@ public class WxCUserAuthorityServiceImpl implements WxCUserAuthorityService {

@Override
public Map<String, Object> getAuthor(Long id, String code, Integer type, Long resourceId) {
List<WxCUserAuthority> resultList = new ArrayList<WxCUserAuthority>();
HashMap<String, Object> authorVos = new HashMap<>();
List<WxCUserAuthority> resultList = new ArrayList<WxCUserAuthority>();

if (type == 0) {
//查询数字人相关权限
@@ -31,41 +32,9 @@ public class WxCUserAuthorityServiceImpl implements WxCUserAuthorityService {
resultList = wxCUserAuthorityMapper.getAuthorVoice(id, 1, resourceId);
}

if (resourceId == null || resourceId == -1) {
//若资源id没有传入那就展示所有当前类型资源权限
HashMap<String, Object> info = new HashMap<>();
HashMap<String, Object> status = new HashMap<>();
List authorList = new ArrayList();
for (WxCUserAuthority wxCUserAuthority : resultList) {
HashMap<String, Object> data = new HashMap<>();
data.put("username", wxCUserAuthority.getUserName());
data.put("type", wxCUserAuthority.getType());
data.put("resource_id", wxCUserAuthority.getResourceId());
data.put("class", wxCUserAuthority.getClassType());
data.put("current_time", new Date(System.currentTimeMillis() / 1000));
data.put("expire_time", wxCUserAuthority.getExpireTime().getTime() / 1000);
authorList.add(data);
}
authorVos.put("authorList", authorList);
info.put("log_id", id);
info.put("server_type", "author");
authorVos.put("info", info);
status.put("code", 1000);
status.put("msg", "success");
authorVos.put("status", status);
return authorVos;
}
HashMap<String, Object> data = new HashMap<>();
HashMap<String, Object> info = new HashMap<>();
HashMap<String, Object> status = new HashMap<>();
if (resultList.size() == 0) {
status.put("code", 5001);
status.put("msg", "没有该资源的权限");
authorVos.put("status", status);
return authorVos;
}
for (WxCUserAuthority wxCUserAuthority : resultList) {
data.put("username", wxCUserAuthority.getUserName());
if (resultList.size() == 1) {
HashMap<String, Object> data = new HashMap<>();
WxCUserAuthority wxCUserAuthority = resultList.get(0);
data.put("type", wxCUserAuthority.getType());
data.put("resource_id", wxCUserAuthority.getResourceId());

@@ -75,14 +44,8 @@ public class WxCUserAuthorityServiceImpl implements WxCUserAuthorityService {
data.put("class", EnumClassType.SHARE.getCode());
data.put("current_time", new Date(System.currentTimeMillis() / 1000));
data.put("expire_time", wxCUserAuthority.getExpireTime().getTime() / 1000);
return data;
}
authorVos.put("data", data);
info.put("log_id", id);
info.put("server_type", "author");
authorVos.put("info", info);
status.put("code", 1000);
status.put("msg", "success");
authorVos.put("status", status);
return authorVos;
return null;
}
}

+ 6
- 17
suimangService/src/main/java/com/iformall/service/impl/WxCVideoServiceImpl.java View File

@@ -39,13 +39,12 @@ public class WxCVideoServiceImpl implements WxCVideoService, IExcelExportServer
WxCVideoMapper wxCVideoMapper;

@Override
public Map<String, Object> getById(Long id) {
List<WxCVideoTable> TemplateVideo = wxCVideoMapper.getById(id);
Map<String, Object> avatarVos = new HashMap();
public Map<String, Object> getById(Long userId) {
Map<String, Object> data = new HashMap();

List<WxCVideoTable> TemplateVideo = wxCVideoMapper.getById(userId);
List authorlist = new ArrayList();
for (WxCVideoTable wxCVideoTable : TemplateVideo) {
data.put("username", wxCVideoTable.getUserName());
data.put("current_time", new Date(System.currentTimeMillis() / 1000));

Map<String, Object> avatar = new HashMap();
@@ -63,7 +62,6 @@ public class WxCVideoServiceImpl implements WxCVideoService, IExcelExportServer
avatar.put("avatar_model_md5", wxCVideoTable.getModelMd5());
}


try {
File preinfoFile = new File(wxCVideoTable.getPreInfoPath());
avatar.put("avatar_preinfo_md5", getFileMD5(preinfoFile));
@@ -75,19 +73,10 @@ public class WxCVideoServiceImpl implements WxCVideoService, IExcelExportServer
avatar.put("expire_time", wxCVideoTable.getExpireTime().getTime() / 1000);
avatar.put("class", wxCVideoTable.getClassType());
authorlist.add(avatar);
data.put("authorlist", authorlist);
}
avatarVos.put("data", data);
Map<String, Object> info = new HashMap();
Map<String, Object> status = new HashMap();
info.put("log_id", id);
info.put("server_type", "avatar list");
status.put("code", 1000);
status.put("msg", "success");
avatarVos.put("info", info);
avatarVos.put("status", status);

return avatarVos;
data.put("authorlist", authorlist);

return data;
}

@Override


+ 32
- 40
suimangService/src/main/java/com/iformall/service/impl/WxCVoiceServiceImpl.java View File

@@ -17,9 +17,12 @@ import com.iformall.mapper.WxCVoiceMapper;
import com.iformall.service.WxCVoiceService;
import com.iformall.sm.AiPreviewParam;
import com.iformall.sm.AiPreviewResult;
import com.iformall.sm.AiTtsHelper;
import com.iformall.sm.AiVideoHelper;
import com.iformall.utils.Constant;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
@@ -28,6 +31,7 @@ import java.util.*;

@Service
public class WxCVoiceServiceImpl implements WxCVoiceService {
private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Autowired
WxCVoiceMapper wxCVoiceMapper;
@@ -43,11 +47,10 @@ public class WxCVoiceServiceImpl implements WxCVoiceService {


@Override
public Map<String, Object> getById(Long id,String phone) {
List<WxCVoiceTable> resultList = wxCVoiceMapper.getById(id);
HashMap<String, Object> result = new HashMap<>();
public Map<String, Object> getById(Long userId) {
HashMap<String, Object> data = new HashMap<>();
data.put("username", phone);

List<WxCVoiceTable> resultList = wxCVoiceMapper.getById(userId);
data.put("current_time", new Date(System.currentTimeMillis() / 1000));
// List audioList = new ArrayList();
Map<Long,Map<String, Object>> audioList = new HashMap();
@@ -102,44 +105,10 @@ public class WxCVoiceServiceImpl implements WxCVoiceService {
}

data.put("audioList", new ArrayList<>(audioList.values()));

result.put("data", data);
HashMap<String, Object> info = new HashMap<>();
HashMap<String, Object> status = new HashMap<>();
info.put("log_id", id);
info.put("server_type", "audio list");
result.put("info", info);
status.put("code", 1000);
status.put("msg", "success");
result.put("status", status);
return result;
}
@Override
public Map<String, Object> voicePreview(AiPreviewParam aiPreviewParam) {
VoiceInfo voiceInfo = voiceMapper.selectOne(new LambdaQueryWrapper<VoiceInfo>().eq(VoiceInfo::getIsDel, 0).eq(VoiceInfo::getId, aiPreviewParam.getVoice_id()));
if (ObjectUtils.isEmpty(voiceInfo)) {
Map<String, Object> status = new HashMap<>();
status.put("code", ErrorCode.SYS_SERVER_ERROR.getCode());
status.put("msg", "声音信息不存在");
return status;
}
AiPreviewParam param = new AiPreviewParam();
param.setGen_txt(aiPreviewParam.getGen_txt().replaceAll(Constant.text_pause, "[*]"));
param.setVoice_id(voiceInfo.getMouldSmId());
param.setVoice_style(StringUtils.isBlank(aiPreviewParam.getVoice_style()) ? EnumSpeakType.default_0.getMessage() : aiPreviewParam.getVoice_style());
param.setGender(voiceInfo.getSex() == 1 ? "male" : "female");
AiPreviewResult result = AiVideoHelper.voicePreview(param);
Map<String, Object> resultMap = new HashMap<>();
Map<String, Object> data = new HashMap<>();
data.put("ttsurl", result.getUrl());
Map<String, Object> status = new HashMap<>();
status.put("code", 1000);
status.put("msg", "success");
resultMap.put("data", data);
resultMap.put("status", status);
return resultMap;
return data;
}


@Override
public List<VoiceInfo> chooseType(Long id) {
List<VoiceInfo> voiceInfos = voiceMapper.selectList(
@@ -173,4 +142,27 @@ public class WxCVoiceServiceImpl implements WxCVoiceService {
});
return voiceInfos;
}

@Override
public Map<String, Object> voicePreview(Long voiceId, String voiceStyle, String text, Integer speed) {
VoiceInfo voiceInfo = voiceMapper.selectById(voiceId);
if(voiceInfo == null){
logger.error("未查询到声音{}"+voiceId);
return null;
}

AiPreviewParam param = new AiPreviewParam();
param.setVoice_id(voiceInfo.getMouldSmId());
param.setVoice_style(StringUtils.isBlank(voiceStyle) ? EnumSpeakType.default_0.getMessage() : voiceStyle);
param.setGen_txt(text.replaceAll(Constant.text_pause, "[*]"));
param.setSpeed(speed==null?100:speed);
AiPreviewResult aiTtsResult = AiTtsHelper.voicePreview(param);
if(!aiTtsResult.isSuccess()){
logger.error("tts 预览失败{}"+aiTtsResult.getMsg());
return null;
}
Map<String, Object> data = new HashMap<>();
data.put("ttsurl", aiTtsResult.getUrl());
return data;
}
}

+ 75
- 0
suimangService/src/main/java/com/iformall/sm/AiTtsHelper.java View File

@@ -0,0 +1,75 @@
package com.iformall.sm;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.iformall.utils.Base64Util;
import com.iformall.utils.HttpUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Slf4j
@Component
public class AiTtsHelper {

public static String video_tts;
@Value("${suimang.video_tts}")
public void setVideoTts(String video_tts){
this.video_tts = video_tts;
}


public static String doPost(String url, String params) {
return HttpUtil.doAiVideoPost(url,params);
}


public static AiPreviewResult voicePreview(AiPreviewParam param) {
String response = doPost(video_tts + "/tts_wav", JSONObject.toJSONString(param));
log.info("TTS音色预览 end response:" + response);
AiPreviewResult result = new AiPreviewResult();

if (StringUtils.isBlank(response)) {
result.setSuccess(false);
result.setMsg("(MetaService)TTS音色预览失败,请稍后重试");
return result;
}
JSONObject jsonObject = JSON.parseObject(response);
JSONObject status = jsonObject.getJSONObject("status");

Integer code = status.getInteger("code");
String msg = status.getString("msg");
if (code == null) {
result.setSuccess(false);
result.setMsg("(MetaService)TTS音色预览异常,请稍后重试");
return result;
}
if (code.intValue() == 3000) {
JSONObject data = jsonObject.getJSONObject("data");
String strURL = data.getString("url");
String time = data.getString("time");

result.setCode(200);
result.setSuccess(true);
result.setUrl(video_tts + strURL);
result.setTime(Double.valueOf(time));
String resultMsg = result.getMsgInfo(code, msg);
result.setMsg(resultMsg);
} else {
result.setCode(code);
result.setSuccess(false);
String resultMsg = result.getMsgInfo(code, msg);
result.setMsg(resultMsg);
}
return result;
}



public static void main(String[] args) {

}


}

Loading…
Cancel
Save