@@ -8,6 +8,7 @@ import com.iformall.domain.po.sm.MouldPatch; | |||||
import com.iformall.domain.po.sm.MouldPatchSign; | import com.iformall.domain.po.sm.MouldPatchSign; | ||||
import com.iformall.domain.po.sm.UserMouldVideo; | import com.iformall.domain.po.sm.UserMouldVideo; | ||||
import com.iformall.enums.EnumMouldSendType; | import com.iformall.enums.EnumMouldSendType; | ||||
import com.iformall.enums.EnumVideoStatus; | |||||
import com.iformall.enums.EnumaMouldPatchStatus; | import com.iformall.enums.EnumaMouldPatchStatus; | ||||
import com.iformall.service.sm.MouldPatchService; | import com.iformall.service.sm.MouldPatchService; | ||||
import com.iformall.service.sm.MouldPatchSignService; | import com.iformall.service.sm.MouldPatchSignService; | ||||
@@ -22,6 +23,7 @@ import org.slf4j.LoggerFactory; | |||||
import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
import java.util.Date; | |||||
import java.util.List; | import java.util.List; | ||||
@@ -53,8 +55,11 @@ public class UserMouldVideoController extends BaseController { | |||||
@ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | ||||
public ResultData findById(Long id) { | public ResultData findById(Long id) { | ||||
logger.debug("[" + getIpAddr() + "] MouldPatchController::findById"); | 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("新增接口") | @ApiOperation("新增接口") | ||||
@@ -76,14 +81,31 @@ public class UserMouldVideoController extends BaseController { | |||||
if(mouldVideo == null || !mouldVideo.getUserId().equals(getMemberId())){ | if(mouldVideo == null || !mouldVideo.getUserId().equals(getMemberId())){ | ||||
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未找到用户数据"); | 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(); | UserMouldVideo mouldVideoUpd = new UserMouldVideo(); | ||||
mouldVideoUpd.setId(record.getId()); | 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); | |||||
} | } | ||||
} | } |
@@ -62,7 +62,11 @@ public class UserMouldVideo extends TenantEntity { | |||||
@io.swagger.annotations.ApiModelProperty(value="",name="videoPath") | @io.swagger.annotations.ApiModelProperty(value="",name="videoPath") | ||||
private String videoPath; | private String videoPath; | ||||
@io.swagger.annotations.ApiModelProperty(value="视频时长",name="videoTime") | @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") | @io.swagger.annotations.ApiModelProperty(value="生成视频时间",name="createVideoDate") | ||||
private Date createVideoDate; | private Date createVideoDate; | ||||
@@ -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; | |||||
} | |||||
} |
@@ -19,4 +19,5 @@ public interface UserMouldVideoMapper extends CommonMapper<UserMouldVideo, Long> | |||||
*/ | */ | ||||
List<UserMouldVideo> findCList(UserMouldVideo record); | List<UserMouldVideo> findCList(UserMouldVideo record); | ||||
UserMouldVideo findVideo(@Param("id")Long id); | |||||
} | } |
@@ -39,4 +39,8 @@ public interface UserMouldVideoService { | |||||
* @param id | * @param id | ||||
*/ | */ | ||||
void deleteById(Long id); | void deleteById(Long id); | ||||
void createVideo(UserMouldVideo mouldVideo); | |||||
UserMouldVideo findVideo(Long id); | |||||
} | } |
@@ -5,11 +5,16 @@ import com.github.pagehelper.PageInfo; | |||||
import com.iformall.common.IdWorker; | import com.iformall.common.IdWorker; | ||||
import com.iformall.common.ResultData; | import com.iformall.common.ResultData; | ||||
import com.iformall.domain.po.sm.UserMouldVideo; | import com.iformall.domain.po.sm.UserMouldVideo; | ||||
import com.iformall.enums.EnumVideoStatus; | |||||
import com.iformall.mapper.UserMouldVideoMapper; | import com.iformall.mapper.UserMouldVideoMapper; | ||||
import com.iformall.service.sm.UserMouldVideoService; | 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.Logger; | ||||
import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
import org.springframework.scheduling.annotation.Async; | |||||
import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
import java.util.Date; | import java.util.Date; | ||||
@@ -61,4 +66,55 @@ public class UserMouldVideoServiceImpl implements UserMouldVideoService { | |||||
userMouldVideoMapper.deleteById(id); | 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); | |||||
} | |||||
} | } |
@@ -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","人们自古以来,在这条路上行走,然而,这条路确实是坎坷不平、逶迤曲折、无边无际的,它具有无数分支,充满着欢乐、痛苦、艰险,但这就是人生的道路。"); | |||||
} | |||||
} |
@@ -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; | |||||
} |
@@ -18,7 +18,10 @@ | |||||
<result column="remark" jdbcType="VARCHAR" property="remark"/> | <result column="remark" jdbcType="VARCHAR" property="remark"/> | ||||
<result column="video_id" jdbcType="VARCHAR" property="videoId"/> | <result column="video_id" jdbcType="VARCHAR" property="videoId"/> | ||||
<result column="video_path" jdbcType="VARCHAR" property="videoPath"/> | <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_video_date" jdbcType="TIMESTAMP" property="createVideoDate"/> | ||||
<result column="create_date" jdbcType="TIMESTAMP" property="createDate"/> | <result column="create_date" jdbcType="TIMESTAMP" property="createDate"/> | ||||
<result column="update_date" jdbcType="TIMESTAMP" property="updateDate"/> | <result column="update_date" jdbcType="TIMESTAMP" property="updateDate"/> | ||||
@@ -27,7 +30,7 @@ | |||||
<sql id="allColumns"> | <sql id="allColumns"> | ||||
`id`, `tenant_id`, `parent_tenant_id`, `user_id`, `type`, | `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`, | `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> | ||||
<sql id="dynamicWhereConditions"> | <sql id="dynamicWhereConditions"> | ||||
@@ -68,6 +71,10 @@ | |||||
and `title` like concat('%', #{title},'%') | and `title` like concat('%', #{title},'%') | ||||
</if> | </if> | ||||
<if test=" null != videoStatus "> | |||||
and `video_status` = #{videoStatus} | |||||
</if> | |||||
<if test=" null != startDate and null!=endDate"> | <if test=" null != startDate and null!=endDate"> | ||||
and `create_date` between #{startDate} and #{endDate} | and `create_date` between #{startDate} and #{endDate} | ||||
</if> | </if> | ||||
@@ -97,9 +104,19 @@ | |||||
select | select | ||||
`id`, `type`, | `id`, `type`, | ||||
`paperwork`, | `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 | from user_mould_video | ||||
<include refid="dynamicWhereConditions"/> | <include refid="dynamicWhereConditions"/> | ||||
</select> | </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> | </mapper> |