Browse Source

//MouldPatch

private_deployment
xhxu 2 years ago
parent
commit
8d3afdc4c2
9 changed files with 269 additions and 11 deletions
  1. +29
    -7
      suimangCApi/src/main/java/com/iformall/controller/UserMouldVideoController.java
  2. +5
    -1
      suimangService/src/main/java/com/iformall/domain/po/sm/UserMouldVideo.java
  3. +51
    -0
      suimangService/src/main/java/com/iformall/enums/EnumVideoStatus.java
  4. +1
    -0
      suimangService/src/main/java/com/iformall/mapper/UserMouldVideoMapper.java
  5. +4
    -0
      suimangService/src/main/java/com/iformall/service/sm/UserMouldVideoService.java
  6. +56
    -0
      suimangService/src/main/java/com/iformall/service/sm/impl/UserMouldVideoServiceImpl.java
  7. +90
    -0
      suimangService/src/main/java/com/iformall/sm/AiVideoHelper.java
  8. +13
    -0
      suimangService/src/main/java/com/iformall/sm/AiVideoResult.java
  9. +20
    -3
      suimangService/src/main/resources/mapper/UserMouldVideoMapper.xml

+ 29
- 7
suimangCApi/src/main/java/com/iformall/controller/UserMouldVideoController.java View File

@@ -8,6 +8,7 @@ import com.iformall.domain.po.sm.MouldPatch;
import com.iformall.domain.po.sm.MouldPatchSign;
import com.iformall.domain.po.sm.UserMouldVideo;
import com.iformall.enums.EnumMouldSendType;
import com.iformall.enums.EnumVideoStatus;
import com.iformall.enums.EnumaMouldPatchStatus;
import com.iformall.service.sm.MouldPatchService;
import com.iformall.service.sm.MouldPatchSignService;
@@ -22,6 +23,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Date;
import java.util.List;


@@ -53,8 +55,11 @@ public class UserMouldVideoController extends BaseController {
@ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true)
public ResultData findById(Long id) {
logger.debug("[" + getIpAddr() + "] MouldPatchController::findById");
UserMouldVideo userMouldVideo = userMouldVideoService.getById(id);
return new ResultData(userMouldVideo);
UserMouldVideo mouldVideo = userMouldVideoService.getById(id);
if(mouldVideo == null || !mouldVideo.getUserId().equals(getMemberId())){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未找到用户数据");
}
return new ResultData(mouldVideo);
}

@ApiOperation("新增接口")
@@ -76,14 +81,31 @@ public class UserMouldVideoController extends BaseController {
if(mouldVideo == null || !mouldVideo.getUserId().equals(getMemberId())){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未找到用户数据");
}

if(StringUtils.isEmpty(mouldVideo.getPaperwork())){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未填写视频文案");
}
if(EnumVideoStatus.ing.getCode().equals(mouldVideo.getVideoStatus())){
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"生成视频中");
}

UserMouldVideo mouldVideoUpd = new UserMouldVideo();
mouldVideoUpd.setId(record.getId());
// mouldVideoUpd.setVideoId();
// mouldVideoUpd.setVideoPath();
// mouldVideoUpd.setVideoTime();
return userMouldVideoService.saveOrUpdate(mouldVideoUpd);
mouldVideoUpd.setVideoStatus(EnumVideoStatus.ing.getCode());
mouldVideoUpd.setCreateVideoDate(new Date());
userMouldVideoService.saveOrUpdate(mouldVideoUpd);

userMouldVideoService.createVideo(mouldVideo);

return new ResultData();
}

@ApiOperation("根据id查询接口")
@GetMapping("/findVideo")
@ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true)
public ResultData findVideo(Long id) {
logger.debug("[" + getIpAddr() + "] MouldPatchController::findVideo");
UserMouldVideo userMouldVideo = userMouldVideoService.findVideo(id);
return new ResultData(userMouldVideo);
}

}

+ 5
- 1
suimangService/src/main/java/com/iformall/domain/po/sm/UserMouldVideo.java View File

@@ -62,7 +62,11 @@ public class UserMouldVideo extends TenantEntity {
@io.swagger.annotations.ApiModelProperty(value="",name="videoPath")
private String videoPath;
@io.swagger.annotations.ApiModelProperty(value="视频时长",name="videoTime")
private Integer videoTime;
private float videoTime;
@io.swagger.annotations.ApiModelProperty(value="EnumVideoStatus 视频状态",name="videoStatus")
private Integer videoStatus;
@io.swagger.annotations.ApiModelProperty(value="生成视频信息",name="videoMsg")
private String videoMsg;

@io.swagger.annotations.ApiModelProperty(value="生成视频时间",name="createVideoDate")
private Date createVideoDate;


+ 51
- 0
suimangService/src/main/java/com/iformall/enums/EnumVideoStatus.java View File

@@ -0,0 +1,51 @@
package com.iformall.enums;

import java.util.ArrayList;
import java.util.List;

/**
*
*/
public enum EnumVideoStatus {


draft(0, "草稿"),
ing(1, "生成视频中"),
success(2, "生成视频成功"),
fail(3, "生成视频失败"),
;

public static EnumVideoStatus getEnum(Integer code) {
for (EnumVideoStatus value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}

public static List<Integer> getAllCodes(){
List<Integer> codes = new ArrayList<>();
for (EnumVideoStatus value : values()) {
codes.add(value.getCode());
}
return codes;
}

private Integer code;
private String message;

EnumVideoStatus(Integer code, String message) {
this.code = code;
this.message = message;
}

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}

}

+ 1
- 0
suimangService/src/main/java/com/iformall/mapper/UserMouldVideoMapper.java View File

@@ -19,4 +19,5 @@ public interface UserMouldVideoMapper extends CommonMapper<UserMouldVideo, Long>
*/
List<UserMouldVideo> findCList(UserMouldVideo record);

UserMouldVideo findVideo(@Param("id")Long id);
}

+ 4
- 0
suimangService/src/main/java/com/iformall/service/sm/UserMouldVideoService.java View File

@@ -39,4 +39,8 @@ public interface UserMouldVideoService {
* @param id
*/
void deleteById(Long id);

void createVideo(UserMouldVideo mouldVideo);

UserMouldVideo findVideo(Long id);
}

+ 56
- 0
suimangService/src/main/java/com/iformall/service/sm/impl/UserMouldVideoServiceImpl.java View File

@@ -5,11 +5,16 @@ import com.github.pagehelper.PageInfo;
import com.iformall.common.IdWorker;
import com.iformall.common.ResultData;
import com.iformall.domain.po.sm.UserMouldVideo;
import com.iformall.enums.EnumVideoStatus;
import com.iformall.mapper.UserMouldVideoMapper;
import com.iformall.service.sm.UserMouldVideoService;
import com.iformall.sm.AiVideoHelper;
import com.iformall.sm.AiVideoResult;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

import java.util.Date;
@@ -61,4 +66,55 @@ public class UserMouldVideoServiceImpl implements UserMouldVideoService {
userMouldVideoMapper.deleteById(id);
}

@Async
@Override
public void createVideo(UserMouldVideo mouldVideo) {
UserMouldVideo videoUpd = new UserMouldVideo();
videoUpd.setId(mouldVideo.getId());

if(StringUtils.isBlank(mouldVideo.getPersonMouldPath())){
videoUpd.setVideoStatus(EnumVideoStatus.fail.getCode());
videoUpd.setVideoMsg("未找到人物模板数据");
this.saveOrUpdate(videoUpd);
return;
}

if(StringUtils.isBlank(mouldVideo.getPaperwork())){
videoUpd.setVideoStatus(EnumVideoStatus.fail.getCode());
videoUpd.setVideoMsg("未填写视频文案");
this.saveOrUpdate(videoUpd);
return;
}

try{
AiVideoResult video = AiVideoHelper.createVideo(mouldVideo.getPersonMouldPath(), mouldVideo.getVoiceMouldPath(), mouldVideo.getPaperwork());
if(video.isSuccess()){
videoUpd.setVideoPath(video.getUrl());
videoUpd.setVideoTime(video.getDuration());
videoUpd.setVideoStatus(EnumVideoStatus.success.getCode());
videoUpd.setVideoMsg(video.getMsg());
videoUpd.setCreateVideoDate(new Date());
this.saveOrUpdate(videoUpd);
return;
}
videoUpd.setVideoStatus(EnumVideoStatus.fail.getCode());
videoUpd.setVideoMsg(video.getMsg());
this.saveOrUpdate(videoUpd);
return;

}catch(Exception e){
e.printStackTrace();
videoUpd.setVideoStatus(EnumVideoStatus.fail.getCode());
videoUpd.setVideoMsg(e.getMessage());
this.saveOrUpdate(videoUpd);
return;
}

}

@Override
public UserMouldVideo findVideo(Long id) {
return userMouldVideoMapper.findVideo(id);
}

}

+ 90
- 0
suimangService/src/main/java/com/iformall/sm/AiVideoHelper.java View File

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

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.iformall.common.ErrorCode;
import com.iformall.douyin.pay.orderQuery.OrderQueryResult;
import com.iformall.douyin.pay.orderQuery.QueryMerchantResult;
import com.iformall.douyin.pay.orderQuery.QueryRefundResult;
import com.iformall.douyin.pay.orderQuery.QuerySettleResult;
import com.iformall.douyin.pay.preOrder.*;
import com.iformall.enums.EnumPayStatus;
import com.iformall.exception.MallinkException;
import com.iformall.utils.HttpUtil;
import com.iformall.utils.sign.SignUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.*;

@Slf4j
public class AiVideoHelper {

public static String doPost(String url, Map<String, Object> params) {
return HttpUtil.doPost(url,null, JSON.toJSONString(params));
}

public static AiVideoResult createVideo(String video_template_id,String voice_id,String gen_txt) {
Map<String,Object> params = new HashMap<>();
params.put("video_template_id",video_template_id);
if(StringUtils.isBlank(voice_id)){
voice_id = "default";
}
params.put("voice_id",voice_id);
params.put("gen_txt",gen_txt);

String response = doPost("http://222.128.9.132:22266/gen_dh_video", params);
log.info("服务端预下单 request:"+params.toString()+" response:"+response);

AiVideoResult result = new AiVideoResult();

JSONObject jsonObject = JSON.parseObject(response);
JSONObject status = jsonObject.getJSONObject("status");
Integer code = status.getInteger("code");

if(null != code && code.intValue() == 1000){
JSONObject data = jsonObject.getJSONObject("data");
JSONObject video = data.getJSONObject("video");
result.setSuccess(true);
result.setMsg("success");
result.setDuration(video.getFloatValue("duration"));
result.setUrl(video.getString("url"));
}else{
result.setSuccess(false);
result.setMsg(status.getString("msg"));
}
return result;

// Integer code = jsonObject.getInteger("err_no");
// if (null != code && code.intValue() == 0 ) {
// CreatePreOrderResult result = new CreatePreOrderResult();
// result.setSuccess(true);
// result.setOutOrderNo(preOrder.getOutOrderNo());
// JSONObject data = jsonObject.getJSONObject("data");
// if (null != data ) {
// result.setOrderId(data.getString("order_id"));
// result.setToken(data.getString("order_token"));
// }else {
// log.error("createPreOrder reponse empity. request: "+JSON.toJSONString(preOrder.toRequestMap())+" response:"+response);
// result.setSuccess(false);
// result.setMsg("createPreOrder reponse empity."+response);
// }
// return result;
// }else {
// log.error("createPreOrder reponse error. request: "+JSON.toJSONString(preOrder.toRequestMap())+" response:"+response);
// CreatePreOrderResult result = new CreatePreOrderResult();
// result.setSuccess(false);
// result.setMsg("createPreOrder reponse error."+response);
// return result;
// }
}

public static void main(String[] args) {
createVideo("16739389169485046_nVi875Ej","default","人们自古以来,在这条路上行走,然而,这条路确实是坎坷不平、逶迤曲折、无边无际的,它具有无数分支,充满着欢乐、痛苦、艰险,但这就是人生的道路。");
}

}

+ 13
- 0
suimangService/src/main/java/com/iformall/sm/AiVideoResult.java View File

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

import lombok.Data;

@Data
public class AiVideoResult {

private boolean success;
private String msg;
private float duration;
private String url;

}

+ 20
- 3
suimangService/src/main/resources/mapper/UserMouldVideoMapper.xml View File

@@ -18,7 +18,10 @@
<result column="remark" jdbcType="VARCHAR" property="remark"/>
<result column="video_id" jdbcType="VARCHAR" property="videoId"/>
<result column="video_path" jdbcType="VARCHAR" property="videoPath"/>
<result column="video_time" jdbcType="INTEGER" property="videoTime"/>
<result column="video_time" jdbcType="float" property="videoTime"/>
<result column="video_status" jdbcType="INTEGER" property="videoStatus"/>
<result column="video_msg" jdbcType="VARCHAR" property="videoMsg"/>

<result column="create_video_date" jdbcType="TIMESTAMP" property="createVideoDate"/>
<result column="create_date" jdbcType="TIMESTAMP" property="createDate"/>
<result column="update_date" jdbcType="TIMESTAMP" property="updateDate"/>
@@ -27,7 +30,7 @@
<sql id="allColumns">
`id`, `tenant_id`, `parent_tenant_id`, `user_id`, `type`,
`person_mould_id`, `person_mould_path`, `voice_mould_id`, `voice_mould_path`, `paperwork`, `background_mould_id`, `background_mould_path`,
`title`, `remark`, `video_id`, `video_path`, `video_time`, `create_video_date`, `create_date`, `update_date`
`title`, `remark`, `video_id`, `video_path`, `video_time`, `video_status`, `video_msg`, `create_video_date`, `create_date`, `update_date`
</sql>

<sql id="dynamicWhereConditions">
@@ -68,6 +71,10 @@
and `title` like concat('%', #{title},'%')
</if>

<if test=" null != videoStatus ">
and `video_status` = #{videoStatus}
</if>

<if test=" null != startDate and null!=endDate">
and `create_date` between #{startDate} and #{endDate}
</if>
@@ -97,9 +104,19 @@
select
`id`, `type`,
`paperwork`,
`title`, `remark`, `video_id`, `video_path`, `video_time`, `create_video_date`, `create_date`, `update_date`
`title`, `remark`, `video_id`, `video_path`, `video_time`,`video_status`,
`create_video_date`, `create_date`, `update_date`
from user_mould_video
<include refid="dynamicWhereConditions"/>
</select>


<select id="findVideo" parameterType="java.util.HashMap" resultMap="BaseResultMap">
select
`video_id`, `video_path`, `video_time`,`video_status`
from user_mould_video
where `id` = #{id}
</select>


</mapper>

Loading…
Cancel
Save