From c0cc0aae881266034572ccc04f753e3984bb4fd6 Mon Sep 17 00:00:00 2001 From: xmzhao71 Date: Fri, 20 Oct 2023 14:22:05 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E6=B7=BB=E5=8A=A0=E6=8E=A5?= =?UTF-8?q?=E5=85=A5=E5=95=86=E7=9B=B8=E5=85=B3=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ai/AiVideoController.java | 3 +- .../com/iformall/dto/GenerateVideoDTO.java | 11 ++++ .../com/iformall/service/AiVideoService.java | 8 ++- .../service/impl/AiVideoServiceImpl.java | 45 ++++++++----- .../com/iformall/common/CommonConstant.java | 15 +++++ .../domain/dto/neuver/SaveServiceInfoDTO.java | 36 ++++++++++ .../iformall/domain/po/sm/ServiceInfo.java | 66 +++++++++++++++++++ .../domain/po/sm/ServiceVideoRecord.java | 41 ++++++++++++ .../domain/vo/neuver/PageServiceInfoVO.java | 7 ++ .../iformall/mapper/ServiceInfoMapper.java | 7 ++ .../mapper/ServiceVideoRecordMapper.java | 8 +++ .../service/sm/ServiceInfoService.java | 30 +++++++++ .../service/sm/ServiceVideoRecordService.java | 4 ++ .../sm/impl/ServiceInfoServiceImpl.java | 40 +++++++++++ .../impl/ServiceVideoRecordServiceImpl.java | 8 +++ 15 files changed, 307 insertions(+), 22 deletions(-) create mode 100644 suimangService/src/main/java/com/iformall/common/CommonConstant.java create mode 100644 suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveServiceInfoDTO.java create mode 100644 suimangService/src/main/java/com/iformall/domain/po/sm/ServiceInfo.java create mode 100644 suimangService/src/main/java/com/iformall/domain/po/sm/ServiceVideoRecord.java create mode 100644 suimangService/src/main/java/com/iformall/domain/vo/neuver/PageServiceInfoVO.java create mode 100644 suimangService/src/main/java/com/iformall/mapper/ServiceInfoMapper.java create mode 100644 suimangService/src/main/java/com/iformall/mapper/ServiceVideoRecordMapper.java create mode 100644 suimangService/src/main/java/com/iformall/service/sm/ServiceInfoService.java create mode 100644 suimangService/src/main/java/com/iformall/service/sm/ServiceVideoRecordService.java create mode 100644 suimangService/src/main/java/com/iformall/service/sm/impl/ServiceInfoServiceImpl.java create mode 100644 suimangService/src/main/java/com/iformall/service/sm/impl/ServiceVideoRecordServiceImpl.java diff --git a/open-api/src/main/java/com/iformall/controller/ai/AiVideoController.java b/open-api/src/main/java/com/iformall/controller/ai/AiVideoController.java index 6597f79..32163a2 100644 --- a/open-api/src/main/java/com/iformall/controller/ai/AiVideoController.java +++ b/open-api/src/main/java/com/iformall/controller/ai/AiVideoController.java @@ -32,7 +32,6 @@ public class AiVideoController { @ApiOperation("生成视频") @PostMapping("generateVideo") public ResultData generateVideo(@RequestBody GenerateVideoDTO dto) { - aiVideoService.generateVideo(dto); - return new ResultData(); + return new ResultData(aiVideoService.generateVideo(dto.getAiVideoParam(), dto.getId())); } } diff --git a/open-api/src/main/java/com/iformall/dto/GenerateVideoDTO.java b/open-api/src/main/java/com/iformall/dto/GenerateVideoDTO.java index 6b02d7c..f3a9c80 100644 --- a/open-api/src/main/java/com/iformall/dto/GenerateVideoDTO.java +++ b/open-api/src/main/java/com/iformall/dto/GenerateVideoDTO.java @@ -1,5 +1,6 @@ package com.iformall.dto; +import com.iformall.sm.AiVideoParam; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -9,4 +10,14 @@ import lombok.Data; public class GenerateVideoDTO { @ApiModelProperty(value = "视频唯一标识") private Long id; + @ApiModelProperty(value = "生成视频参数") + private AiVideoParam aiVideoParam; + + + public static GenerateVideoDTO build(AiVideoParam aiVideoParam, Long id) { + GenerateVideoDTO dto = new GenerateVideoDTO(); + dto.setId(id); + dto.setAiVideoParam(aiVideoParam); + return dto; + } } diff --git a/open-api/src/main/java/com/iformall/service/AiVideoService.java b/open-api/src/main/java/com/iformall/service/AiVideoService.java index 4d0a4d4..59546e5 100644 --- a/open-api/src/main/java/com/iformall/service/AiVideoService.java +++ b/open-api/src/main/java/com/iformall/service/AiVideoService.java @@ -3,6 +3,8 @@ package com.iformall.service; import com.iformall.dto.GenerateVideoDTO; import com.iformall.dto.PreviewVideoDTO; import com.iformall.sm.AiPreviewParam; +import com.iformall.sm.AiVideoParam; +import com.iformall.sm.AiVideoResult; /** * ai视频服务 @@ -13,10 +15,12 @@ import com.iformall.sm.AiPreviewParam; public interface AiVideoService { Double previewVideo(PreviewVideoDTO dto); + /** * 生成视频 * - * @param dto + * @param aiVideoParam + * @return {@link AiVideoResult} */ - void generateVideo(GenerateVideoDTO dto); + AiVideoResult generateVideo(AiVideoParam aiVideoParam, Long taskId); } diff --git a/open-api/src/main/java/com/iformall/service/impl/AiVideoServiceImpl.java b/open-api/src/main/java/com/iformall/service/impl/AiVideoServiceImpl.java index 9085ad2..ab079a0 100644 --- a/open-api/src/main/java/com/iformall/service/impl/AiVideoServiceImpl.java +++ b/open-api/src/main/java/com/iformall/service/impl/AiVideoServiceImpl.java @@ -9,6 +9,9 @@ import com.iformall.exception.BizException; import com.iformall.service.AiVideoService; import com.iformall.service.sm.UserMouldVideoService; import com.iformall.service.sm.VoiceInfoService; +import com.iformall.sm.AiVideoHelper; +import com.iformall.sm.AiVideoParam; +import com.iformall.sm.AiVideoResult; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -36,25 +39,31 @@ public class AiVideoServiceImpl implements AiVideoService { } @Override - public void generateVideo(GenerateVideoDTO dto) { - // 参数校验 - UserMouldVideo userMouldVideo = Optional.ofNullable(userMouldVideoService.getById(dto.getId())).orElseThrow(() -> new BizException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "未找到用户数据")); - if (StringUtils.isBlank(userMouldVideo.getPaperwork())) { - throw new BizException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "未填写视频文案"); - } - if (EnumVideoStatus.ing.getCode().equals(userMouldVideo.getVideoStatus()) - || EnumVideoStatus.success.getCode().equals(userMouldVideo.getVideoStatus()) - || EnumVideoStatus.upload_ing.getCode().equals(userMouldVideo.getVideoStatus()) - || EnumVideoStatus.upload_fail.getCode().equals(userMouldVideo.getVideoStatus())) { - throw new BizException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "视频生成中"); - } - if (EnumVideoStatus.upload_success.getCode().equals(userMouldVideo.getVideoStatus())) { - throw new BizException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "视频已生成完成"); - } + public AiVideoResult generateVideo(AiVideoParam aiVideoParam, Long taskId) { +// // 参数校验 +// UserMouldVideo userMouldVideo = Optional.ofNullable(userMouldVideoService.getById(dto.getId())).orElseThrow(() -> new BizException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "未找到用户数据")); +// if (StringUtils.isBlank(userMouldVideo.getPaperwork())) { +// throw new BizException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "未填写视频文案"); +// } +// if (EnumVideoStatus.ing.getCode().equals(userMouldVideo.getVideoStatus()) +// || EnumVideoStatus.success.getCode().equals(userMouldVideo.getVideoStatus()) +// || EnumVideoStatus.upload_ing.getCode().equals(userMouldVideo.getVideoStatus()) +// || EnumVideoStatus.upload_fail.getCode().equals(userMouldVideo.getVideoStatus())) { +// throw new BizException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "视频生成中"); +// } +// if (EnumVideoStatus.upload_success.getCode().equals(userMouldVideo.getVideoStatus())) { +// throw new BizException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "视频已生成完成"); +// } +// +// // 更新视频信息 +// updateUserMouldVideo(userMouldVideo); +// userMouldVideoService.createVideo(userMouldVideo); - // 更新视频信息 - updateUserMouldVideo(userMouldVideo); - userMouldVideoService.createVideo(userMouldVideo); + AiVideoResult video = AiVideoHelper.createVideo(aiVideoParam, taskId); + if (video.isSuccess()) { + // 记录时长 + } + return video; } private void updateUserMouldVideo(UserMouldVideo userMouldVideo) { diff --git a/suimangService/src/main/java/com/iformall/common/CommonConstant.java b/suimangService/src/main/java/com/iformall/common/CommonConstant.java new file mode 100644 index 0000000..89558e5 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/common/CommonConstant.java @@ -0,0 +1,15 @@ +package com.iformall.common; + +public interface CommonConstant { + /** + * 状态(0:锁定,1:正常) + */ + Integer STATUS_NORMAL = 1; + Integer STATUS_ABNORMAL = 0; + + /** + * 删除状态(0:未删除,1:已删除) + */ + Integer DEL_FLAG_DELETED = 1; + Integer DEL_FLAG_NORMAL = 0; +} diff --git a/suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveServiceInfoDTO.java b/suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveServiceInfoDTO.java new file mode 100644 index 0000000..a588e77 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveServiceInfoDTO.java @@ -0,0 +1,36 @@ +package com.iformall.domain.dto.neuver; + +import com.iformall.common.CommonConstant; +import com.iformall.common.IdWorker; +import com.iformall.domain.po.sm.ServiceInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +@ApiModel(value = "获取语种") +@Data +public class SaveServiceInfoDTO { + @ApiModelProperty("客户名称") + private String name; + @ApiModelProperty("所在地址") + private String address; + @ApiModelProperty("客户唯一凭证,api接入需提供") + private String code; + @ApiModelProperty("接入方式(1:api接入,2:私有化接入)") + private Integer type; + + public static ServiceInfo mapping(SaveServiceInfoDTO dto) { + ServiceInfo serviceInfo = new ServiceInfo(); + serviceInfo.setId(IdWorker.get().nextId()); + serviceInfo.setCreateTime(new Date()); + serviceInfo.setUpdateTime(new Date()); + serviceInfo.setName(dto.getName()); + serviceInfo.setAddress(dto.getAddress()); + serviceInfo.setCode(dto.getCode()); + serviceInfo.setType(dto.getType()); + serviceInfo.setStatus(CommonConstant.STATUS_NORMAL); + return serviceInfo; + } +} diff --git a/suimangService/src/main/java/com/iformall/domain/po/sm/ServiceInfo.java b/suimangService/src/main/java/com/iformall/domain/po/sm/ServiceInfo.java new file mode 100644 index 0000000..76751c8 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/domain/po/sm/ServiceInfo.java @@ -0,0 +1,66 @@ +package com.iformall.domain.po.sm; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.Date; + +/** + * 接入商实体 + * + * @author xmzhao71 + * @date 2023-10-19 + */ +@TableName(value = "service_info") +@Data +public class ServiceInfo { + + /** + * 接入商id,唯一标识 + */ + @TableField("id") + private Long id; + /** + * 创建时间 + */ + @TableField("create_time") + private Date createTime; + /** + * 更新时间 + */ + @TableField("update_time") + private Date updateTime; + /** + * 客户名称 + */ + @TableField("name") + private String name; + /** + * 所在地址 + */ + @TableField("address") + private String address; + /** + * 客户唯一凭证,api接入需提供 + */ + @TableField("code") + private String code; + /** + * 接入方式(1:api接入,2:私有化接入) + */ + @TableField("type") + private Integer type; + /** + * 状态(0:锁定,1:正常) + */ + @TableField("status") + private Integer status; + /** + * 删除状态(0:未删除,1:已删除) + */ + @TableField("del_flag") + private Integer delFlag; +} diff --git a/suimangService/src/main/java/com/iformall/domain/po/sm/ServiceVideoRecord.java b/suimangService/src/main/java/com/iformall/domain/po/sm/ServiceVideoRecord.java new file mode 100644 index 0000000..6693f41 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/domain/po/sm/ServiceVideoRecord.java @@ -0,0 +1,41 @@ +package com.iformall.domain.po.sm; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * @author xmzhao71 + * @date 2023-10-19 + */ +@TableName(value = "service_video_record") +@Data +public class ServiceVideoRecord { + /** + * 主键id + */ + @TableField("id") + private Long id; + /** + * 创建时间 + */ + @TableField("create_time") + private Date createTime; + /** + * 更新时间 + */ + @TableField("update_time") + private Date updateTime; + /** + * 接入商标识 + */ + @TableField("service_id") + private Long serviceId; + /** + * 视频时长 + */ + @TableField("video_time") + private String videoTime; +} diff --git a/suimangService/src/main/java/com/iformall/domain/vo/neuver/PageServiceInfoVO.java b/suimangService/src/main/java/com/iformall/domain/vo/neuver/PageServiceInfoVO.java new file mode 100644 index 0000000..674d79a --- /dev/null +++ b/suimangService/src/main/java/com/iformall/domain/vo/neuver/PageServiceInfoVO.java @@ -0,0 +1,7 @@ +package com.iformall.domain.vo.neuver; + +import lombok.Data; + +@Data +public class PageServiceInfoVO { +} diff --git a/suimangService/src/main/java/com/iformall/mapper/ServiceInfoMapper.java b/suimangService/src/main/java/com/iformall/mapper/ServiceInfoMapper.java new file mode 100644 index 0000000..0e3645e --- /dev/null +++ b/suimangService/src/main/java/com/iformall/mapper/ServiceInfoMapper.java @@ -0,0 +1,7 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.sm.ServiceInfo; + +public interface ServiceInfoMapper extends CommonMapper { +} diff --git a/suimangService/src/main/java/com/iformall/mapper/ServiceVideoRecordMapper.java b/suimangService/src/main/java/com/iformall/mapper/ServiceVideoRecordMapper.java new file mode 100644 index 0000000..bb1d002 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/mapper/ServiceVideoRecordMapper.java @@ -0,0 +1,8 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.sm.ServiceInfo; +import com.iformall.domain.po.sm.ServiceVideoRecord; + +public interface ServiceVideoRecordMapper extends CommonMapper { +} diff --git a/suimangService/src/main/java/com/iformall/service/sm/ServiceInfoService.java b/suimangService/src/main/java/com/iformall/service/sm/ServiceInfoService.java new file mode 100644 index 0000000..71d5d60 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/service/sm/ServiceInfoService.java @@ -0,0 +1,30 @@ +package com.iformall.service.sm; + +import com.github.pagehelper.PageInfo; +import com.iformall.domain.dto.neuver.SaveServiceInfoDTO; +import com.iformall.domain.vo.neuver.PageServiceInfoVO; + +/** + * 接入商service + * + * @author xmzhao71 + * @date 2023-10-19 + */ +public interface ServiceInfoService { + + /** + * 创建接入商 + * + * @param dto + */ + void saveServiceInfo(SaveServiceInfoDTO dto); + + /** + * 接入商分页查询 + * + * @param pageNum + * @param pageSize + * @return {@link PageInfo}<{@link PageServiceInfoVO}> + */ + PageInfo pageServiceInfo(Integer pageNum, Integer pageSize); +} diff --git a/suimangService/src/main/java/com/iformall/service/sm/ServiceVideoRecordService.java b/suimangService/src/main/java/com/iformall/service/sm/ServiceVideoRecordService.java new file mode 100644 index 0000000..cc17804 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/service/sm/ServiceVideoRecordService.java @@ -0,0 +1,4 @@ +package com.iformall.service.sm; + +public interface ServiceVideoRecordService { +} diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/ServiceInfoServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/ServiceInfoServiceImpl.java new file mode 100644 index 0000000..f6deac5 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/ServiceInfoServiceImpl.java @@ -0,0 +1,40 @@ +package com.iformall.service.sm.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.iformall.common.CommonConstant; +import com.iformall.common.ErrorCode; +import com.iformall.domain.dto.neuver.SaveServiceInfoDTO; +import com.iformall.domain.po.sm.ServiceInfo; +import com.iformall.domain.vo.neuver.PageServiceInfoVO; +import com.iformall.exception.BizException; +import com.iformall.mapper.ServiceInfoMapper; +import com.iformall.service.sm.ServiceInfoService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Optional; + +@Service +public class ServiceInfoServiceImpl implements ServiceInfoService { + + @Autowired + private ServiceInfoMapper serviceInfoMapper; + + @Override + public void saveServiceInfo(SaveServiceInfoDTO dto) { + // 校验 + ServiceInfo serviceInfo = serviceInfoMapper.selectOne(new LambdaQueryWrapper() + .eq(ServiceInfo::getDelFlag, CommonConstant.DEL_FLAG_NORMAL) + .eq(ServiceInfo::getCode, dto.getCode())); + Optional.ofNullable(serviceInfo).orElseThrow(() -> new BizException(ErrorCode.CODE_ALREADY_EXISTS)); + + serviceInfoMapper.insert(SaveServiceInfoDTO.mapping(dto)); + } + + @Override + public PageInfo pageServiceInfo(Integer pageNum, Integer pageSize) { + return PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> serviceInfoMapper.selectList(null)); + } +} diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/ServiceVideoRecordServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/ServiceVideoRecordServiceImpl.java new file mode 100644 index 0000000..fcb83a8 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/ServiceVideoRecordServiceImpl.java @@ -0,0 +1,8 @@ +package com.iformall.service.sm.impl; + +import com.iformall.service.sm.ServiceVideoRecordService; +import org.springframework.stereotype.Service; + +@Service +public class ServiceVideoRecordServiceImpl implements ServiceVideoRecordService { +}