Pārlūkot izejas kodu

Merge branch 'photo' of https://git.malls.iformall.com/suimang/suimangServer into photo

private_deployment
xhxu pirms 1 gada
vecāks
revīzija
a4f07a3358
60 mainītis faili ar 1788 papildinājumiem un 239 dzēšanām
  1. +2
    -0
      suimangAdmin/src/main/resources/db/migration/V202306271409_voice_material.sql
  2. +2
    -0
      suimangAdmin/src/main/resources/db/migration/V202306281655_photo_speak_video.sql
  3. +8
    -0
      suimangAdmin/src/main/resources/db/migration/V202306291619_voice_info.sql
  4. +105
    -6
      suimangCApi/src/main/java/com/iformall/controller/PhotoSpeakVideoController.java
  5. +107
    -0
      suimangCApi/src/main/java/com/iformall/controller/SDKController.java
  6. +4
    -1
      suimangCApi/src/main/java/com/iformall/controller/VoiceMaterialController.java
  7. +14
    -0
      suimangCApi/src/main/java/com/iformall/controller/WxUserGrantController.java
  8. +35
    -12
      suimangSchedule/src/main/java/com/iformall/schedule/PhotoSpeakSchedule.java
  9. +4
    -0
      suimangService/src/main/java/com/iformall/domain/po/WxCUserBasicInfo.java
  10. +19
    -12
      suimangService/src/main/java/com/iformall/domain/po/sm/MusicInfo.java
  11. +6
    -0
      suimangService/src/main/java/com/iformall/domain/po/sm/PhotoSpeakVideo.java
  12. +11
    -0
      suimangService/src/main/java/com/iformall/domain/po/sm/PreviewParam.java
  13. +122
    -0
      suimangService/src/main/java/com/iformall/domain/po/sm/UserConsumptionPackage.java
  14. +113
    -64
      suimangService/src/main/java/com/iformall/domain/po/sm/UserCreateVideoNum.java
  15. +84
    -0
      suimangService/src/main/java/com/iformall/domain/po/sm/UserCreditLog.java
  16. +124
    -0
      suimangService/src/main/java/com/iformall/domain/po/sm/UserPackageDetail.java
  17. +46
    -0
      suimangService/src/main/java/com/iformall/domain/po/sm/UserTimeConfig.java
  18. +12
    -9
      suimangService/src/main/java/com/iformall/domain/po/sm/VoiceInfo.java
  19. +12
    -24
      suimangService/src/main/java/com/iformall/domain/po/sm/VoiceLanguage.java
  20. +3
    -1
      suimangService/src/main/java/com/iformall/domain/po/sm/VoiceMaterial.java
  21. +34
    -0
      suimangService/src/main/java/com/iformall/enums/sm/EnumHumanTemplateType.java
  22. +33
    -0
      suimangService/src/main/java/com/iformall/enums/sm/EnumLanguageType.java
  23. +38
    -0
      suimangService/src/main/java/com/iformall/enums/sm/EnumLogType.java
  24. +34
    -0
      suimangService/src/main/java/com/iformall/enums/sm/EnumPackageDetailType.java
  25. +36
    -0
      suimangService/src/main/java/com/iformall/enums/sm/EnumPackageType.java
  26. +34
    -0
      suimangService/src/main/java/com/iformall/enums/sm/EnumResolutionRatioType.java
  27. +33
    -0
      suimangService/src/main/java/com/iformall/enums/sm/EnumSoundType.java
  28. +3
    -1
      suimangService/src/main/java/com/iformall/mapper/InviteCodeMapper.java
  29. +9
    -0
      suimangService/src/main/java/com/iformall/mapper/MusicInfoServiceMapper.java
  30. +10
    -0
      suimangService/src/main/java/com/iformall/mapper/UserConsumptionPackageMapper.java
  31. +1
    -1
      suimangService/src/main/java/com/iformall/mapper/UserCreateVideoNumMapper.java
  32. +11
    -0
      suimangService/src/main/java/com/iformall/mapper/UserCreditLogMapper.java
  33. +11
    -0
      suimangService/src/main/java/com/iformall/mapper/UserPackageDetailMapper.java
  34. +7
    -0
      suimangService/src/main/java/com/iformall/mapper/UserTimeConfigServiceMapper.java
  35. +1
    -1
      suimangService/src/main/java/com/iformall/mapper/VoiceLanguageMapper.java
  36. +9
    -3
      suimangService/src/main/java/com/iformall/service/sm/MusicInfoService.java
  37. +6
    -0
      suimangService/src/main/java/com/iformall/service/sm/PhotoSpeakVideoService.java
  38. +15
    -0
      suimangService/src/main/java/com/iformall/service/sm/UserConsumptionPackageService.java
  39. +3
    -1
      suimangService/src/main/java/com/iformall/service/sm/UserCreateVideoNumService.java
  40. +8
    -0
      suimangService/src/main/java/com/iformall/service/sm/UserCreditLogService.java
  41. +11
    -0
      suimangService/src/main/java/com/iformall/service/sm/UserPackageDetailService.java
  42. +29
    -1
      suimangService/src/main/java/com/iformall/service/sm/impl/InviteCodeInfoServiceImpl.java
  43. +1
    -4
      suimangService/src/main/java/com/iformall/service/sm/impl/InviteCodeServiceImpl.java
  44. +61
    -5
      suimangService/src/main/java/com/iformall/service/sm/impl/MusicInfoServiceImpl.java
  45. +167
    -56
      suimangService/src/main/java/com/iformall/service/sm/impl/PhotoSpeakVideoServiceImpl.java
  46. +78
    -0
      suimangService/src/main/java/com/iformall/service/sm/impl/UserConsumptionPackageImpl.java
  47. +70
    -19
      suimangService/src/main/java/com/iformall/service/sm/impl/UserCreateVideoNumServiceImpl.java
  48. +19
    -0
      suimangService/src/main/java/com/iformall/service/sm/impl/UserCreditLogServiceImpl.java
  49. +23
    -0
      suimangService/src/main/java/com/iformall/service/sm/impl/UserPackageDetailServiceImpl.java
  50. +9
    -7
      suimangService/src/main/java/com/iformall/service/sm/impl/VoiceInfoServiceImpl.java
  51. +1
    -1
      suimangService/src/main/java/com/iformall/service/sm/impl/VoiceLanguageServiceImpl.java
  52. +1
    -0
      suimangService/src/main/java/com/iformall/sm/AiPhotoSpeakResult.java
  53. +1
    -0
      suimangService/src/main/java/com/iformall/sm/AiPreviewResult.java
  54. +62
    -6
      suimangService/src/main/java/com/iformall/sm/AiVideoHelper.java
  55. +9
    -0
      suimangService/src/main/java/com/iformall/sm/AiVideoHqParam.java
  56. +19
    -0
      suimangService/src/main/java/com/iformall/sm/AiVideoHqResult.java
  57. +10
    -0
      suimangService/src/main/resources/mapper/InviteCodeMapper.xml
  58. +22
    -0
      suimangService/src/main/resources/mapper/MusicServiceMapper.xml
  59. +20
    -2
      suimangService/src/main/resources/mapper/PhotoSpeakVideoMapper.xml
  60. +6
    -2
      suimangService/src/main/resources/mapper/UserCreateVideoNumMapper.xml

+ 2
- 0
suimangAdmin/src/main/resources/db/migration/V202306271409_voice_material.sql Parādīt failu

@@ -0,0 +1,2 @@
ALTER TABLE `mallink_suimang_test`.`voice_material`
ADD COLUMN `type` int NULL COMMENT '1-上传、2-录音' AFTER `type`;

+ 2
- 0
suimangAdmin/src/main/resources/db/migration/V202306281655_photo_speak_video.sql Parādīt failu

@@ -0,0 +1,2 @@
ALTER TABLE `mallink_suimang_test`.`photo_speak_video`
ADD COLUMN `save_dir` varchar(255) NULL COMMENT '超分的视频路径' AFTER `music_id`;

+ 8
- 0
suimangAdmin/src/main/resources/db/migration/V202306291619_voice_info.sql Parādīt failu

@@ -0,0 +1,8 @@
ALTER TABLE `mallink_suimang_test`.`photo_speak_video`
ADD COLUMN `video_hy_status` smallint DEFAULT 0 NULL COMMENT '视频超分状态' AFTER `video_status`;

ALTER TABLE `mallink_suimang_test`.`voice_info`
ADD COLUMN `age_type` smallint NULL COMMENT '年纪类型 EnumAgeType' AFTER `sex`;

ALTER TABLE `mallink_suimang_test`.`photo_speak_video`
ADD COLUMN `is_hy` smallint NULL DEFAULT 0 COMMENT '是否超分(1、是,2、否)' AFTER `video_hy_status`,

+ 105
- 6
suimangCApi/src/main/java/com/iformall/controller/PhotoSpeakVideoController.java Parādīt failu

@@ -6,11 +6,10 @@ import com.iformall.annotation.AuthIgnore;
import com.iformall.common.ErrorCode;
import com.iformall.common.ResultData;
import com.iformall.domain.po.base.BaseEntity;
import com.iformall.domain.po.sm.MusicInfo;
import com.iformall.domain.po.sm.PhotoSpeakVideo;
import com.iformall.domain.po.sm.UserMouldVideo;
import com.iformall.domain.po.sm.VoiceInfo;
import com.iformall.domain.po.sm.*;
import com.iformall.enums.EnumMouldSendType;
import com.iformall.enums.EnumVideoStatus;
import com.iformall.enums.EnumaMouldPatchStatus;
import com.iformall.exception.MallinkException;
import com.iformall.service.sm.*;
import com.iformall.video.VideoFactory;
@@ -64,6 +63,9 @@ public class PhotoSpeakVideoController extends BaseController {
@Autowired
private MusicInfoService musicInfoService;

@Autowired
private VoiceMaterialService voiceMaterialService;

@ApiOperation("分页列表接口")
@GetMapping("list")
@ApiImplicitParams({
@@ -94,6 +96,10 @@ public class PhotoSpeakVideoController extends BaseController {
VoiceInfo voiceInfo = voiceInfoService.getById(photoSpeakVideo.getVoiceMouldId());
photoSpeakVideo.setVoiceInfo(voiceInfo);
}
if(photoSpeakVideo.getVoiceMaterialId() != null){
VoiceMaterial voiceMaterial = voiceMaterialService.getById(photoSpeakVideo.getVoiceMaterialId());
photoSpeakVideo.setVoiceMaterial(voiceMaterial);
}
return new ResultData(photoSpeakVideo);
}

@@ -301,10 +307,103 @@ public class PhotoSpeakVideoController extends BaseController {

@AuthIgnore
@GetMapping(value = "/music")
@ApiImplicitParams({
@ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
@ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)})
@ApiOperation("获取默认音乐")
public ResultData music() {
List<MusicInfo> music = musicInfoService.music();
public ResultData music(@ModelAttribute MusicInfo record, Integer pageNum, Integer pageSize) {
logger.debug("[" + getIpAddr() + "] UserMouldVideoController::userList");
if (record == null) record = new MusicInfo();
PageInfo<MusicInfo> music = musicInfoService.music(pageNum, pageSize, record);
return new ResultData(music);
}

@GetMapping(value = "/userMusic")
@ApiImplicitParams({
@ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
@ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)})
@ApiOperation("获取用户音乐")
public ResultData userMusic(@ModelAttribute MusicInfo record, Integer pageNum, Integer pageSize) {
logger.debug("[" + getIpAddr() + "] UserMouldVideoController::userMusic");
if (record == null) record = new MusicInfo();
record.setUserId(getMemberId());
PageInfo<MusicInfo> music = musicInfoService.userMusic(pageNum, pageSize, record);
return new ResultData(music);
}

@ApiOperation("新增接口")
@PostMapping("/save")
public ResultData save(@RequestBody MusicInfo record) {
logger.debug("[" + getIpAddr() + "] UserMouldVideoController::save");
if (record == null) record = new MusicInfo();
record.setType(EnumMouldSendType.build.getCode());
record.setUserId(getMemberId());
if (record.getTitle() == null) {
record.setTitle("用户自建");
}
return musicInfoService.saveOrUpdate(record);
}

@ApiOperation("根据id删除接口")
@GetMapping("/delete")
@ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true)
public ResultData delete(Long id) {
logger.debug("[" + getIpAddr() + "] PersonPhotoController::delete");
if(id == null){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"参数为空");
}
MusicInfo musicInfo = musicInfoService.getById(id);
if(musicInfo == null){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未找到数据");
}
if(!musicInfo.getUserId().equals(getMemberId())){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未找到用户数据");
}
musicInfoService.deleteById(id);
return new ResultData();
}

@ApiOperation("视频超分")
@GetMapping("/videoHy")
@ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true)
public ResultData videoHy(Long id) {
logger.debug("[" + getIpAddr() + "] PersonPhotoController::videoHy");
if(id == null){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"参数为空");
}
PhotoSpeakVideo speakVideo = photoSpeakVideoService.getById(id);
if(speakVideo == null){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未找到数据");
}
if (StringUtils.isEmpty(speakVideo.getSaveDir())){
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"save_dir为空");
}
if(!speakVideo.getUserId().equals(getMemberId())){
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"未找到用户数据");
}

if(!EnumVideoStatus.upload_success.getCode().equals(speakVideo.getVideoStatus())){
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"原始视频生成未完成");
}

if(EnumVideoStatus.ing.getCode().equals(speakVideo.getVideoHyStatus())
|| EnumVideoStatus.success.getCode().equals(speakVideo.getVideoHyStatus())
|| EnumVideoStatus.upload_ing.getCode().equals(speakVideo.getVideoHyStatus())
|| EnumVideoStatus.upload_fail.getCode().equals(speakVideo.getVideoHyStatus())){
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"高清晰度视频生成中");
}
if(EnumVideoStatus.upload_success.getCode().equals(speakVideo.getVideoHyStatus())){
//上传阿里云状态 生成成功
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"高清晰度视频已生成完成");
}

speakVideo.setVideoStatus(EnumVideoStatus.ing.getCode());
speakVideo.setVideoMsg("");
speakVideo.setUpdateDate(new Date());
photoSpeakVideoService.updateById(speakVideo);

photoSpeakVideoService.videoHy(speakVideo,true);
return new ResultData();
}

}

+ 107
- 0
suimangCApi/src/main/java/com/iformall/controller/SDKController.java Parādīt failu

@@ -0,0 +1,107 @@
package com.iformall.controller;

import com.alibaba.fastjson.JSONObject;
import com.iformall.common.ErrorCode;
import com.iformall.common.ResultData;
import com.iformall.domain.po.sm.PhotoSpeakVideo;
import com.iformall.domain.po.sm.PreviewParam;
import com.iformall.enums.EnumVideoStatus;
import com.iformall.service.sm.PhotoSpeakVideoService;
import com.iformall.service.sm.PersonPhotoService;
import com.iformall.service.sm.VoiceInfoService;
import com.iformall.sm.AiPreviewParam;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

/**
* 对外开放的 API 接口
*/
@RestController
@RequestMapping("/api/open")
@Api(description = "对外开放的 API 接口")
public class SDKController extends BaseController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Autowired
private PersonPhotoService personPhotoService;
@Autowired
private VoiceInfoService voiceInfoService;
@Autowired
private PhotoSpeakVideoService photoSpeakVideoService;

@ApiOperation("图片质量审核接口")
@PostMapping("checkPhoto")
@ApiImplicitParam(name = "material", value = "material", dataType = "String", paramType = "query", required = true)
public ResultData checkPhoto(String material) {
logger.debug("[" + getIpAddr() + "] SDKController::checkPhoto");
if (StringUtils.isBlank(material)) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "素材为空");
}
ResultData data = personPhotoService.checkPhoto(material);
if (data.code == 2000) {
return new ResultData();
}
return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(), data.message);
}

@ApiOperation("TTS音色预览")
@PostMapping("/preview")
public ResultData voicePreview(@RequestBody PreviewParam previewParam) {
logger.debug("[" + getIpAddr() + "] SDKController::voicePreview");
if (previewParam.getVoiceId() == null) {
return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(), "音色ID不能为空");
}
if (StringUtils.isBlank(previewParam.getGenTxt())) {
return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(), "需要生成的文字不能为空");
}
AiPreviewParam param = new AiPreviewParam();
param.setVoice_id(previewParam.getVoiceId());
param.setVoice_style(previewParam.getVoiceStyle());
param.setGen_txt(previewParam.getGenTxt());
param.setGender(previewParam.getGender());
return new ResultData(voiceInfoService.voicePreview(param));
}

@ApiOperation("生成视频")
@PostMapping("/createVideo")
public ResultData create(@RequestBody PhotoSpeakVideo record) {
logger.debug("[" + getIpAddr() + "] MouldPatchController::saveOrUpdate");
if (record.getId() == null) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL);
}
PhotoSpeakVideo mouldVideo = photoSpeakVideoService.getById(record.getId());
logger.info("TEST--" + JSONObject.toJSONString(mouldVideo));
if (mouldVideo == null || !mouldVideo.getUserId().equals(getMemberId())) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "未找到用户数据");
}
if (EnumVideoStatus.ing.getCode().equals(mouldVideo.getVideoStatus())
|| EnumVideoStatus.success.getCode().equals(mouldVideo.getVideoStatus())
|| EnumVideoStatus.upload_ing.getCode().equals(mouldVideo.getVideoStatus())
|| EnumVideoStatus.upload_fail.getCode().equals(mouldVideo.getVideoStatus())) {
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "视频生成中");
}
if (EnumVideoStatus.upload_success.getCode().equals(mouldVideo.getVideoStatus())) {
//上传阿里云状态 生成成功
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "视频已生成完成");
}
PhotoSpeakVideo mouldVideoUpd = new PhotoSpeakVideo();
mouldVideoUpd.setId(record.getId());
mouldVideoUpd.setVideoStatus(EnumVideoStatus.ing.getCode());
mouldVideoUpd.setVideoMsg("");
mouldVideoUpd.setCreateVideoDate(new Date());
photoSpeakVideoService.saveOrUpdate(mouldVideoUpd);
photoSpeakVideoService.createVideo(mouldVideo, true);
return new ResultData();
}
}

+ 4
- 1
suimangCApi/src/main/java/com/iformall/controller/VoiceMaterialController.java Parādīt failu

@@ -69,7 +69,7 @@ public class VoiceMaterialController extends BaseController {
public ResultData save(@RequestBody VoiceMaterial record) {
logger.debug("[" + getIpAddr() + "] VoiceMaterialController::save");
if(record == null)record = new VoiceMaterial();
record.setSendType(EnumMouldSendType.build.getCode());
// record.setSendType(EnumMouldSendType.build.getCode());
record.setUserId(getMemberId());
if(StringUtils.isBlank(record.getVideoId())){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"音频为空");
@@ -77,6 +77,9 @@ public class VoiceMaterialController extends BaseController {
if(record.getTitle() == null){
record.setTitle("用户自建");
}
if(record.getSendType() == null){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"上传音频类型不能为空");
}
record.setPrice(0);
record.setSalePrice(0);
record.setStatus(EnumaMouldPatchStatus.put_on.getCode());


+ 14
- 0
suimangCApi/src/main/java/com/iformall/controller/WxUserGrantController.java Parādīt failu

@@ -12,6 +12,7 @@ import com.iformall.service.*;
import com.iformall.service.cuser.CUserServiceFactory;
import com.iformall.service.sm.InviteCodeInfoService;
import com.iformall.service.sm.InviteCodeService;
import com.iformall.service.sm.UserConsumptionPackageService;
import com.iformall.service.sm.UserCreateVideoNumService;
import com.iformall.utils.Constant;
import com.iformall.utils.PasswordHelper;
@@ -95,6 +96,9 @@ public class WxUserGrantController extends BaseController {
@Autowired
private InviteCodeInfoService inviteCodeInfoService;

@Autowired
private UserConsumptionPackageService userConsumptionPackageService;

@AuthIgnore
@ApiOperation("验证码")
@GetMapping("/captcha.jpg")
@@ -361,6 +365,7 @@ public class WxUserGrantController extends BaseController {
// }
// if(isValidCode) {
basicInfo = wxCUserBasicInfoService.register(getTenantInfo(),phone,password);

Boolean aBoolean = userCreateVideoNumService.initializationUserCreateVideoNum(basicInfo.getId());
if (!aBoolean){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "初始化创建视频时间表失败");
@@ -409,6 +414,7 @@ public class WxUserGrantController extends BaseController {
// }
// if(isValidCode) {
basicInfo = wxCUserBasicInfoService.registerEmail(getTenantInfo(),email,password);

Boolean aBoolean = userCreateVideoNumService.initializationUserCreateVideoNum(basicInfo.getId());
if (!aBoolean){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "初始化创建视频时间表失败");
@@ -709,4 +715,12 @@ public class WxUserGrantController extends BaseController {
return new ResultData(userBasicInfo);
}

@AuthIgnore
@ApiOperation("套餐档次查询")
@GetMapping("/getPackageInfo")
public ResultData getPackageInfo() {
logger.debug("[" + getIpAddr() + "] WxUserGrantController::getPackageInfo");
return new ResultData(userConsumptionPackageService.getPackageInfo());
}

}

+ 35
- 12
suimangSchedule/src/main/java/com/iformall/schedule/PhotoSpeakSchedule.java Parādīt failu

@@ -112,26 +112,49 @@ public class PhotoSpeakSchedule {


/**
* 统计用户创建视频成功的时长
* 获取超分时长和大小
*/
@Scheduled(cron = "0 */30 * * * *?") // 每半小时检查一次
public void userCreateVideoTimeSchedule() {
List<PhotoSpeakVideo> videos = photoSpeakVideoService.getUploadSuccessList();
@Scheduled(cron = "0 1/5 * * * *?") // 每五分钟检查一次
public void userVideoHyDetailSchedule() {
List<PhotoSpeakVideo> videos = photoSpeakVideoService.getUpLoadHyIngList();
if (videos != null && videos.size() > 0) {
HashMap<Long, Long> map = new HashMap<>();
for (PhotoSpeakVideo video : videos) {
try {
if (map.get(video.getUserId()) == null) {
map.put(video.getUserId(), Long.parseLong(video.getVideoTime()));
} else {
Long time = map.get(video.getUserId());
map.put(video.getUserId(), Long.parseLong(video.getVideoTime()) + time);
VideUploadResult videoDetail = videoFactory.getExcutor(videoType).getVideoDetailWithCache(video.getVideoId());
if (videoDetail.isSuccess()
&& StringUtils.isNotBlank(videoDetail.getDuration())
&& !"0.0".equals(videoDetail.getDuration())) {
video.setCoverImg(videoDetail.getCoverURL());
video.setVideoPlayUrl(videoDetail.getVideoUrl());
video.setVideoTime(videoDetail.getDuration());
video.setVideoSize(videoDetail.getSize());
video.setVideoHyStatus(EnumVideoStatus.upload_success.getCode());
photoSpeakVideoService.updateById(video);
}
} catch (Exception e) {
logger.error("TtCouponVideoSchedule error.couponVideoSchedule:" + video.getId(), e);
logger.error("TtCouponVideoSchedule error.couponVideoSchedule:"+video.getId(),e);
}
}
}
}

/**
* 超分生成视频
*/
@Scheduled(cron = "0 20/30 * * * *?") // 每半小时检查一次
public void photoSpeakCreateHySchedule() {
PhotoSpeakVideo videoUpd = new PhotoSpeakVideo();
videoUpd.setVideoStartDate(DateUtils.getHourDateBefore(2,new Date()));
videoUpd.setVideoHyStatus(EnumVideoStatus.fail.getCode());
List<PhotoSpeakVideo> list = photoSpeakVideoService.findList(videoUpd);
if (list != null && list.size() > 0) {
for (PhotoSpeakVideo video : list) {
try {
photoSpeakVideoService.videoHy(video,false);
} catch (Exception e) {
logger.error("TtCouponVideoSchedule error.couponVideoSchedule:"+video.getId(),e);
}
}
userCreateVideoNumService.uploadUserCreateVideoNum(map);
}
}
}

+ 4
- 0
suimangService/src/main/java/com/iformall/domain/po/WxCUserBasicInfo.java Parādīt failu

@@ -215,6 +215,10 @@ public class WxCUserBasicInfo extends TenantEntityWithoutFinalTenantId {
@io.swagger.annotations.ApiModelProperty(value="操作人ID",name="operatorId")
private Long operatorId;

@TableField(exist = false)
@io.swagger.annotations.ApiModelProperty(value="套餐类型(1、基础版,2、专业版,3、加强版)",name="packageType")
private Integer packageType;

public void protectInfos() {
if(StringUtils.isNotBlank(this.password)) {
setPassword("保密");


+ 19
- 12
suimangService/src/main/java/com/iformall/domain/po/sm/MusicInfo.java Parādīt failu

@@ -1,34 +1,36 @@
package com.iformall.domain.po.sm;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date;
import java.io.Serializable;

import com.iformall.domain.po.base.TenantEntity;
import lombok.Data;


/**
* @Description
* @Author LRH
* @Date 2023-06-13
*/
@Data
@TableName("music_info" )
public class MusicInfo implements Serializable {

private static final long serialVersionUID = 6934358084213154592L;
public class MusicInfo extends TenantEntity {

/**
* 主键ID
*/
@TableId
private Integer id;
private Long id;

/**
* 音乐名称
*/
private String name;

private Long userId;

/**
* 类型(1、系统音乐,2、用户上传)
*/
private Integer type;

/**
* 音乐链接
*/
@@ -37,12 +39,12 @@ public class MusicInfo implements Serializable {
/**
* 音乐大小
*/
private Integer size;
private Long size;

/**
* 音乐时长(s)
*/
private Integer time;
private Double time;

/**
* 创建时间
@@ -59,4 +61,9 @@ public class MusicInfo implements Serializable {
*/
private Integer isDel;

private String title;

@TableField(exist = false)
private String voiceId;

}

+ 6
- 0
suimangService/src/main/java/com/iformall/domain/po/sm/PhotoSpeakVideo.java Parādīt failu

@@ -152,5 +152,11 @@ public class PhotoSpeakVideo extends TenantEntity {
private List<Integer> videoStatuss;

private Long musicId;

private String saveDir;

private Integer videoHyStatus;

private Integer isHy;//是否超分(1、是,0、否)
}

+ 11
- 0
suimangService/src/main/java/com/iformall/domain/po/sm/PreviewParam.java Parādīt failu

@@ -0,0 +1,11 @@
package com.iformall.domain.po.sm;

import lombok.Data;

@Data
public class PreviewParam {
private String genTxt;
private String voiceId;
private String voiceStyle;
private String gender;
}

+ 122
- 0
suimangService/src/main/java/com/iformall/domain/po/sm/UserConsumptionPackage.java Parādīt failu

@@ -0,0 +1,122 @@
package com.iformall.domain.po.sm;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date;
import java.io.Serializable;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;


/**
* @Description
* @Author LRH
* @Date 2023-06-15
*/
@Data
@TableName("user_consumption_package" )
public class UserConsumptionPackage implements Serializable {

private static final long serialVersionUID = 7987400196899039170L;

/**
* 主键ID
*/
@TableId
private Integer id;

/**
* 租户ID
*/
private String tenantId;

/**
* 父租户ID
*/
private String parentTenantId;

/**
* 套餐类型(1、基础版,2、专业版,3、加强版)
*/
private Integer type;
@TableField(exist = false)
private String typeDesc;

/**
* 英文名字
*/
private String englishName;

/**
* 美元
*/
private BigDecimal dollar;

/**
* 人民币
*/
private BigDecimal rmb;

/**
* 积分
*/
private Integer credit;

/**
* 有效期时长(天)
*/
private Integer validityDuration;

/**
* 邀请用户送的积分
*/
private Integer inviteUserCredit;

/**
* 照片说话单价(积分)
*/
private Integer videoPrice;

/**
* ai生成照片单价(积分)
*/
private Integer photoPrice;

/**
* 口播的单价(积分)
*/
private Integer talkPrice;

/**
* 照片说话单价、口播的单价收费时长
*/
private Integer chargeTime;

/**
* 创建时间
*/
private Date createDate;

/**
* 更新时间
*/
private Date updateDate;

/**
* 是否删除1是0否
*/
private Integer isDel;

/**
* 套餐颜色
*/
private String color;

/**
* 详细配置信息
*/
@TableField(exist = false)
List<UserPackageDetail> userPackageDetails;
}

+ 113
- 64
suimangService/src/main/java/com/iformall/domain/po/sm/UserCreateVideoNum.java Parādīt failu

@@ -1,77 +1,126 @@
package com.iformall.domain.po.sm;


import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date;
import java.io.Serializable;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
* @author LRH
* @date Wed Jun 07 17:06:17 CST 2023
* @describe 用户创建视频时间表
* @Description
* @Author LRH
* @Date 2023-06-15
*/
@Data
@TableName("user_create_video_num")
@TableName("user_create_video_num" )
public class UserCreateVideoNum implements Serializable {
private static final long serialVersionUID = 6845742086152117203L;
/**
* 主键ID
*/

private static final long serialVersionUID = 4995993777308528646L;

/**
* 主键ID
*/
@TableId
private Long id;
/**
* 租户ID
*/
private String tenantId;
/**
* 父租户ID
*/
private String parentTenantId;
/**
* 用户id(wx_c_user_basic_info.id)
*/
private Long userId;
/**
* 剩余条数
*/
private Integer residueNum;
/**
* 总条数
*/
private Integer residueTotal;
/**
* 用户生成视频的个数
*/
private Integer createNum;
/**
* 用户生成视频的总时长(s)
*/
private Long createAllTime;
/**
* 总时长(单位:s)
*/
private Long totalTime;
/**
* 剩余时长(单位:s)
*/
private Long residueTime;
/**
* 有效期
*/
private Date effectiveDate;
/**
* 创建时间
*/
private Date createDate;
/**
* 更新时间
*/
private Date updateDate;
/**
* 是否删除1是0否
*/
private long isDel;
private Long id;

/**
* 租户ID
*/
private String tenantId;

/**
* 父租户ID
*/
private String parentTenantId;

/**
* 用户id(wx_c_user_basic_info.id)
*/
private Long userId;

/**
* 套餐id(user_consumption_package.id)
*/
private Integer packageId;

/**
* 剩余条数
*/
private Integer residueNum;

/**
* 总条数
*/
private Integer residueTotal;

/**
* 用户生成视频的个数
*/
private Integer createNum;

/**
* 用户生成视频的总时长(s)
*/
private float createAllTime;

/**
* 用户拥有总时长(单位:s)
*/
private Long totalTime;

/**
* 用户剩余时长(单位:s)
*/
private Long residueTime;

/**
* 有效期
*/
private Date effectiveDate;

/**
* 用户总积分
*/
private Integer userCredits;
/**
* 用户剩余积分
*/
private Integer residueCredits;

/**
* 邀请人送的基础积分(暂时默认每个档次都是10积分)
*/
private Integer inviteBaseCredits;

/**
* 照片说话的单价/min
*/
private Integer videoPrice;

/**
* ai生成照片的单价/min
*/
private Integer photoPrice;

/**
* 生成口播的单价/min
*/
private Integer talkPrice;

/**
* 创建时间
*/
private Date createDate;

/**
* 更新时间
*/
private Date updateDate;

/**
* 是否删除1是0否
*/
private Integer isDel;

}

+ 84
- 0
suimangService/src/main/java/com/iformall/domain/po/sm/UserCreditLog.java Parādīt failu

@@ -0,0 +1,84 @@
package com.iformall.domain.po.sm;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date;
import java.io.Serializable;

import io.swagger.models.auth.In;
import lombok.Data;


/**
* @Description
* @Author LRH
* @Date 2023-06-15
*/
@Data
@TableName("user_credit_log" )
public class UserCreditLog implements Serializable {

private static final long serialVersionUID = 8595480777599856051L;

/**
* 主键ID
*/
@TableId
private Long id;

/**
* 租户ID
*/
private String tenantId;

/**
* 父租户ID
*/
private String parentTenantId;

/**
* 用户id(wx_c_user_basic_info.id)
*/
private Long userId;

/**
* 视频id 或者 图片id 或者 口播id
*/
private Long videoOrPhotoOrTalkId;

/**
* 订单id
*/
private Integer orderId;

/**
* 类型(1、注册,2、邀请新用户,3、套餐增加,4、照片说话,5、AI生成照片,6、口播)
*/
private Integer type;

/**
* 积分加减情况
*/
private float credits;

/**
* 备注
*/
private String remark;

/**
* 创建时间
*/
private Date createDate;

/**
* 更新时间
*/
private Date updateDate;

/**
* 是否删除1是0否
*/
private Integer isDel;

}

+ 124
- 0
suimangService/src/main/java/com/iformall/domain/po/sm/UserPackageDetail.java Parādīt failu

@@ -0,0 +1,124 @@
package com.iformall.domain.po.sm;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date;
import java.io.Serializable;
import lombok.Data;


/**
* @Description
* @Author LRH
* @Date 2023-06-16
*/
@Data
@TableName("user_package_detail" )
public class UserPackageDetail implements Serializable {

private static final long serialVersionUID = 8868339443558940187L;

/**
* 主键ID
*/
@TableId
private Integer id;

/**
* 租户ID
*/
private String tenantId;

/**
* 父租户ID
*/
private String parentTenantId;

/**
* 套餐类型(1、图片说话,2、口播)
*/
private Integer detailType;
@TableField(exist = false)
private String detailTypeDesc;

/**
* 套餐id(user_consumption_package.id)
*/
private Integer packageId;

/**
* 是否有水印(1-是,2-否)
*/
private Integer watermark;
@TableField(exist = false)
private String watermarkDesc;

/**
* 语言(1:50+语言)
*/
private Integer language;
@TableField(exist = false)
private String languageDesc;

/**
* 声音(1:400+声音)
*/
private Integer sound;
@TableField(exist = false)
private String soundDesc;

/**
* 单个视频时长(s)
*/
private Integer videoTime;

/**
* AI生成人像(1-是、2-否)
*/
private Integer aiPortrait;
@TableField(exist = false)
private String aiPortraitDesc;

/**
* 照片唱歌(1-是、2-否)
*/
private Integer photoSing;
@TableField(exist = false)
private String photoSingDesc;

/**
* AI生成脚本次数
*/
private Integer aiCreateTime;

/**
* 视频分辨率(1:720p、2:1080p)
*/
private Integer resolutionRatio;
@TableField(exist = false)
private String resolutionRatioDesc;

/**
* 数字人模板(1-免费,2-VIP)
*/
private Integer humanTemplate;
@TableField(exist = false)
private String humanTemplateDesc;

/**
* 创建时间
*/
private Date createDate;

/**
* 更新时间
*/
private Date updateDate;

/**
* 是否删除1是0否
*/
private Integer isDel;

}

+ 46
- 0
suimangService/src/main/java/com/iformall/domain/po/sm/UserTimeConfig.java Parādīt failu

@@ -0,0 +1,46 @@
package com.iformall.domain.po.sm;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date;
import java.io.Serializable;

import io.swagger.models.auth.In;
import lombok.Data;


/**
* @Description
* @Author LRH
* @Date 2023-06-13
*/
@Data
@TableName("user_time_config" )
public class UserTimeConfig implements Serializable {

private static final long serialVersionUID = 2953038588956565523L;

@TableId
private Integer id;

/**
* 用户类型(0-注册用户,1-邀请用户)
*/
private Integer userType;

/**
* 默认时长(s)
*/
private Long time;

private String tenantId;

private String parentTenantId;

private Date createDate;

private Date updateDate;

private Integer isDel;

}

+ 12
- 9
suimangService/src/main/java/com/iformall/domain/po/sm/VoiceInfo.java Parādīt failu

@@ -2,7 +2,11 @@ package com.iformall.domain.po.sm;


import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.iformall.domain.po.base.TenantEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

import java.util.Date;
import java.util.List;
@@ -10,8 +14,11 @@ import java.util.List;
/**
* 声音表
*/
@TableName(value = "voice_info")
@Data
public class VoiceInfo {
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class VoiceInfo extends TenantEntity {
/**
* 主键ID
*/
@@ -21,14 +28,6 @@ public class VoiceInfo {
*/
private Long languageId;
/**
* 租户ID
*/
private String tenantId;
/**
* 父租户ID
*/
private String parentTenantId;
/**
* 性别
*/
private Integer sex;
@@ -74,4 +73,8 @@ public class VoiceInfo {
* 是否删除1是0否
*/
private Integer isDel;
/**
* 年纪类型 EnumAgeType
*/
private Integer ageType;
}

+ 12
- 24
suimangService/src/main/java/com/iformall/domain/po/sm/VoiceLanguage.java Parādīt failu

@@ -1,7 +1,11 @@
package com.iformall.domain.po.sm;


import com.baomidou.mybatisplus.annotation.TableName;
import com.iformall.domain.po.base.TenantEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

import java.util.Date;
import java.util.Objects;
@@ -9,21 +13,16 @@ import java.util.Objects;
/**
* 语种表
*/
@TableName(value = "voice_language")
@Data
public class VoiceLanguage implements Comparable {
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class VoiceLanguage extends TenantEntity {

/**
* 主键ID
*/
private Long id;
/**
* 租户ID
*/
private String tenantId;
/**
* 父租户ID
*/
private String parentTenantId;
/**
* 国家code
*/
@@ -40,6 +39,10 @@ public class VoiceLanguage implements Comparable {
*
*/
private String name;
/**
*
*/
private String chineseName;
/**
* 图片
*/
@@ -57,19 +60,4 @@ public class VoiceLanguage implements Comparable {
*/
private Integer isDel;

@Override
public int compareTo(Object obj) {
// 判断是否是学生类型
if (obj instanceof VoiceLanguage) {
VoiceLanguage s = (VoiceLanguage) obj;
// 如果是学生类型,如果学号相等,则不加入Set
if (Objects.equals(s.getLanguage(), this.getLanguage()) && Objects.equals(s.getCountry(), this.getCountry())) {
return 0;
} else {
return 1;
}
} else {
return 0;
}
}
}

+ 3
- 1
suimangService/src/main/java/com/iformall/domain/po/sm/VoiceMaterial.java Parādīt failu

@@ -118,5 +118,7 @@ public class VoiceMaterial extends TenantEntity {

@TableField(exist = false)
private List<Integer> sendTypes;

private Integer type;

}

+ 34
- 0
suimangService/src/main/java/com/iformall/enums/sm/EnumHumanTemplateType.java Parādīt failu

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

/**
* 数字人模板
*/
public enum EnumHumanTemplateType {
FREE(1, "免费"),
VIP(2, "VIP");

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

private Integer code;
private String message;

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

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}
}

+ 33
- 0
suimangService/src/main/java/com/iformall/enums/sm/EnumLanguageType.java Parādīt failu

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

/**
* 语言
*/
public enum EnumLanguageType {
LANGUAGE(1, "50+");

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

private Integer code;
private String message;

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

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}
}

+ 38
- 0
suimangService/src/main/java/com/iformall/enums/sm/EnumLogType.java Parādīt failu

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

/**
* 日志类型
*/
public enum EnumLogType {
REGISTER_USER(1, "注册"),
INVITE_USER(2, "邀请新用户"),
BUY_PACKAGE(3, "套餐增加"),
PHOTO_SPEAK(4, "照片说话"),
AI_PHOTO(5, "AI生成照片"),
TALK(6, "口播");

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

private Integer code;
private String message;

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

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}
}

+ 34
- 0
suimangService/src/main/java/com/iformall/enums/sm/EnumPackageDetailType.java Parādīt failu

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

/**
* 套餐详细类型
*/
public enum EnumPackageDetailType {
PHOTO_SPEAK(1, "照片说话"),
TALK(2, "口播");

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

private Integer code;
private String message;

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

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}
}

+ 36
- 0
suimangService/src/main/java/com/iformall/enums/sm/EnumPackageType.java Parādīt failu

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

/**
* 套餐类型
*/
public enum EnumPackageType {
BASIC(1, "基础版"),
MAJOR(2, "专业版"),
ENHANCE(3, "加强版")
;

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

private Integer code;
private String message;

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

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}
}

+ 34
- 0
suimangService/src/main/java/com/iformall/enums/sm/EnumResolutionRatioType.java Parādīt failu

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

/**
* 分辨率
*/
public enum EnumResolutionRatioType {
RESOLUTION_RATIO_720P(1, "720p"),
RESOLUTION_RATIO_1080P(2, "1080p");

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

private Integer code;
private String message;

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

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}
}

+ 33
- 0
suimangService/src/main/java/com/iformall/enums/sm/EnumSoundType.java Parādīt failu

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

/**
* 声音
*/
public enum EnumSoundType {
SOUND(1, "400+");

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

private Integer code;
private String message;

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

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}
}

+ 3
- 1
suimangService/src/main/java/com/iformall/mapper/InviteCodeMapper.java Parādīt failu

@@ -4,11 +4,13 @@ import com.iformall.common.CommonMapper;
import com.iformall.domain.po.AliBusinessCircleOrder;
import com.iformall.domain.po.sm.InviteCode;
import com.iformall.service.sm.InviteCodeService;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


public interface InviteCodeMapper extends CommonMapper<InviteCode, String> {
public interface InviteCodeMapper extends CommonMapper<InviteCode, Long> {


void addUseTotal(@Param("id") Long id, @Param("total") Integer total);
}

+ 9
- 0
suimangService/src/main/java/com/iformall/mapper/MusicInfoServiceMapper.java Parādīt failu

@@ -3,6 +3,15 @@ package com.iformall.mapper;
import com.iformall.common.CommonMapper;
import com.iformall.domain.po.MallPermission;
import com.iformall.domain.po.sm.MusicInfo;
import com.iformall.domain.po.sm.PersonPhoto;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface MusicInfoServiceMapper extends CommonMapper<MusicInfo, String> {
List<MusicInfo> findList(MusicInfo record);

void deleteById(@Param("id")Long id);

List<MusicInfo> userMusic(MusicInfo record);
}

+ 10
- 0
suimangService/src/main/java/com/iformall/mapper/UserConsumptionPackageMapper.java Parādīt failu

@@ -0,0 +1,10 @@
package com.iformall.mapper;

import com.iformall.common.CommonMapper;
import com.iformall.domain.po.sm.UserConsumptionPackage;


public interface UserConsumptionPackageMapper extends CommonMapper<UserConsumptionPackage, Long> {


}

+ 1
- 1
suimangService/src/main/java/com/iformall/mapper/UserCreateVideoNumMapper.java Parādīt failu

@@ -7,5 +7,5 @@ import org.apache.ibatis.annotations.Param;
public interface UserCreateVideoNumMapper extends CommonMapper<UserCreateVideoNum, String> {


Boolean addOrSubtractNumberOfTimes(@Param("type") Integer type,@Param("createVideoNum") UserCreateVideoNum createVideoNum);
Boolean addOrSubtractNumberOfTimes(@Param("type") Integer type, @Param("createVideoNum") UserCreateVideoNum createVideoNum, @Param("useCredit") Double useCredit, @Param("time") Double videoTime);
}

+ 11
- 0
suimangService/src/main/java/com/iformall/mapper/UserCreditLogMapper.java Parādīt failu

@@ -0,0 +1,11 @@
package com.iformall.mapper;

import com.iformall.common.CommonMapper;
import com.iformall.domain.po.sm.UserConsumptionPackage;
import com.iformall.domain.po.sm.UserCreditLog;


public interface UserCreditLogMapper extends CommonMapper<UserCreditLog, Long> {


}

+ 11
- 0
suimangService/src/main/java/com/iformall/mapper/UserPackageDetailMapper.java Parādīt failu

@@ -0,0 +1,11 @@
package com.iformall.mapper;

import com.iformall.common.CommonMapper;
import com.iformall.domain.po.sm.UserCreditLog;
import com.iformall.domain.po.sm.UserPackageDetail;


public interface UserPackageDetailMapper extends CommonMapper<UserPackageDetail, Long> {


}

+ 7
- 0
suimangService/src/main/java/com/iformall/mapper/UserTimeConfigServiceMapper.java Parādīt failu

@@ -0,0 +1,7 @@
package com.iformall.mapper;

import com.iformall.common.CommonMapper;
import com.iformall.domain.po.sm.UserTimeConfig;

public interface UserTimeConfigServiceMapper extends CommonMapper<UserTimeConfig, Long> {
}

+ 1
- 1
suimangService/src/main/java/com/iformall/mapper/VoiceLanguageMapper.java Parādīt failu

@@ -7,7 +7,7 @@ import org.apache.ibatis.annotations.Param;

import java.util.HashSet;

public interface VoiceLanguageMapper extends CommonMapper<VoiceLanguage, String> {
public interface VoiceLanguageMapper extends CommonMapper<VoiceLanguage, Long> {
void saveBatch(@Param("set") HashSet<VoiceLanguage> set);
}


+ 9
- 3
suimangService/src/main/java/com/iformall/service/sm/MusicInfoService.java Parādīt failu

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

import com.github.pagehelper.PageInfo;
import com.iformall.common.ResultData;
import com.iformall.domain.po.sm.MusicInfo;
import com.iformall.domain.po.sm.VoiceMaterial;

import java.util.List;

public interface MusicInfoService {

List<MusicInfo> music();

MusicInfo getById(Long voiceMaterialId);

PageInfo<MusicInfo> music(Integer pageNum, Integer pageSize, MusicInfo record);
ResultData saveOrUpdate(MusicInfo record);

void deleteById(Long id);

PageInfo<MusicInfo> userMusic(Integer pageNum, Integer pageSize, MusicInfo record);
}

+ 6
- 0
suimangService/src/main/java/com/iformall/service/sm/PhotoSpeakVideoService.java Parādīt failu

@@ -59,4 +59,10 @@ public interface PhotoSpeakVideoService {

int updateById(PhotoSpeakVideo video);

void videoHy(PhotoSpeakVideo speakVideo,Boolean flag);

void uploadHyVideo(PhotoSpeakVideo mouldVideo);

List<PhotoSpeakVideo> getUpLoadHyIngList();

}

+ 15
- 0
suimangService/src/main/java/com/iformall/service/sm/UserConsumptionPackageService.java Parādīt failu

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

import com.iformall.domain.po.sm.UserConsumptionPackage;

import java.util.List;

public interface UserConsumptionPackageService {

UserConsumptionPackage getPackageInfoByType(Integer enumPackageType);

List<UserConsumptionPackage> getPackageInfo();

UserConsumptionPackage getPackageInfoById(Integer id);

}

+ 3
- 1
suimangService/src/main/java/com/iformall/service/sm/UserCreateVideoNumService.java Parādīt failu

@@ -11,9 +11,11 @@ public interface UserCreateVideoNumService {

Boolean initializationUserCreateVideoNum(Long id);

Boolean addOrSubtractNumberOfTimes(Integer type, UserCreateVideoNum createVideoNum);
Boolean addOrSubtractNumberOfTimes(Integer type, UserCreateVideoNum createVideoNum,Double useCredit,Double videoTime);

UserCreateVideoNum queryInfoByUserId(Long userId);

void uploadUserCreateVideoNum(Map<Long, Long> collect);

void inviteUserAddCreatTime(Long id);
}

+ 8
- 0
suimangService/src/main/java/com/iformall/service/sm/UserCreditLogService.java Parādīt failu

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

import com.iformall.domain.po.sm.UserCreditLog;

public interface UserCreditLogService {

void insertLog(UserCreditLog log);
}

+ 11
- 0
suimangService/src/main/java/com/iformall/service/sm/UserPackageDetailService.java Parādīt failu

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


import com.iformall.domain.po.sm.UserPackageDetail;

import java.util.List;

public interface UserPackageDetailService {
List<UserPackageDetail> getDetailInfo();

}

+ 29
- 1
suimangService/src/main/java/com/iformall/service/sm/impl/InviteCodeInfoServiceImpl.java Parādīt failu

@@ -8,10 +8,17 @@ import com.iformall.common.ResultData;
import com.iformall.domain.po.WxCUserBasicInfo;
import com.iformall.domain.po.sm.InviteCode;
import com.iformall.domain.po.sm.InviteCodeInfo;
import com.iformall.domain.po.sm.UserCreateVideoNum;
import com.iformall.domain.po.sm.UserCreditLog;
import com.iformall.enums.sm.EnumLogType;
import com.iformall.mapper.InviteCodeInfoMapper;
import com.iformall.service.WxCUserBasicInfoService;
import com.iformall.service.sm.InviteCodeInfoService;
import com.iformall.service.sm.InviteCodeService;
import com.iformall.service.sm.UserCreateVideoNumService;
import com.iformall.service.sm.UserCreditLogService;
import lombok.Data;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@@ -32,6 +39,12 @@ public class InviteCodeInfoServiceImpl implements InviteCodeInfoService {
@Autowired
private WxCUserBasicInfoService wxCUserBasicInfoService;

@Autowired
private UserCreateVideoNumService userCreateVideoNumService;

@Autowired
private UserCreditLogService userCreditLogService;

/**
* 使用邀请码
*
@@ -64,7 +77,22 @@ public class InviteCodeInfoServiceImpl implements InviteCodeInfoService {
codeInfo.setPhone(codeInfo.getPhone());
inviteCodeInfoMapper.insert(codeInfo);

inviteCodeService.addUseTotal(info.getId(), info.getTotal());
//邀请码最多使用10次
if (info.getTotal() < 10){
inviteCodeService.addUseTotal(info.getId(), info.getTotal());
userCreateVideoNumService.inviteUserAddCreatTime(info.getId());

//根据用户id获取邀请的时候送多少积分
UserCreateVideoNum videoNum = userCreateVideoNumService.queryInfoByUserId(cUser.getId());
//插入日志信息
UserCreditLog log = new UserCreditLog();
log.setId(IdWorker.get().nextId());
log.setUserId(cUser.getId());
log.setCredits(videoNum.getInviteBaseCredits());
log.setType(EnumLogType.INVITE_USER.getCode());
log.setRemark(EnumLogType.INVITE_USER.getMessage());
userCreditLogService.insertLog(log);
}
return new ResultData();
} else {
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR, "邀请码不存在");


+ 1
- 4
suimangService/src/main/java/com/iformall/service/sm/impl/InviteCodeServiceImpl.java Parādīt failu

@@ -53,9 +53,6 @@ public class InviteCodeServiceImpl implements InviteCodeService {

@Override
public void addUseTotal(Long id, Integer total) {
InviteCode code = new InviteCode();
code.setId(id);
code.setTotal(total + 1);
inviteCodeMapper.updateById(code);
inviteCodeMapper.addUseTotal(id, total);
}
}

+ 61
- 5
suimangService/src/main/java/com/iformall/service/sm/impl/MusicInfoServiceImpl.java Parādīt failu

@@ -1,15 +1,24 @@
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.ErrorCode;
import com.iformall.common.IdWorker;
import com.iformall.common.ResultData;
import com.iformall.domain.po.sm.MusicInfo;
import com.iformall.domain.po.sm.VoiceMaterial;
import com.iformall.enums.EnumaMouldPatchStatus;
import com.iformall.mapper.MusicInfoServiceMapper;
import com.iformall.service.sm.MusicInfoService;
import com.iformall.video.VideoFactory;
import com.iformall.video.entity.VideUploadResult;
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 java.util.Date;
import java.util.List;

@Service
@@ -19,13 +28,60 @@ public class MusicInfoServiceImpl implements MusicInfoService {
@Autowired
private MusicInfoServiceMapper musicInfoServiceMapper;

@Override
public List<MusicInfo> music() {
return musicInfoServiceMapper.selectList(new LambdaQueryWrapper<MusicInfo>().eq(MusicInfo::getIsDel, 0));
}
@Autowired
VideoFactory videoFactory;

@Autowired
String videoType;

@Override
public MusicInfo getById(Long voiceMaterialId) {
return musicInfoServiceMapper.selectById(voiceMaterialId);
}

@Override
public PageInfo<MusicInfo> music(Integer pageNum, Integer pageSize, MusicInfo record) {
return PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> musicInfoServiceMapper.findList(record));
}

@Override
public ResultData saveOrUpdate(MusicInfo record) {
VideUploadResult videoDetail = videoFactory.getExcutor(videoType).getVideoDetailWithCache(record.getVoiceId());
if (videoDetail.isSuccess()
&& StringUtils.isNotBlank(videoDetail.getDuration())
&& !"0.0".equals(videoDetail.getDuration())
&& StringUtils.isNotBlank(videoDetail.getTitle())
&& StringUtils.isNotBlank(videoDetail.getVideoUrl())) {
record.setTime(Double.valueOf(videoDetail.getDuration()));
record.setSize(videoDetail.getSize());
record.setUrl(videoDetail.getVideoUrl());
record.setName(videoDetail.getTitle().split("\\.")[0]);
}

if (StringUtils.isBlank(record.getUrl())) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "素材为空");
}

Date now = new Date();
if (record.getId() == null) {
record.setId(IdWorker.get().nextId());
record.setCreateDate(now);
record.setUpdateDate(now);
musicInfoServiceMapper.insert(record);
} else {
record.setUpdateDate(now);
musicInfoServiceMapper.updateById(record);
}
return new ResultData(record);
}

@Override
public void deleteById(Long id) {
musicInfoServiceMapper.deleteById(id);
}

@Override
public PageInfo<MusicInfo> userMusic(Integer pageNum, Integer pageSize, MusicInfo record) {
return PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> musicInfoServiceMapper.userMusic(record));
}
}

+ 167
- 56
suimangService/src/main/java/com/iformall/service/sm/impl/PhotoSpeakVideoServiceImpl.java Parādīt failu

@@ -9,10 +9,13 @@ import com.iformall.common.IdWorker;
import com.iformall.common.ResultData;
import com.iformall.domain.po.sm.*;
import com.iformall.enums.*;
import com.iformall.enums.sm.EnumLogType;
import com.iformall.enums.sm.EnumPackageType;
import com.iformall.mapper.PhotoSpeakVideoMapper;
import com.iformall.service.sm.*;
import com.iformall.sm.*;
import com.iformall.utils.Base64Util;
import com.iformall.utils.DateUtils;
import com.iformall.video.VideoFactory;
import com.iformall.video.entity.VideUploadResult;
import org.apache.commons.lang3.StringUtils;
@@ -66,6 +69,13 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService {
@Autowired
private MusicInfoService musicInfoService;

@Autowired
private UserConsumptionPackageService userConsumptionPackageService;

@Autowired
private UserCreditLogService userCreditLogService;

private final static String str = "\uD83D\uDD57";

@Override
public PageInfo<PhotoSpeakVideo> listAsPage(PhotoSpeakVideo record, Integer pageIndex, Integer pageSize) {
@@ -115,8 +125,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(),"声音类型信息错误");
}
@@ -205,6 +216,24 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService {
Integer voiceFrom = photoSpeakVideo.getVoiceFrom();
String voiceMouldSmId = null;
String voiceType = "default";//默认
Integer sex = 1;
Double videoTime = null;//用户创建视频的时长

//TODO 关闭用户相关流程
UserCreateVideoNum videoNum = userCreateVideoNumService.queryInfoByUserId(photoSpeakVideo.getUserId());
// if (videoNum == null) {
// videoUpd.setVideoStatus(EnumVideoStatus.fail.getCode());
// videoUpd.setVideoMsg("用户没有创建视频时长");
// this.saveOrUpdate(videoUpd);
// return new AsyncResult<>(0);
// } else {
// if (DateUtils.isDateAfter(String.valueOf(videoNum.getEffectiveDate()))) {
// videoUpd.setVideoStatus(EnumVideoStatus.fail.getCode());
// videoUpd.setVideoMsg("有效期已到期");
// this.saveOrUpdate(videoUpd);
// return new AsyncResult<>(0);
// }
// }

String voiceMaterialUrl = null;
if(EnumVoiceFrom.FROM_MOULD.getCode().equals(voiceFrom)){
@@ -213,6 +242,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){
@@ -223,10 +253,24 @@ 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()) {
videoTime = result.getTime();
}
}else if(EnumVoiceFrom.FROM_UPD.getCode().equals(voiceFrom)){
voiceMaterialUrl = photoSpeakVideo.getVoiceMaterialUrl();
VoiceMaterial voiceMaterial = voiceMaterialService.getById(photoSpeakVideo.getVoiceMaterialId());
if(StringUtils.isBlank(voiceMaterialUrl)){
VoiceMaterial voiceMaterial = voiceMaterialService.getById(photoSpeakVideo.getVoiceMaterialId());
voiceMaterialService.handVideoUrl(voiceMaterial);
voiceMaterialUrl = voiceMaterial.getMaterial();
videoUpd.setVoiceMaterialUrl(voiceMaterialUrl);
@@ -234,20 +278,54 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService {
if(StringUtils.isBlank(voiceMaterialUrl)){
msg = "未找到上传声音文件";
}

//判断用户时长是否够创建该视频
VideUploadResult videoDetail = videoFactory.getExcutor(videoType).getVideoDetailWithCache(voiceMaterial.getVideoId());
if (videoDetail.isSuccess() && StringUtils.isNotBlank(videoDetail.getDuration()) && !"0.0".equals(videoDetail.getDuration())) {
String duration = videoDetail.getDuration();
videoTime = Double.valueOf(duration);
}
} else if (EnumVoiceFrom.MUSIC.getCode().equals(voiceFrom)) {
Long musicId = photoSpeakVideo.getMusicId();
MusicInfo musicInfo = musicInfoService.getById(musicId);
if (ObjectUtils.isEmpty(musicInfo)){
if (ObjectUtils.isEmpty(musicInfo)) {
msg = "未找到音乐文件";
}
voiceMaterialUrl = musicInfo.getUrl();
if (StringUtils.isBlank(voiceMaterialUrl)) {
msg = "音乐文件错误";
}
videoTime = Double.valueOf(musicInfo.getTime());
} else {
msg = "声音数据异常";
}

//判断获取创建的视频时长
if (videoTime == null){
videoUpd.setVideoStatus(EnumVideoStatus.fail.getCode());
videoUpd.setVideoMsg("获取创建的视频时长失败");
this.saveOrUpdate(videoUpd);
return new AsyncResult<>(0);
}

//TODO 关闭用户相关流程
//获取套餐信息
// UserConsumptionPackage infoById = userConsumptionPackageService.getPackageInfoById(videoNum.getPackageId());
// if (infoById == null){
// videoUpd.setVideoStatus(EnumVideoStatus.fail.getCode());
// videoUpd.setVideoMsg("套餐信息不存在");
// this.saveOrUpdate(videoUpd);
// return new AsyncResult<>(0);
// }
// //生成视频时长不能超过对应套餐的时长
// if (infoById.getChargeTime() < videoTime) {
// videoUpd.setVideoStatus(EnumVideoStatus.fail.getCode());
// videoUpd.setVideoMsg("视频时长不能超过" + infoById.getChargeTime() + "s");
// this.saveOrUpdate(videoUpd);
// return new AsyncResult<>(0);
// }
videoUpd.setVideoTime(String.valueOf(videoTime));

if(StringUtils.isBlank(voiceMouldSmId) && StringUtils.isBlank(voiceMaterialUrl)){
videoUpd.setVideoStatus(EnumVideoStatus.fail.getCode());
videoUpd.setVideoMsg(msg);
@@ -263,87 +341,79 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService {
return new AsyncResult<>(0);
}

UserCreateVideoNum createVideoNum = new UserCreateVideoNum();
double useCredit = 0;
//修改用户创建视频时间表
if (flag) {
//修改用户生成视频次数
createVideoNum = userCreateVideoNumService.queryInfoByUserId(photoSpeakVideo.getUserId());
if (ObjectUtils.isEmpty(createVideoNum)) {
return new AsyncResult<>("用户没有生成视频次数");
} else {
//剩余条数
Integer residueNum = createVideoNum.getResidueNum();
if (residueNum.intValue() <= 0) {
return new AsyncResult<>("剩余生成视频次数不足");
} else {
//减去生成视频次数
Boolean times = userCreateVideoNumService.addOrSubtractNumberOfTimes(1, createVideoNum);
if (!times) {
return new AsyncResult<>("剩余生成视频次数不足");
}
}
}
// //每秒消耗的积分
// double i = (double)( videoNum.getVideoPrice() / 60);
// i = i < 1 ? 1.0 : i; //如果小于1 就直接取1
// //用户创建视频需要时积分
// useCredit = (videoTime * i);
// //判断用户积分是否足够
// if (videoNum.getResidueCredits() < useCredit) {
// videoUpd.setVideoStatus(EnumVideoStatus.fail.getCode());
// videoUpd.setVideoMsg("创建视频时长不足,请充值");
// this.saveOrUpdate(videoUpd);
// return new AsyncResult<>(0);
// }
// useCredit = Math.round(useCredit);
//如果时间够,就去减去相对应的数据
userCreateVideoNumService.addOrSubtractNumberOfTimes(1, videoNum, useCredit, videoTime);
}

try {
AiPreviewParam previewParam = new AiPreviewParam();
previewParam.setVoice_id(voiceMouldSmId);

AiPhotoSpeakParam param = new AiPhotoSpeakParam();
param.setImg(Base64Util.imageUrlToBase64(photoSpeakVideo.getPersonPhotoUrl()));
param.setVoice_id(voiceMouldSmId);
param.setVoice_id(voiceMouldSmId == null ? "default" : voiceMouldSmId);

String voiceMouldSm = photoSpeakVideo.getVoiceMouldSm();
JSONObject jsonObject = JSON.parseObject(voiceMouldSm);
Integer speakTypeStr = jsonObject.getInteger("speakType");
param.setVoice_style(StringUtils.isBlank(voiceType) ? "default" : EnumSpeakType.getEnum(speakTypeStr).getType());

previewParam.setVoice_style(StringUtils.isBlank(voiceType) ? "default" : EnumSpeakType.getEnum(speakTypeStr).getType());
Integer speakType = 0;
if (!StringUtils.isBlank(voiceMouldSm)) {
JSONObject jsonObject = JSON.parseObject(voiceMouldSm);
speakType = jsonObject.getInteger("speakType");
}
param.setVoice_style(EnumSpeakType.getEnum(speakType).getType());

Integer sex = jsonObject.getInteger("sex");
if (EnumVoiceFrom.FROM_MOULD.getCode().equals(voiceFrom)) {
param.setGen_txt(paperwork);
previewParam.setGen_txt(paperwork);
param.setGen_txt(paperwork.replaceAll(str, "[*]"));
if (sex == 1){
param.setGender("male");
previewParam.setGender("male");
}else if (sex == 2){
param.setGender("female");
previewParam.setGender("female");
}else {
param.setGender("unknown");
previewParam.setGender("unknown");
}
param.setUrl("None");
} else if (EnumVoiceFrom.FROM_UPD.getCode().equals(voiceFrom)) {
param.setGen_txt("None");
param.setGender("None");
param.setUrl(voiceMaterialUrl);
}

//TTS音色预览
AiPreviewResult result = AiVideoHelper.voicePreview(previewParam);
if (!result.isSuccess()) {
videoUpd.setVideoStatus(EnumVideoStatus.fail.getCode());
videoUpd.setVideoMsg(result.getMsgInfo(result.getCode(), result.getMsg()));
videoUpd.setCreateVideoDate(new Date());
this.saveOrUpdate(videoUpd);

if (flag) {
//如果生成视频失败了,就把创建视频的次数加回去
userCreateVideoNumService.addOrSubtractNumberOfTimes(2, createVideoNum);
}
return new AsyncResult<>(0);
}else if (EnumVoiceFrom.MUSIC.getCode().equals(voiceFrom)){
param.setGen_txt("None");
param.setGender("None");
param.setUrl(voiceMaterialUrl);
}

AiPhotoSpeakResult video = AiVideoHelper.createPhotoSpeakVideo(param);
if (video.isSuccess()) {
videoUpd.setVideoPath(video.getUrl());
videoUpd.setSaveDir(video.getSaveDir());
videoUpd.setVideoStatus(EnumVideoStatus.success.getCode());
videoUpd.setVideoMsg("success");
videoUpd.setCreateVideoDate(new Date());
this.saveOrUpdate(videoUpd);

videoUpd.setTitle(photoSpeakVideo.getTitle());

// UserCreditLog log = new UserCreditLog();
// log.setId(IdWorker.get().nextId());
// log.setUserId(photoSpeakVideo.getUserId());
// log.setCredits(-(float)useCredit);
// log.setType(EnumLogType.PHOTO_SPEAK.getCode());
// log.setRemark(EnumLogType.PHOTO_SPEAK.getMessage());
// log.setVideoOrPhotoOrTalkId(videoUpd.getId());
// userCreditLogService.insertLog(log);

this.uploadVideo(videoUpd);

return new AsyncResult<>(1);
@@ -353,17 +423,17 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService {
this.saveOrUpdate(videoUpd);

if (flag) {
//如果生成视频失败了,就把创建视频的次数加回去
userCreateVideoNumService.addOrSubtractNumberOfTimes(2, createVideoNum);
//如果生成视频失败了,就把创建视频积分加回去
userCreateVideoNumService.addOrSubtractNumberOfTimes(2, videoNum, useCredit, videoTime);
}
return new AsyncResult<>(0);

} catch (Exception e) {
e.printStackTrace();
if (flag) {
//如果生成视频失败了,就把创建视频的次数加回去
userCreateVideoNumService.addOrSubtractNumberOfTimes(2, createVideoNum);
//如果生成视频失败了,就把创建视频积分加回去
userCreateVideoNumService.addOrSubtractNumberOfTimes(2, videoNum, useCredit, videoTime);
}
e.printStackTrace();
videoUpd.setVideoStatus(EnumVideoStatus.fail.getCode());
videoUpd.setVideoMsg("请求异常");
this.saveOrUpdate(videoUpd);
@@ -421,4 +491,45 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService {
return photoSpeakVideoMapper.updateById(video);
}

@Override
public void videoHy(PhotoSpeakVideo speakVideo,Boolean flag) {
AiVideoHqParam param = new AiVideoHqParam();
param.setSave_dir(speakVideo.getSaveDir());
AiVideoHqResult result = AiVideoHelper.videoHq(param);
if(result.isSuccess()){
speakVideo.setVideoHyStatus(EnumVideoStatus.success.getCode());
speakVideo.setVideoMsg("超分视频生成成功");
speakVideo.setIsHy(EnumYesOrNo.YES.getCode());
this.updateById(speakVideo);

this.uploadHyVideo(speakVideo);
}

speakVideo.setVideoHyStatus(EnumVideoStatus.fail.getCode());
speakVideo.setVideoMsg("超分视频失败");
this.updateById(speakVideo);
}

@Override
public void uploadHyVideo(PhotoSpeakVideo mouldVideo){
if(EnumVideoStatus.success.getCode().equals(mouldVideo.getVideoHyStatus())
|| EnumVideoStatus.upload_fail.getCode().equals(mouldVideo.getVideoHyStatus())){
String url = mouldVideo.getPhotoSpeakPathUri() + mouldVideo.getVideoPath();
VideUploadResult result = videoFactory.getExcutor(videoType).uploadVideoPath(mouldVideo.getTitle(), url);
if(result.isSuccess()){
PhotoSpeakVideo videoUpd = new PhotoSpeakVideo();
videoUpd.setId(mouldVideo.getId());
videoUpd.setVideoId(result.getVideoId());
videoUpd.setVideoHyStatus(EnumVideoStatus.upload_ing.getCode());
this.saveOrUpdate(videoUpd);
}
}
}

@Override
public List<PhotoSpeakVideo> getUpLoadHyIngList() {
PhotoSpeakVideo umVideoQ = new PhotoSpeakVideo();
umVideoQ.setVideoHyStatus(EnumVideoStatus.upload_ing.getCode());
return photoSpeakVideoMapper.getSortList(umVideoQ);
}
}

+ 78
- 0
suimangService/src/main/java/com/iformall/service/sm/impl/UserConsumptionPackageImpl.java Parādīt failu

@@ -0,0 +1,78 @@
package com.iformall.service.sm.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.iformall.domain.po.sm.UserConsumptionPackage;
import com.iformall.domain.po.sm.UserPackageDetail;
import com.iformall.enums.EnumLanguages;
import com.iformall.enums.EnumYesOrNo;
import com.iformall.enums.sm.*;
import com.iformall.mapper.UserConsumptionPackageMapper;
import com.iformall.service.sm.UserConsumptionPackageService;
import com.iformall.service.sm.UserPackageDetailService;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

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

@Service
public class UserConsumptionPackageImpl implements UserConsumptionPackageService {

@Autowired
private UserConsumptionPackageMapper userConsumptionPackageMapper;

@Autowired
private UserPackageDetailService userPackageDetailService;

@Override
public UserConsumptionPackage getPackageInfoByType(Integer packageType) {
return userConsumptionPackageMapper
.selectOne(new LambdaQueryWrapper<UserConsumptionPackage>()
.eq(UserConsumptionPackage::getIsDel, 0)
.eq(UserConsumptionPackage::getType, packageType));
}

@Override
public UserConsumptionPackage getPackageInfoById(Integer id) {
return userConsumptionPackageMapper
.selectOne(new LambdaQueryWrapper<UserConsumptionPackage>()
.eq(UserConsumptionPackage::getIsDel, 0)
.eq(UserConsumptionPackage::getId, id));
}

@Override
public List<UserConsumptionPackage> getPackageInfo() {
List<UserConsumptionPackage> consumptionPackages = userConsumptionPackageMapper.selectList(new LambdaQueryWrapper<UserConsumptionPackage>().eq(UserConsumptionPackage::getIsDel, 0));
List<UserPackageDetail> detailInfo = userPackageDetailService.getDetailInfo();
if (CollectionUtils.isEmpty(consumptionPackages) || CollectionUtils.isEmpty(detailInfo)) {
return consumptionPackages;
}

for (UserConsumptionPackage consumptionPackage : consumptionPackages) {
consumptionPackage.setTypeDesc(EnumPackageType.getEnum(consumptionPackage.getType()).getMessage());
List<UserPackageDetail> list = new ArrayList<>();
for (UserPackageDetail detail : detailInfo) {
if (consumptionPackage.getId().equals(detail.getPackageId())) {
detail.setDetailTypeDesc(EnumPackageDetailType.getEnum(detail.getDetailType()).getMessage());
detail.setWatermarkDesc(EnumYesOrNo.getEnum(detail.getWatermark()).getMessage());
detail.setLanguageDesc(EnumLanguageType.getEnum(detail.getLanguage()).getMessage());
detail.setSoundDesc(EnumSoundType.getEnum(detail.getSound()).getMessage());
detail.setResolutionRatioDesc(EnumResolutionRatioType.getEnum(detail.getResolutionRatio()).getMessage());

if (detail.getDetailType().equals(EnumPackageDetailType.PHOTO_SPEAK.getCode())) {
detail.setAiPortraitDesc(EnumYesOrNo.getEnum(detail.getAiPortrait()).getMessage());
detail.setPhotoSingDesc(EnumYesOrNo.getEnum(detail.getPhotoSing()).getMessage());
}

if (detail.getDetailType().equals(EnumPackageDetailType.TALK.getCode())) {
detail.setHumanTemplateDesc(EnumHumanTemplateType.getEnum(detail.getHumanTemplate()).getMessage());
}
list.add(detail);
}
}
consumptionPackage.setUserPackageDetails(list);
}
return consumptionPackages;
}
}

+ 70
- 19
suimangService/src/main/java/com/iformall/service/sm/impl/UserCreateVideoNumServiceImpl.java Parādīt failu

@@ -2,17 +2,23 @@
package com.iformall.service.sm.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.iformall.common.IdWorker;
import com.iformall.domain.po.sm.UserConsumptionPackage;
import com.iformall.domain.po.sm.UserCreateVideoNum;
import com.iformall.domain.po.sm.UserCreditLog;
import com.iformall.enums.sm.EnumLogType;
import com.iformall.enums.sm.EnumPackageType;
import com.iformall.mapper.UserCreateVideoNumMapper;
import com.iformall.service.sm.UserConsumptionPackageService;
import com.iformall.service.sm.UserCreateVideoNumService;
import io.swagger.models.auth.In;
import com.iformall.service.sm.UserCreditLogService;
import com.iformall.utils.DateUtils;
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;

import java.util.Date;
import java.util.Map;
@@ -24,11 +30,15 @@ public class UserCreateVideoNumServiceImpl implements UserCreateVideoNumService

@Autowired
private UserCreateVideoNumMapper userCreateVideoNumMapper;
//总条数初始值
private static final Integer RESIDUE_TOTAL = 10;

@Autowired
private UserConsumptionPackageService userConsumptionPackageService;

@Autowired
private UserCreditLogService userCreditLogService;

/**
* 初始化注册用户创建视频的次数
* 初始化注册用户创建视频的时长
*
* @param id 用户id
* @Author LWH
@@ -36,26 +46,55 @@ public class UserCreateVideoNumServiceImpl implements UserCreateVideoNumService
* @date: 2023/6/8 10:23
*/
public Boolean initializationUserCreateVideoNum(Long id) {
//注册即送最基础版的积分
UserConsumptionPackage packageInfo = userConsumptionPackageService.getPackageInfoByType(EnumPackageType.BASIC.getCode());
UserCreateVideoNum createVideoNum = new UserCreateVideoNum();
createVideoNum.setId(IdWorker.get().nextId());
createVideoNum.setUserId(id);
createVideoNum.setResidueNum(RESIDUE_TOTAL);
createVideoNum.setResidueTotal(RESIDUE_TOTAL);
Date date = new Date();
createVideoNum.setCreateDate(date);
createVideoNum.setUpdateDate(date);
createVideoNum.setIsDel(0);
return userCreateVideoNumMapper.insert(createVideoNum) > 0;
if (!ObjectUtils.isEmpty(packageInfo)) {
createVideoNum.setId(IdWorker.get().nextId());
createVideoNum.setUserId(id);
//有效期
createVideoNum.setEffectiveDate(DateUtils.getTimeAfterDays(packageInfo.getValidityDuration(), new Date()));
//积分
createVideoNum.setUserCredits(packageInfo.getCredit());
createVideoNum.setResidueCredits(packageInfo.getCredit());

createVideoNum.setInviteBaseCredits(packageInfo.getInviteUserCredit());
createVideoNum.setVideoPrice(packageInfo.getVideoPrice());
createVideoNum.setPhotoPrice(packageInfo.getPhotoPrice());
createVideoNum.setTalkPrice(packageInfo.getTalkPrice());
//插入类型
createVideoNum.setPackageId(packageInfo.getId());

Date date = new Date();
createVideoNum.setCreateDate(date);
createVideoNum.setUpdateDate(date);
createVideoNum.setIsDel(0);

//插入日志信息
UserCreditLog log = new UserCreditLog();
log.setId(IdWorker.get().nextId());
log.setUserId(id);
log.setCredits(packageInfo.getCredit());
log.setType(EnumLogType.REGISTER_USER.getCode());
log.setRemark(EnumLogType.REGISTER_USER.getMessage());
userCreditLogService.insertLog(log);

return userCreateVideoNumMapper.insert(createVideoNum) > 0;
}
return false;
}

@Override
public Boolean addOrSubtractNumberOfTimes(Integer type, UserCreateVideoNum createVideoNum) {
return userCreateVideoNumMapper.addOrSubtractNumberOfTimes(type,createVideoNum);
public Boolean addOrSubtractNumberOfTimes(Integer type, UserCreateVideoNum createVideoNum, Double useCredit, Double videoTime) {
return userCreateVideoNumMapper.addOrSubtractNumberOfTimes(type, createVideoNum, useCredit, videoTime);
}

@Override
public UserCreateVideoNum queryInfoByUserId(Long userId) {
return userCreateVideoNumMapper.selectOne(new LambdaQueryWrapper<UserCreateVideoNum>().eq(UserCreateVideoNum::getUserId, userId));
return userCreateVideoNumMapper
.selectOne(new LambdaQueryWrapper<UserCreateVideoNum>()
.eq(UserCreateVideoNum::getIsDel, 0)
.eq(UserCreateVideoNum::getUserId, userId));
}

@Override
@@ -66,8 +105,20 @@ public class UserCreateVideoNumServiceImpl implements UserCreateVideoNumService
videoNum.setCreateAllTime(entry.getValue());
userCreateVideoNumMapper.update(videoNum,
new LambdaUpdateWrapper<UserCreateVideoNum>()
.eq(UserCreateVideoNum::getIsDel, 0)
.eq(UserCreateVideoNum::getUserId, entry.getKey()));
.eq(UserCreateVideoNum::getIsDel, 0)
.eq(UserCreateVideoNum::getUserId, entry.getKey()));
}
}

/**
* 使用邀请码用户增加时长
*/
@Override
public void inviteUserAddCreatTime(Long id) {
UserCreateVideoNum videoNum = queryInfoByUserId(id);
if (!ObjectUtils.isEmpty(videoNum)) {
videoNum.setUserCredits(videoNum.getUserCredits() + videoNum.getInviteBaseCredits());
userCreateVideoNumMapper.updateById(videoNum);
}
}
}

+ 19
- 0
suimangService/src/main/java/com/iformall/service/sm/impl/UserCreditLogServiceImpl.java Parādīt failu

@@ -0,0 +1,19 @@
package com.iformall.service.sm.impl;

import com.iformall.domain.po.sm.UserCreditLog;
import com.iformall.mapper.UserCreditLogMapper;
import com.iformall.service.sm.UserCreditLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserCreditLogServiceImpl implements UserCreditLogService {

@Autowired
private UserCreditLogMapper userCreditLogMapper;

@Override
public void insertLog(UserCreditLog log) {
userCreditLogMapper.insert(log);
}
}

+ 23
- 0
suimangService/src/main/java/com/iformall/service/sm/impl/UserPackageDetailServiceImpl.java Parādīt failu

@@ -0,0 +1,23 @@
package com.iformall.service.sm.impl;


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.iformall.domain.po.sm.UserPackageDetail;
import com.iformall.mapper.UserPackageDetailMapper;
import com.iformall.service.sm.UserPackageDetailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserPackageDetailServiceImpl implements UserPackageDetailService {

@Autowired
private UserPackageDetailMapper userPackageDetailMapper;

@Override
public List<UserPackageDetail> getDetailInfo() {
return userPackageDetailMapper.selectList(new LambdaQueryWrapper<UserPackageDetail>().eq(UserPackageDetail::getIsDel, 0));
}
}

+ 9
- 7
suimangService/src/main/java/com/iformall/service/sm/impl/VoiceInfoServiceImpl.java Parādīt failu

@@ -27,9 +27,11 @@ public class VoiceInfoServiceImpl implements VoiceInfoService {
@Autowired
private VoiceMapper voiceMapper;

private final static String str = "\uD83D\uDD57";

@Override
public List<VoiceInfo> chooseType(Long id) {
List<VoiceInfo> voiceInfos = voiceMapper.selectList(new LambdaQueryWrapper<VoiceInfo>().eq(VoiceInfo::getLanguageId, id).orderByAsc(VoiceInfo::getDisplayName).select(VoiceInfo::getId, VoiceInfo::getDisplayName, VoiceInfo::getStyleList));
List<VoiceInfo> voiceInfos = voiceMapper.selectList(new LambdaQueryWrapper<VoiceInfo>().eq(VoiceInfo::getLanguageId, id).orderByAsc(VoiceInfo::getDisplayName).select(VoiceInfo::getId, VoiceInfo::getDisplayName, VoiceInfo::getStyleList,VoiceInfo::getSex,VoiceInfo::getAgeType));
voiceInfos.forEach(x -> {
if (StringUtils.isNotEmpty(x.getStyleList())) {
List<String> strings = JSON.parseArray(x.getStyleList(), String.class);
@@ -40,6 +42,7 @@ public class VoiceInfoServiceImpl implements VoiceInfoService {
x.setStyle(list);
} else {
x.setStyle(Lists.newArrayList());

}
});
return voiceInfos;
@@ -52,15 +55,14 @@ public class VoiceInfoServiceImpl implements VoiceInfoService {

@Override
public ResultData voicePreview(AiPreviewParam aiPreviewParam) {
if (aiPreviewParam.getVoice_id() == null || StringUtils.isBlank(aiPreviewParam.getGen_txt())) {
return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(), "参数不能为空");
}
VoiceInfo voiceInfo = voiceMapper.selectOne(new LambdaQueryWrapper<VoiceInfo>().eq(VoiceInfo::getIsDel, 0).eq(VoiceInfo::getId, aiPreviewParam.getVoice_id()));

if (ObjectUtils.isEmpty(voiceInfo)){
return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(), "声音信息不存在");
}
AiPreviewParam param = new AiPreviewParam();
param.setGen_txt(aiPreviewParam.getGen_txt());
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
- 1
suimangService/src/main/java/com/iformall/service/sm/impl/VoiceLanguageServiceImpl.java Parādīt failu

@@ -20,7 +20,7 @@ public class VoiceLanguageServiceImpl implements VoiceLanguageService {

@Override
public List<VoiceLanguage> voiceTotal() {
List<VoiceLanguage> languages = voiceLanguageMapper.selectList(new LambdaQueryWrapper<VoiceLanguage>().eq(VoiceLanguage::getIsDel, 0).orderByAsc(VoiceLanguage::getName).select(VoiceLanguage::getId, VoiceLanguage::getName, VoiceLanguage::getImg));
List<VoiceLanguage> languages = voiceLanguageMapper.selectList(new LambdaQueryWrapper<VoiceLanguage>().eq(VoiceLanguage::getIsDel, 0).orderByAsc(VoiceLanguage::getLocal));
return CollectionUtils.isEmpty(languages) ? Lists.newArrayList() : languages;
}
}

+ 1
- 0
suimangService/src/main/java/com/iformall/sm/AiPhotoSpeakResult.java Parādīt failu

@@ -8,6 +8,7 @@ public class AiPhotoSpeakResult {
private boolean success;
private String msg;
private String url;
private String saveDir;

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


+ 1
- 0
suimangService/src/main/java/com/iformall/sm/AiPreviewResult.java Parādīt failu

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

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


+ 62
- 6
suimangService/src/main/java/com/iformall/sm/AiVideoHelper.java Parādīt failu

@@ -35,6 +35,7 @@ public class AiVideoHelper {
public static String photo_speak_suffix = "/img_talking";
public static String image_quality_suffix = "/image_qualit";
public static String voice_preview = "/tts_wav";
public static String video_hq = "/video_hq";

public static String doPost(String url, String params) {
return HttpUtil.doAiVideoPost(url,params);
@@ -123,8 +124,10 @@ public class AiVideoHelper {
if (code.intValue() == 4000) {
JSONObject data = jsonObject.getJSONObject("data");
String videoUrl = data.getString("url");
String saveDir = data.getString("save_dir");
result.setSuccess(true);
result.setUrl(videoUrl);
result.setSaveDir(saveDir);
String resultMsg = result.getMsgInfo(code, msg);
result.setMsg(resultMsg);
} else {
@@ -181,6 +184,13 @@ public class AiVideoHelper {
JSONObject jsonObject = JSON.parseObject(response);
JSONObject status = jsonObject.getJSONObject("status");
JSONObject data = jsonObject.getJSONObject("data");
String strURL = null;
String time = null;
if (data != null){
strURL = data.getString("url");
time = data.getString("time");
}

Integer code = status.getInteger("code");
String msg = status.getString("msg");
if (code == null) {
@@ -191,7 +201,48 @@ public class AiVideoHelper {
if (code.intValue() == 3000) {
result.setCode(200);
result.setSuccess(true);
result.setUrl(url + data.getString("url"));
result.setUrl(url + 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 AiVideoHqResult videoHq(AiVideoHqParam param) {
String response = doPost(url + video_hq, JSONObject.toJSONString(param));
log.info("视频超分 end response:" + response);
AiVideoHqResult result = new AiVideoHqResult();

if (StringUtils.isBlank(response)) {
result.setSuccess(false);
result.setMsg("视频超分失败,请稍后重试");
return result;
}
JSONObject jsonObject = JSON.parseObject(response);
JSONObject status = jsonObject.getJSONObject("status");
JSONObject data = jsonObject.getJSONObject("data");
String strURL = null;
if (data != null){
strURL = data.getString("url");
}

Integer code = status.getInteger("code");
String msg = status.getString("msg");
if (code == null) {
result.setSuccess(false);
result.setMsg("视频超分异常,请稍后重试");
return result;
}
if (code.intValue() == 3000) {
result.setCode(200);
result.setSuccess(true);
result.setUrl(url + strURL);
String resultMsg = result.getMsgInfo(code, msg);
result.setMsg(resultMsg);
} else {
@@ -229,11 +280,11 @@ public class AiVideoHelper {
param.setGen_txt("人多泰达股份冲冠怒发代发");
param.setImg(Base64Util.imageUrlToBase64("https://suimang.oss-accelerate.aliyuncs.com/builtin/digitalperson/16760216806604820_cSHoijDX_matting.png"));
param.setGender("male");
param.setVoice_id("zh-CN-YunxiNeural");
param.setVoice_style("sad");
param.setVoice_id("zh-CN-YunyangNeural");
param.setVoice_style("default");
param.setUrl("None");
AiPhotoSpeakResult video = AiVideoHelper.createPhotoSpeakVideo(param);
//
// AiCheckPhotoParam param = new AiCheckPhotoParam();
// String img = Base64Util.imageUrlToBase64("https://suimang.oss-accelerate.aliyuncs.com/builtin/personmould/16760216806604820_cSHoijDX_grace_1080.jpg");
// param.setImg(img);
@@ -242,11 +293,16 @@ public class AiVideoHelper {
//
// AiPreviewParam param = new AiPreviewParam();
// param.setGen_txt("今天是个好日子");
// param.setVoice_id("zh-CN-YunyangNeural");
// param.setVoice_id("ar-DZ-AminaNeural");
// param.setVoice_style("default");
// param.setGender("male");
// param.setGender("female");
// AiPreviewResult result = AiVideoHelper.voicePreview(param);
// System.out.println(result);

// AiVideoHqParam param = new AiVideoHqParam();
// param.setSave_dir();
// AiVideoHqResult result = AiVideoHelper.videoHq(param);
// System.out.println(result);
}




+ 9
- 0
suimangService/src/main/java/com/iformall/sm/AiVideoHqParam.java Parādīt failu

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

import lombok.Data;

@Data
public class AiVideoHqParam {
private String save_dir;

}

+ 19
- 0
suimangService/src/main/java/com/iformall/sm/AiVideoHqResult.java Parādīt failu

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

import lombok.Data;

@Data
public class AiVideoHqResult {
private boolean success;
private Integer code;
private String msg;
private String url;

public String getMsgInfo(Integer code, String msg) {
if (code == 5000 && msg.equals("success")) {
return "成功";
}
return msg;
}

}

+ 10
- 0
suimangService/src/main/resources/mapper/InviteCodeMapper.xml Parādīt failu

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.iformall.mapper.InviteCodeMapper">

<update id="addUseTotal">
UPDATE invite_code
SET total = #{total} + 1
WHERE id = #{id}
</update>
</mapper>

+ 22
- 0
suimangService/src/main/resources/mapper/MusicServiceMapper.xml Parādīt failu

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.iformall.mapper.MusicInfoServiceMapper">
<select id="findList" resultType="com.iformall.domain.po.sm.MusicInfo">
SELECT id, update_date, size, name, time, is_del, url, create_date, user_id, type
FROM music_info
WHERE is_del = 0 and type = #{type} and user_id = 0
ORDER BY create_date DESC
</select>

<select id="userMusic" resultType="com.iformall.domain.po.sm.MusicInfo">
SELECT id, update_date, size, name, time, is_del, url, create_date, user_id, type
FROM music_info
WHERE is_del = 0 and type = #{type} and user_id = #{userId}
ORDER BY create_date DESC
</select>

<update id="deleteById">
update music_info set is_del = 1,update_date = now() where id = #{id}
</update>

</mapper>

+ 20
- 2
suimangService/src/main/resources/mapper/PhotoSpeakVideoMapper.xml Parādīt failu

@@ -27,6 +27,11 @@
<result column="video_status" jdbcType="INTEGER" property="videoStatus"/>
<result column="video_msg" jdbcType="VARCHAR" property="videoMsg"/>

<result column="is_hy" jdbcType="INTEGER" property="isHy"/>
<result column="video_hy_status" jdbcType="INTEGER" property="videoHyStatus"/>
<result column="music_id" jdbcType="VARCHAR" property="musicId"/>
<result column="save_dir" jdbcType="VARCHAR" property="saveDir"/>

<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"/>
@@ -35,7 +40,8 @@
<sql id="allColumns">
`id`, `tenant_id`, `parent_tenant_id`, `user_id`,
`person_photo_id`, `person_photo_url`, `voice_from`, `voice_mould_id`, `voice_mould_sm`, `paperwork`, `voice_material_id`, `voice_material_url`,
`title`, `cover_img`, `remark`, `video_id`, `video_path`, `video_play_url`, `video_time`, `video_size`, `video_status`, `video_msg`, `create_video_date`, `create_date`, `update_date`
`title`, `cover_img`, `remark`, `video_id`, `video_path`, `video_play_url`, `video_time`, `video_size`, `video_status`, `video_msg`, `create_video_date`, `create_date`, `update_date`,
`is_hy`,`video_hy_status`,`music_id`,`save_dir`
</sql>

<sql id="dynamicWhereConditions">
@@ -59,6 +65,15 @@
<if test=" null != voiceFrom ">
and `voice_from` = #{voiceFrom}
</if>
<if test=" null != isHy ">
and `is_hy` = #{isHy}
</if>
<if test=" null != musicId ">
and `music_id` = #{musicId}
</if>
<if test=" null != saveDir ">
and `save_dir` = #{saveDir}
</if>

<if test=" null != voiceMouldId ">
and `voice_mould_id` = #{voiceMouldId}
@@ -71,6 +86,9 @@
<if test=" null != videoStatus ">
and `video_status` = #{videoStatus}
</if>
<if test=" null != videoHyStatus ">
and `video_hy_status` = #{videoHyStatus}
</if>

<if test=" null != startDate ">
and create_date &gt;= #{startDate}
@@ -119,7 +137,7 @@
`id`,
`paperwork`,
`title`, `cover_img`, `remark`, `video_id`, `video_path`, `video_play_url`, `video_time`, `video_size`, `video_status`,`video_msg`,
`create_video_date`, `create_date`, `update_date`
`create_video_date`, `create_date`, `update_date`,`is_hy`
from photo_speak_video
<include refid="dynamicWhereConditions"/>
</select>


+ 6
- 2
suimangService/src/main/resources/mapper/UserCreateVideoNumMapper.xml Parādīt failu

@@ -7,10 +7,14 @@
UPDATE user_create_video_num
<set>
<if test="type == 1">
residue_num = #{createVideoNum.residueNum} - 1,create_num = #{createVideoNum.createNum} + 1
<!-- residue_credits = residue_credits - #{useCredit},-->
create_num = create_num + 1,
create_all_time = create_all_time + #{time}
</if>
<if test="type == 2">
residue_num = #{createVideoNum.residueNum} + 1,create_num = #{createVideoNum.createNum} - 1
<!-- residue_credits = residue_credits + #{useCredit},-->
create_num =create_num - 1,
create_all_time = create_all_time - #{time}
</if>
</set>
WHERE user_id = #{createVideoNum.userId}


Notiek ielāde…
Atcelt
Saglabāt