Browse Source

判断用户创建视频时长是否足够

private_deployment
lrh 1 year ago
parent
commit
a90ec6839a
4 changed files with 48 additions and 5 deletions
  1. +4
    -0
      suimangCApi/src/main/java/com/iformall/controller/SDKController.java
  2. +42
    -4
      suimangService/src/main/java/com/iformall/service/sm/impl/PhotoSpeakVideoServiceImpl.java
  3. +1
    -1
      suimangService/src/main/java/com/iformall/service/sm/impl/VoiceInfoServiceImpl.java
  4. +1
    -0
      suimangService/src/main/java/com/iformall/sm/AiPreviewResult.java

+ 4
- 0
suimangCApi/src/main/java/com/iformall/controller/SDKController.java View File

@@ -24,6 +24,10 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.BufferedInputStream;
import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Date;

/**


+ 42
- 4
suimangService/src/main/java/com/iformall/service/sm/impl/PhotoSpeakVideoServiceImpl.java View File

@@ -116,8 +116,9 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService {
voiceMouldObject.put("personTypeStr","default");
voiceMouldObject.put("speakType",0);
voiceMouldObject.put("speakTypeStr","default");
EnumSpeakType speakType = null;
if(StringUtils.isNotBlank(record.getSpeakTypeStr())){
EnumSpeakType speakType = EnumSpeakType.getEnumByMsg(record.getSpeakTypeStr());
speakType = EnumSpeakType.getEnumByMsg(record.getSpeakTypeStr());
if(speakType == null){
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"声音类型信息错误");
}
@@ -206,7 +207,14 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService {
Integer voiceFrom = photoSpeakVideo.getVoiceFrom();
String voiceMouldSmId = null;
String voiceType = "default";//默认

Integer sex = 1;
Long residueTime = 0L;
UserCreateVideoNum videoNum = userCreateVideoNumService.queryInfoByUserId(photoSpeakVideo.getUserId());
if (videoNum == null) {
msg = "没有创建视频时长";
}else {
residueTime = videoNum.getResidueTime();
}
String voiceMaterialUrl = null;
if(EnumVoiceFrom.FROM_MOULD.getCode().equals(voiceFrom)){
try{
@@ -214,6 +222,7 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService {
voiceMouldSmId = personMouldObject.getString("mouldSmId");
Integer speakType = personMouldObject.getInteger("speakType");
Integer personType = personMouldObject.getInteger("personType");
sex = personMouldObject.getInteger("sex");
if(speakType != null && speakType > 0){
voiceType = EnumSpeakType.getEnum(speakType).getMessage();
}else if(personType != null && personType > 0){
@@ -224,6 +233,21 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService {
if(StringUtils.isBlank(voiceMouldSmId)){
msg = "参数错误,未找到声音模板数据";
}
//判断用户时长是否够创建该视频
AiPreviewParam param = new AiPreviewParam();
if (StringUtils.isBlank(photoSpeakVideo.getPaperwork())){
msg = "未填写视频文案数据";
}
param.setGen_txt(photoSpeakVideo.getPaperwork().replaceAll(str, "[*]"));
param.setGender(sex == 1 ? "male" : "female");
param.setVoice_id(voiceMouldSmId);
param.setVoice_style(voiceType);
AiPreviewResult result = AiVideoHelper.voicePreview(param);
if (result.isSuccess()) {
if (residueTime < result.getTime()) {
msg = "创建视频时长不足,请充值";
}
}
}else if(EnumVoiceFrom.FROM_UPD.getCode().equals(voiceFrom)){
voiceMaterialUrl = photoSpeakVideo.getVoiceMaterialUrl();
if(StringUtils.isBlank(voiceMaterialUrl)){
@@ -235,6 +259,14 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService {
if(StringUtils.isBlank(voiceMaterialUrl)){
msg = "未找到上传声音文件";
}
//判断用户时长是否够创建该视频
VideUploadResult videoDetail = videoFactory.getExcutor(videoType).getVideoDetailWithCache(photoSpeakVideo.getVideoId());
if (videoDetail.isSuccess() && StringUtils.isNotBlank(videoDetail.getDuration()) && !"0.0".equals(videoDetail.getDuration())) {
String duration = videoDetail.getDuration();
if (residueTime < Long.parseLong(duration)) {
msg = "创建视频时长余额不足,请充值";
}
}
} else if (EnumVoiceFrom.MUSIC.getCode().equals(voiceFrom)) {
Long musicId = photoSpeakVideo.getMusicId();
MusicInfo musicInfo = musicInfoService.getById(musicId);
@@ -245,6 +277,9 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService {
if (StringUtils.isBlank(voiceMaterialUrl)) {
msg = "音乐文件错误";
}
if (residueTime < musicInfo.getTime()) {
msg ="创建视频时长余额不足,请充值";
}
} else {
msg = "声音数据异常";
}
@@ -269,7 +304,7 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService {
//修改用户生成视频次数
createVideoNum = userCreateVideoNumService.queryInfoByUserId(photoSpeakVideo.getUserId());
if (ObjectUtils.isEmpty(createVideoNum)) {
return new AsyncResult<>("用户没有生成视频次数");
return new AsyncResult<>("生成视频");
} else {
//剩余条数
Integer residueNum = createVideoNum.getResidueNum();
@@ -295,7 +330,6 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService {
Integer speakTypeStr = jsonObject.getInteger("speakType");
param.setVoice_style(StringUtils.isBlank(voiceType) ? "default" : EnumSpeakType.getEnum(speakTypeStr).getType());

Integer sex = jsonObject.getInteger("sex");
if (EnumVoiceFrom.FROM_MOULD.getCode().equals(voiceFrom)) {
param.setGen_txt(paperwork.replaceAll(str, "[*]"));
if (sex == 1){
@@ -310,6 +344,10 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService {
param.setGen_txt("None");
param.setGender("None");
param.setUrl(voiceMaterialUrl);
}else if (EnumVoiceFrom.MUSIC.getCode().equals(voiceFrom)){
param.setGen_txt("None");
param.setGender("None");
param.setUrl(voiceMaterialUrl);
}

AiPhotoSpeakResult video = AiVideoHelper.createPhotoSpeakVideo(param);


+ 1
- 1
suimangService/src/main/java/com/iformall/service/sm/impl/VoiceInfoServiceImpl.java View File

@@ -61,7 +61,7 @@ public class VoiceInfoServiceImpl implements VoiceInfoService {
AiPreviewParam param = new AiPreviewParam();
param.setGen_txt(aiPreviewParam.getGen_txt().replaceAll(str,"[*]"));
param.setVoice_id(voiceInfo.getMouldSmId());
param.setVoice_style(StringUtils.isBlank(aiPreviewParam.getVoice_style()) ? "default" : aiPreviewParam.getVoice_style());
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);
if (result.isSuccess()){


+ 1
- 0
suimangService/src/main/java/com/iformall/sm/AiPreviewResult.java View File

@@ -10,6 +10,7 @@ public class AiPreviewResult {
private Integer code;
private String msg;
private String url;
private Long time;

public String getMsgInfo(Integer code, String msg) {
if (code == 3000 && msg.equals("success")) {


Loading…
Cancel
Save