From 98629f03e4356dbd4b94263f44bee3d831ebb4e2 Mon Sep 17 00:00:00 2001 From: lrh <1585126058@qq.com> Date: Mon, 19 Jun 2023 16:39:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B3=A8=E9=87=8A=E6=8E=89=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=89=A3=E7=A7=AF=E5=88=86=E7=9B=B8=E5=85=B3=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E3=80=81=E6=96=B0=E5=A2=9E=E9=9F=B3=E4=B9=90=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=92=8C=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PhotoSpeakVideoController.java | 35 ++++-- .../controller/WxUserGrantController.java | 20 ++-- .../com/iformall/domain/po/sm/MusicInfo.java | 23 ++-- .../mapper/MusicInfoServiceMapper.java | 4 + .../iformall/service/sm/MusicInfoService.java | 8 +- .../service/sm/impl/MusicInfoServiceImpl.java | 45 +++++++- .../sm/impl/PhotoSpeakVideoServiceImpl.java | 101 +++++++++--------- .../resources/mapper/MusicServiceMapper.xml | 16 +++ .../mapper/UserCreateVideoNumMapper.xml | 4 +- 9 files changed, 173 insertions(+), 83 deletions(-) create mode 100644 suimangService/src/main/resources/mapper/MusicServiceMapper.xml diff --git a/suimangCApi/src/main/java/com/iformall/controller/PhotoSpeakVideoController.java b/suimangCApi/src/main/java/com/iformall/controller/PhotoSpeakVideoController.java index 4a6ff0e..28f7a19 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/PhotoSpeakVideoController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/PhotoSpeakVideoController.java @@ -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; @@ -301,10 +300,34 @@ 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 music = musicInfoService.music(); + public ResultData music(@ModelAttribute MusicInfo record, Integer pageNum, Integer pageSize) { + logger.debug("[" + getIpAddr() + "] UserMouldVideoController::userList"); + if (record == null) record = new MusicInfo(); + record.setUserId(getMemberId()); + record.setSortColumns(BaseEntity.SortField.UpdateDate_DESC); + PageInfo music = musicInfoService.music(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()); + record.setUrl(record.getUrl()); + if (StringUtils.isBlank(record.getUrl())) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "素材为空"); + } + if (record.getTitle() == null) { + record.setTitle("用户自建"); + } + return musicInfoService.saveOrUpdate(record); + } + } diff --git a/suimangCApi/src/main/java/com/iformall/controller/WxUserGrantController.java b/suimangCApi/src/main/java/com/iformall/controller/WxUserGrantController.java index 264845c..e331c12 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/WxUserGrantController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/WxUserGrantController.java @@ -365,10 +365,12 @@ 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(), "初始化创建视频时间表失败"); - } + + //TODO 用户 +// Boolean aBoolean = userCreateVideoNumService.initializationUserCreateVideoNum(basicInfo.getId()); +// if (!aBoolean){ +// return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "初始化创建视频时间表失败"); +// } return new ResultData(); // } else { // return new ResultData(ErrorCode.MSG_VERIFY_CODE_NOT_FOUND); @@ -413,10 +415,12 @@ 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(), "初始化创建视频时间表失败"); - } + + //TODO 用户 +// Boolean aBoolean = userCreateVideoNumService.initializationUserCreateVideoNum(basicInfo.getId()); +// if (!aBoolean){ +// return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "初始化创建视频时间表失败"); +// } return new ResultData(); // } else { // return new ResultData(ErrorCode.MSG_VERIFY_CODE_NOT_FOUND); diff --git a/suimangService/src/main/java/com/iformall/domain/po/sm/MusicInfo.java b/suimangService/src/main/java/com/iformall/domain/po/sm/MusicInfo.java index f10de84..ea5e669 100644 --- a/suimangService/src/main/java/com/iformall/domain/po/sm/MusicInfo.java +++ b/suimangService/src/main/java/com/iformall/domain/po/sm/MusicInfo.java @@ -4,31 +4,32 @@ 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; + /** * 音乐链接 */ @@ -59,4 +60,6 @@ public class MusicInfo implements Serializable { */ private Integer isDel; + private String title; + } diff --git a/suimangService/src/main/java/com/iformall/mapper/MusicInfoServiceMapper.java b/suimangService/src/main/java/com/iformall/mapper/MusicInfoServiceMapper.java index f409cff..b4fa496 100644 --- a/suimangService/src/main/java/com/iformall/mapper/MusicInfoServiceMapper.java +++ b/suimangService/src/main/java/com/iformall/mapper/MusicInfoServiceMapper.java @@ -3,6 +3,10 @@ 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 java.util.List; public interface MusicInfoServiceMapper extends CommonMapper { + List findList(MusicInfo record); } diff --git a/suimangService/src/main/java/com/iformall/service/sm/MusicInfoService.java b/suimangService/src/main/java/com/iformall/service/sm/MusicInfoService.java index df1f241..d034c95 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/MusicInfoService.java +++ b/suimangService/src/main/java/com/iformall/service/sm/MusicInfoService.java @@ -1,13 +1,15 @@ 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 music(); - MusicInfo getById(Long voiceMaterialId); + + PageInfo music(Integer pageNum, Integer pageSize, MusicInfo record); + ResultData saveOrUpdate(MusicInfo record); } diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/MusicInfoServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/MusicInfoServiceImpl.java index 1832ec4..22d761a 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/impl/MusicInfoServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/MusicInfoServiceImpl.java @@ -1,15 +1,23 @@ 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.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 +27,40 @@ public class MusicInfoServiceImpl implements MusicInfoService { @Autowired private MusicInfoServiceMapper musicInfoServiceMapper; - @Override - public List music() { - return musicInfoServiceMapper.selectList(new LambdaQueryWrapper().eq(MusicInfo::getIsDel, 0)); - } + @Autowired + VideoFactory videoFactory; + + @Autowired + String videoType; @Override public MusicInfo getById(Long voiceMaterialId) { return musicInfoServiceMapper.selectById(voiceMaterialId); } + + @Override + public PageInfo 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.getUrl()); + if (videoDetail.isSuccess() && StringUtils.isNotBlank(videoDetail.getDuration()) && !"0.0".equals(videoDetail.getDuration())) { + record.setTime(Long.valueOf(videoDetail.getDuration())); + record.setSize(videoDetail.getSize()); + } + + 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); + } } diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/PhotoSpeakVideoServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/PhotoSpeakVideoServiceImpl.java index 78631e3..56801b9 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/impl/PhotoSpeakVideoServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/PhotoSpeakVideoServiceImpl.java @@ -219,20 +219,21 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService { 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); - } - } +// 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)){ @@ -253,7 +254,7 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService { msg = "参数错误,未找到声音模板数据"; } - //判断用户时长是否够创建该视频 + //获取视频时长 AiPreviewParam param = new AiPreviewParam(); if (StringUtils.isBlank(photoSpeakVideo.getPaperwork())){ msg = "未填写视频文案数据"; @@ -306,21 +307,23 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService { 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); - } +// 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)){ @@ -341,19 +344,19 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService { double useCredit = 0; //修改用户创建视频时间表 if (flag) { - //每秒消耗的积分 - 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); +// //每秒消耗的积分 +// 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); } @@ -398,14 +401,14 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService { 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); +// 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); diff --git a/suimangService/src/main/resources/mapper/MusicServiceMapper.xml b/suimangService/src/main/resources/mapper/MusicServiceMapper.xml new file mode 100644 index 0000000..d8b66ab --- /dev/null +++ b/suimangService/src/main/resources/mapper/MusicServiceMapper.xml @@ -0,0 +1,16 @@ + + + + + + diff --git a/suimangService/src/main/resources/mapper/UserCreateVideoNumMapper.xml b/suimangService/src/main/resources/mapper/UserCreateVideoNumMapper.xml index 97a9571..bbff9fa 100644 --- a/suimangService/src/main/resources/mapper/UserCreateVideoNumMapper.xml +++ b/suimangService/src/main/resources/mapper/UserCreateVideoNumMapper.xml @@ -7,12 +7,12 @@ UPDATE user_create_video_num - residue_credits = #{createVideoNum.residueCredits} - #{useCredit}, +-- residue_credits = #{createVideoNum.residueCredits} - #{useCredit}, create_num = #{createVideoNum.createNum} + 1, create_all_time = #{createVideoNum.createAllTime} + #{time} - residue_credits = #{createVideoNum.residueCredits} + #{useCredit}, +-- residue_credits = #{createVideoNum.residueCredits} + #{useCredit}, create_num = #{createVideoNum.createNum} - 1, create_all_time = #{createVideoNum.createAllTime} - #{time}