@@ -204,6 +204,7 @@ logging: | |||
suimang: | |||
oral_broadcasting: xxx | |||
video_tts: | |||
photo_speak: xxx | |||
photo_speak_hy: xxx | |||
digital_avatar: xxx | |||
@@ -160,6 +160,7 @@ logging: | |||
suimang: | |||
oral_broadcasting: xxx | |||
video_tts: | |||
photo_speak: xxx | |||
photo_speak_hy: xxx | |||
digital_avatar: xxx | |||
@@ -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); | |||
} | |||
} |
@@ -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 | |||
@@ -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 | |||
@@ -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 | |||
@@ -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 | |||
@@ -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); | |||
} |
@@ -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); | |||
} |
@@ -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); | |||
} |
@@ -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; | |||
} | |||
} |
@@ -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 | |||
@@ -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; | |||
} | |||
} |
@@ -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) { | |||
} | |||
} |