diff --git a/suimangCApi/src/main/java/com/iformall/controller/PhotoSpeakVideoController.java b/suimangCApi/src/main/java/com/iformall/controller/PhotoSpeakVideoController.java index 4a6ff0e..7159db8 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/PhotoSpeakVideoController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/PhotoSpeakVideoController.java @@ -146,6 +146,7 @@ public class PhotoSpeakVideoController extends BaseController { return photoSpeakVideoService.saveOrUpdate(record); } + @AuthIgnore @ApiOperation("生成视频") @PostMapping("createVideo") public ResultData create(@RequestBody PhotoSpeakVideo record) { @@ -157,9 +158,9 @@ public class PhotoSpeakVideoController extends BaseController { logger.info("TEST--"+ JSONObject.toJSONString(mouldVideo)); - if(mouldVideo == null || !mouldVideo.getUserId().equals(getMemberId())){ - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未找到用户数据"); - } +// 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()) diff --git a/suimangCApi/src/main/java/com/iformall/controller/WxUserGrantController.java b/suimangCApi/src/main/java/com/iformall/controller/WxUserGrantController.java index 68988d4..264845c 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/WxUserGrantController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/WxUserGrantController.java @@ -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") @@ -709,4 +713,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()); + } + } diff --git a/suimangSchedule/src/main/java/com/iformall/schedule/PhotoSpeakSchedule.java b/suimangSchedule/src/main/java/com/iformall/schedule/PhotoSpeakSchedule.java index 9dde223..319ae96 100644 --- a/suimangSchedule/src/main/java/com/iformall/schedule/PhotoSpeakSchedule.java +++ b/suimangSchedule/src/main/java/com/iformall/schedule/PhotoSpeakSchedule.java @@ -109,29 +109,4 @@ public class PhotoSpeakSchedule { } } } - - - /** - * 统计用户创建视频成功的时长 - */ - @Scheduled(cron = "0 */30 * * * *?") // 每半小时检查一次 - public void userCreateVideoTimeSchedule() { - List videos = photoSpeakVideoService.getUploadSuccessList(); - if (videos != null && videos.size() > 0) { - HashMap 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); - } - } catch (Exception e) { - logger.error("TtCouponVideoSchedule error.couponVideoSchedule:" + video.getId(), e); - } - } - userCreateVideoNumService.uploadUserCreateVideoNum(map); - } - } } \ No newline at end of file diff --git a/suimangService/src/main/java/com/iformall/domain/po/WxCUserBasicInfo.java b/suimangService/src/main/java/com/iformall/domain/po/WxCUserBasicInfo.java index eb5e62f..a09a0bf 100644 --- a/suimangService/src/main/java/com/iformall/domain/po/WxCUserBasicInfo.java +++ b/suimangService/src/main/java/com/iformall/domain/po/WxCUserBasicInfo.java @@ -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("保密"); diff --git a/suimangService/src/main/java/com/iformall/domain/po/sm/UserConsumptionPackage.java b/suimangService/src/main/java/com/iformall/domain/po/sm/UserConsumptionPackage.java new file mode 100644 index 0000000..06d87d1 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/domain/po/sm/UserConsumptionPackage.java @@ -0,0 +1,112 @@ +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 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; + + /** + * 详细配置信息 + */ + @TableField(exist = false) + List userPackageDetails; +} diff --git a/suimangService/src/main/java/com/iformall/domain/po/sm/UserCreateVideoNum.java b/suimangService/src/main/java/com/iformall/domain/po/sm/UserCreateVideoNum.java index 38e1c2f..2730523 100644 --- a/suimangService/src/main/java/com/iformall/domain/po/sm/UserCreateVideoNum.java +++ b/suimangService/src/main/java/com/iformall/domain/po/sm/UserCreateVideoNum.java @@ -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; + } diff --git a/suimangService/src/main/java/com/iformall/domain/po/sm/UserCreditLog.java b/suimangService/src/main/java/com/iformall/domain/po/sm/UserCreditLog.java new file mode 100644 index 0000000..168d8c9 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/domain/po/sm/UserCreditLog.java @@ -0,0 +1,82 @@ +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; + + +/** + * @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 Integer 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; + +} diff --git a/suimangService/src/main/java/com/iformall/domain/po/sm/UserPackageDetail.java b/suimangService/src/main/java/com/iformall/domain/po/sm/UserPackageDetail.java new file mode 100644 index 0000000..6d654c5 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/domain/po/sm/UserPackageDetail.java @@ -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; + +} diff --git a/suimangService/src/main/java/com/iformall/enums/sm/EnumSmUserType.java b/suimangService/src/main/java/com/iformall/enums/sm/EnumHumanTemplateType.java similarity index 56% rename from suimangService/src/main/java/com/iformall/enums/sm/EnumSmUserType.java rename to suimangService/src/main/java/com/iformall/enums/sm/EnumHumanTemplateType.java index d8b0ca0..b25320e 100644 --- a/suimangService/src/main/java/com/iformall/enums/sm/EnumSmUserType.java +++ b/suimangService/src/main/java/com/iformall/enums/sm/EnumHumanTemplateType.java @@ -1,14 +1,14 @@ package com.iformall.enums.sm; -public enum EnumSmUserType { - REGISTER(0, "注册用户"), - INVITE(1, "邀请的用户"), - PAY(2, "充钱用户"), - VIP(3, "VIP用户"), - ; +/** + * 数字人模板 + */ +public enum EnumHumanTemplateType { + FREE(1, "免费"), + VIP(2, "VIP"); - public static EnumSmUserType getEnum(Integer code) { - for (EnumSmUserType value : values()) { + public static EnumHumanTemplateType getEnum(Integer code) { + for (EnumHumanTemplateType value : values()) { if (value.getCode().equals(code)) { return value; } @@ -19,7 +19,7 @@ public enum EnumSmUserType { private Integer code; private String message; - EnumSmUserType(Integer code, String message) { + EnumHumanTemplateType(Integer code, String message) { this.code = code; this.message = message; } diff --git a/suimangService/src/main/java/com/iformall/enums/sm/EnumLanguageType.java b/suimangService/src/main/java/com/iformall/enums/sm/EnumLanguageType.java new file mode 100644 index 0000000..e48deeb --- /dev/null +++ b/suimangService/src/main/java/com/iformall/enums/sm/EnumLanguageType.java @@ -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; + } +} diff --git a/suimangService/src/main/java/com/iformall/enums/sm/EnumLogType.java b/suimangService/src/main/java/com/iformall/enums/sm/EnumLogType.java new file mode 100644 index 0000000..831aa20 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/enums/sm/EnumLogType.java @@ -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; + } +} diff --git a/suimangService/src/main/java/com/iformall/enums/sm/EnumPackageDetailType.java b/suimangService/src/main/java/com/iformall/enums/sm/EnumPackageDetailType.java new file mode 100644 index 0000000..cdeaa2e --- /dev/null +++ b/suimangService/src/main/java/com/iformall/enums/sm/EnumPackageDetailType.java @@ -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; + } +} diff --git a/suimangService/src/main/java/com/iformall/enums/sm/EnumResolutionRatioType.java b/suimangService/src/main/java/com/iformall/enums/sm/EnumResolutionRatioType.java new file mode 100644 index 0000000..7bbb7dd --- /dev/null +++ b/suimangService/src/main/java/com/iformall/enums/sm/EnumResolutionRatioType.java @@ -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; + } +} diff --git a/suimangService/src/main/java/com/iformall/enums/sm/EnumSoundType.java b/suimangService/src/main/java/com/iformall/enums/sm/EnumSoundType.java new file mode 100644 index 0000000..90f9837 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/enums/sm/EnumSoundType.java @@ -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; + } +} diff --git a/suimangService/src/main/java/com/iformall/mapper/UserConsumptionPackageMapper.java b/suimangService/src/main/java/com/iformall/mapper/UserConsumptionPackageMapper.java new file mode 100644 index 0000000..861c007 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/mapper/UserConsumptionPackageMapper.java @@ -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 { + + +} diff --git a/suimangService/src/main/java/com/iformall/mapper/UserCreateVideoNumMapper.java b/suimangService/src/main/java/com/iformall/mapper/UserCreateVideoNumMapper.java index e0b27e3..d5b60f4 100644 --- a/suimangService/src/main/java/com/iformall/mapper/UserCreateVideoNumMapper.java +++ b/suimangService/src/main/java/com/iformall/mapper/UserCreateVideoNumMapper.java @@ -7,5 +7,5 @@ import org.apache.ibatis.annotations.Param; public interface UserCreateVideoNumMapper extends CommonMapper { - 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); } diff --git a/suimangService/src/main/java/com/iformall/mapper/UserCreditLogMapper.java b/suimangService/src/main/java/com/iformall/mapper/UserCreditLogMapper.java new file mode 100644 index 0000000..f511b14 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/mapper/UserCreditLogMapper.java @@ -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 { + + +} diff --git a/suimangService/src/main/java/com/iformall/mapper/UserPackageDetailMapper.java b/suimangService/src/main/java/com/iformall/mapper/UserPackageDetailMapper.java new file mode 100644 index 0000000..93ec958 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/mapper/UserPackageDetailMapper.java @@ -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 { + + +} diff --git a/suimangService/src/main/java/com/iformall/service/sm/UserConsumptionPackageService.java b/suimangService/src/main/java/com/iformall/service/sm/UserConsumptionPackageService.java new file mode 100644 index 0000000..131f0d7 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/service/sm/UserConsumptionPackageService.java @@ -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 getPackageInfo(); + + UserConsumptionPackage getPackageInfoById(Integer id); + +} diff --git a/suimangService/src/main/java/com/iformall/service/sm/UserCreateVideoNumService.java b/suimangService/src/main/java/com/iformall/service/sm/UserCreateVideoNumService.java index 413deb2..f5cbded 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/UserCreateVideoNumService.java +++ b/suimangService/src/main/java/com/iformall/service/sm/UserCreateVideoNumService.java @@ -11,7 +11,7 @@ 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); diff --git a/suimangService/src/main/java/com/iformall/service/sm/UserCreditLogService.java b/suimangService/src/main/java/com/iformall/service/sm/UserCreditLogService.java new file mode 100644 index 0000000..cb8eb71 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/service/sm/UserCreditLogService.java @@ -0,0 +1,8 @@ +package com.iformall.service.sm; + +import com.iformall.domain.po.sm.UserCreditLog; + +public interface UserCreditLogService { + + void insertLog(UserCreditLog log); +} diff --git a/suimangService/src/main/java/com/iformall/service/sm/UserPackageDetailService.java b/suimangService/src/main/java/com/iformall/service/sm/UserPackageDetailService.java new file mode 100644 index 0000000..1d8d2f8 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/service/sm/UserPackageDetailService.java @@ -0,0 +1,11 @@ +package com.iformall.service.sm; + + +import com.iformall.domain.po.sm.UserPackageDetail; + +import java.util.List; + +public interface UserPackageDetailService { + List getDetailInfo(); + +} diff --git a/suimangService/src/main/java/com/iformall/service/sm/UserTimeConfigService.java b/suimangService/src/main/java/com/iformall/service/sm/UserTimeConfigService.java deleted file mode 100644 index f8eab31..0000000 --- a/suimangService/src/main/java/com/iformall/service/sm/UserTimeConfigService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.iformall.service.sm; - -import com.iformall.domain.po.sm.UserTimeConfig; -import io.swagger.models.auth.In; - -public interface UserTimeConfigService { - UserTimeConfig getInfoByUerType(Integer i); -} diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/InviteCodeInfoServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/InviteCodeInfoServiceImpl.java index d5e2b5c..37e74f2 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/impl/InviteCodeInfoServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/InviteCodeInfoServiceImpl.java @@ -8,11 +8,15 @@ 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; @@ -38,6 +42,9 @@ public class InviteCodeInfoServiceImpl implements InviteCodeInfoService { @Autowired private UserCreateVideoNumService userCreateVideoNumService; + @Autowired + private UserCreditLogService userCreditLogService; + /** * 使用邀请码 * @@ -73,7 +80,18 @@ public class InviteCodeInfoServiceImpl implements InviteCodeInfoService { //邀请码最多使用10次 if (info.getTotal() < 10){ inviteCodeService.addUseTotal(info.getId(), info.getTotal()); - userCreateVideoNumService.inviteUserAddCreatTime(cUser.getId()); + 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 { 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 45747ed..8c7a571 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 @@ -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,12 @@ 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 @@ -181,20 +190,20 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService { msg = "未查询到人物照片"; } else { personPhotoUrl = photoSpeakVideo.getPersonPhotoUrl(); - PersonPhoto personPhotoInfo = personPhotoService.getById(photoSpeakVideo.getPersonPhotoId()); - //如果是上传图片就去检验合法 - if (EnumMouldSendType.build.getCode().equals(personPhotoInfo.getSendType())) { - //校验图片是否合法 - AiCheckPhotoParam param = new AiCheckPhotoParam(); - param.setImg(Base64Util.imageUrlToBase64(personPhotoUrl)); - AiCheckPhotoResult result = AiVideoHelper.checkPhoto(param); - if (result.getCode() != 2000) { - videoUpd.setVideoStatus(EnumVideoStatus.fail.getCode()); - videoUpd.setVideoMsg("图片质量审核失败:" + result.getMsg()); - this.saveOrUpdate(videoUpd); - return new AsyncResult<>(0); - } - } +// PersonPhoto personPhotoInfo = personPhotoService.getById(photoSpeakVideo.getPersonPhotoId()); +// //如果是上传图片就去检验合法 +// if (EnumMouldSendType.build.getCode().equals(personPhotoInfo.getSendType())) { +// //校验图片是否合法 +// AiCheckPhotoParam param = new AiCheckPhotoParam(); +// param.setImg(Base64Util.imageUrlToBase64(personPhotoUrl)); +// AiCheckPhotoResult result = AiVideoHelper.checkPhoto(param); +// if (result.getCode() != 2000) { +// videoUpd.setVideoStatus(EnumVideoStatus.fail.getCode()); +// videoUpd.setVideoMsg("图片质量审核失败:" + result.getMsg()); +// this.saveOrUpdate(videoUpd); +// return new AsyncResult<>(0); +// } +// } } if(StringUtils.isBlank(personPhotoUrl)){ @@ -208,13 +217,23 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService { String voiceMouldSmId = null; String voiceType = "default";//默认 Integer sex = 1; - Long residueTime = 0L; + Double videoTime = null;//用户创建视频的时长 + UserCreateVideoNum videoNum = userCreateVideoNumService.queryInfoByUserId(photoSpeakVideo.getUserId()); if (videoNum == null) { - msg = "没有创建视频时长"; - }else { - residueTime = videoNum.getResidueTime(); + 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)){ try{ @@ -233,6 +252,7 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService { if(StringUtils.isBlank(voiceMouldSmId)){ msg = "参数错误,未找到声音模板数据"; } + //判断用户时长是否够创建该视频 AiPreviewParam param = new AiPreviewParam(); if (StringUtils.isBlank(photoSpeakVideo.getPaperwork())){ @@ -244,9 +264,7 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService { param.setVoice_style(voiceType); AiPreviewResult result = AiVideoHelper.voicePreview(param); if (result.isSuccess()) { - if (residueTime < result.getTime()) { - msg = "创建视频时长不足,请充值"; - } + videoTime = result.getTime(); } }else if(EnumVoiceFrom.FROM_UPD.getCode().equals(voiceFrom)){ voiceMaterialUrl = photoSpeakVideo.getVoiceMaterialUrl(); @@ -259,31 +277,52 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService { if(StringUtils.isBlank(voiceMaterialUrl)){ msg = "未找到上传声音文件"; } + //判断用户时长是否够创建该视频 VideUploadResult videoDetail = videoFactory.getExcutor(videoType).getVideoDetailWithCache(photoSpeakVideo.getVideoId()); if (videoDetail.isSuccess() && StringUtils.isNotBlank(videoDetail.getDuration()) && !"0.0".equals(videoDetail.getDuration())) { String duration = videoDetail.getDuration(); - if (residueTime < Long.parseLong(duration)) { - msg = "创建视频时长余额不足,请充值"; - } + 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 = "音乐文件错误"; } - if (residueTime < musicInfo.getTime()) { - 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); + } + //获取套餐信息 + 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); @@ -299,25 +338,24 @@ 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 { @@ -359,6 +397,15 @@ public class PhotoSpeakVideoServiceImpl implements PhotoSpeakVideoService { 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()); + userCreditLogService.insertLog(log); + this.uploadVideo(videoUpd); return new AsyncResult<>(1); @@ -368,16 +415,16 @@ 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); } videoUpd.setVideoStatus(EnumVideoStatus.fail.getCode()); videoUpd.setVideoMsg("请求异常"); diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/UserConsumptionPackageImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/UserConsumptionPackageImpl.java new file mode 100644 index 0000000..c20f0c1 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/UserConsumptionPackageImpl.java @@ -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() + .eq(UserConsumptionPackage::getIsDel, 0) + .eq(UserConsumptionPackage::getType, packageType)); + } + + @Override + public UserConsumptionPackage getPackageInfoById(Integer id) { + return userConsumptionPackageMapper + .selectOne(new LambdaQueryWrapper() + .eq(UserConsumptionPackage::getIsDel, 0) + .eq(UserConsumptionPackage::getId, id)); + } + + @Override + public List getPackageInfo() { + List consumptionPackages = userConsumptionPackageMapper.selectList(new LambdaQueryWrapper().eq(UserConsumptionPackage::getIsDel, 0)); + List detailInfo = userPackageDetailService.getDetailInfo(); + if (CollectionUtils.isEmpty(consumptionPackages) || CollectionUtils.isEmpty(detailInfo)) { + return consumptionPackages; + } + + for (UserConsumptionPackage consumptionPackage : consumptionPackages) { + consumptionPackage.setTypeDesc(EnumPackageType.getEnum(consumptionPackage.getType()).getMessage()); + List 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; + } +} diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/UserCreateVideoNumServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/UserCreateVideoNumServiceImpl.java index 8162288..1c95494 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/impl/UserCreateVideoNumServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/UserCreateVideoNumServiceImpl.java @@ -4,12 +4,16 @@ package com.iformall.service.sm.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.UserTimeConfig; -import com.iformall.enums.sm.EnumSmUserType; +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 com.iformall.service.sm.UserTimeConfigService; +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; @@ -28,7 +32,10 @@ public class UserCreateVideoNumServiceImpl implements UserCreateVideoNumService private UserCreateVideoNumMapper userCreateVideoNumMapper; @Autowired - private UserTimeConfigService userTimeConfigService; + private UserConsumptionPackageService userConsumptionPackageService; + + @Autowired + private UserCreditLogService userCreditLogService; /** * 初始化注册用户创建视频的时长 @@ -39,30 +46,55 @@ public class UserCreateVideoNumServiceImpl implements UserCreateVideoNumService * @date: 2023/6/8 10:23 */ public Boolean initializationUserCreateVideoNum(Long id) { - UserTimeConfig uerType = userTimeConfigService.getInfoByUerType(EnumSmUserType.REGISTER.getCode()); + //注册即送最基础版的积分 + UserConsumptionPackage packageInfo = userConsumptionPackageService.getPackageInfoByType(EnumPackageType.BASIC.getCode()); UserCreateVideoNum createVideoNum = new UserCreateVideoNum(); - if (!ObjectUtils.isEmpty(uerType)){ + if (!ObjectUtils.isEmpty(packageInfo)) { createVideoNum.setId(IdWorker.get().nextId()); createVideoNum.setUserId(id); - createVideoNum.setTotalTime(uerType.getTime());//用户拥有总时长(单位:s) - createVideoNum.setResidueTime(uerType.getTime());//用户剩余时长(单位:s) -// createVideoNum.setEffectiveDate();//TODO 有效期 + //有效期 + 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 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().eq(UserCreateVideoNum::getIsDel,0).eq(UserCreateVideoNum::getUserId, userId)); + return userCreateVideoNumMapper + .selectOne(new LambdaQueryWrapper() + .eq(UserCreateVideoNum::getIsDel, 0) + .eq(UserCreateVideoNum::getUserId, userId)); } @Override @@ -73,8 +105,8 @@ public class UserCreateVideoNumServiceImpl implements UserCreateVideoNumService videoNum.setCreateAllTime(entry.getValue()); userCreateVideoNumMapper.update(videoNum, new LambdaUpdateWrapper() - .eq(UserCreateVideoNum::getIsDel, 0) - .eq(UserCreateVideoNum::getUserId, entry.getKey())); + .eq(UserCreateVideoNum::getIsDel, 0) + .eq(UserCreateVideoNum::getUserId, entry.getKey())); } } @@ -84,11 +116,9 @@ public class UserCreateVideoNumServiceImpl implements UserCreateVideoNumService @Override public void inviteUserAddCreatTime(Long id) { UserCreateVideoNum videoNum = queryInfoByUserId(id); - UserTimeConfig uerType = userTimeConfigService.getInfoByUerType(EnumSmUserType.REGISTER.getCode()); - if (!ObjectUtils.isEmpty(uerType)){ - videoNum.setTotalTime(videoNum.getTotalTime() + uerType.getTime()); + if (!ObjectUtils.isEmpty(videoNum)) { + videoNum.setUserCredits(videoNum.getUserCredits() + videoNum.getInviteBaseCredits()); userCreateVideoNumMapper.updateById(videoNum); } - } } diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/UserCreditLogServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/UserCreditLogServiceImpl.java new file mode 100644 index 0000000..bd42126 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/UserCreditLogServiceImpl.java @@ -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); + } +} diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/UserPackageDetailServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/UserPackageDetailServiceImpl.java new file mode 100644 index 0000000..22423c5 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/UserPackageDetailServiceImpl.java @@ -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 getDetailInfo() { + return userPackageDetailMapper.selectList(new LambdaQueryWrapper().eq(UserPackageDetail::getIsDel, 0)); + } +} diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/UserTimeConfigServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/UserTimeConfigServiceImpl.java deleted file mode 100644 index 503cc5d..0000000 --- a/suimangService/src/main/java/com/iformall/service/sm/impl/UserTimeConfigServiceImpl.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.iformall.service.sm.impl; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.iformall.domain.po.sm.UserTimeConfig; -import com.iformall.mapper.UserTimeConfigServiceMapper; -import com.iformall.service.sm.UserTimeConfigService; -import io.swagger.models.auth.In; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -@Service -public class UserTimeConfigServiceImpl implements UserTimeConfigService { - - @Autowired - private UserTimeConfigServiceMapper userTimeConfigServiceMapper; - - @Override - public UserTimeConfig getInfoByUerType(Integer i) { - return userTimeConfigServiceMapper.selectOne(new LambdaQueryWrapper().eq(UserTimeConfig::getIsDel, 0).eq(UserTimeConfig::getUserType, i)); - } -} diff --git a/suimangService/src/main/java/com/iformall/sm/AiPreviewResult.java b/suimangService/src/main/java/com/iformall/sm/AiPreviewResult.java index 7d234cf..2d8735f 100644 --- a/suimangService/src/main/java/com/iformall/sm/AiPreviewResult.java +++ b/suimangService/src/main/java/com/iformall/sm/AiPreviewResult.java @@ -10,7 +10,7 @@ public class AiPreviewResult { private Integer code; private String msg; private String url; - private Long time; + private Double time; public String getMsgInfo(Integer code, String msg) { if (code == 3000 && msg.equals("success")) { diff --git a/suimangService/src/main/java/com/iformall/sm/AiVideoHelper.java b/suimangService/src/main/java/com/iformall/sm/AiVideoHelper.java index 1c21f9b..0cfed01 100644 --- a/suimangService/src/main/java/com/iformall/sm/AiVideoHelper.java +++ b/suimangService/src/main/java/com/iformall/sm/AiVideoHelper.java @@ -178,10 +178,11 @@ public class AiVideoHelper { result.setMsg("TTS音色预览失败,请稍后重试"); return result; } - //TODO 从json里面获取音频时长且返回 JSONObject jsonObject = JSON.parseObject(response); JSONObject status = jsonObject.getJSONObject("status"); JSONObject data = jsonObject.getJSONObject("data"); + String strURL = data.getString("url"); + String time = data.getString("time"); Integer code = status.getInteger("code"); String msg = status.getString("msg"); if (code == null) { @@ -192,7 +193,8 @@ 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 { @@ -226,28 +228,28 @@ public class AiVideoHelper { // AiVideoResult video = AiVideoHelper.createVideo(videoParam); // - AiPhotoSpeakParam param = new AiPhotoSpeakParam(); - 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.setUrl("None"); - AiPhotoSpeakResult video = AiVideoHelper.createPhotoSpeakVideo(param); -// +// AiPhotoSpeakParam param = new AiPhotoSpeakParam(); +// 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.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); // AiCheckPhotoResult result = AiVideoHelper.checkPhoto(param); // System.out.println(result); // -// AiPreviewParam param = new AiPreviewParam(); -// param.setGen_txt("今天是个好日子"); -// param.setVoice_id("zh-CN-YunyangNeural"); -// param.setVoice_style("default"); -// param.setGender("male"); -// AiPreviewResult result = AiVideoHelper.voicePreview(param); - + AiPreviewParam param = new AiPreviewParam(); + param.setGen_txt("今天是个好日子"); + param.setVoice_id("zh-CN-YunyangNeural"); + param.setVoice_style("default"); + param.setGender("male"); + AiPreviewResult result = AiVideoHelper.voicePreview(param); + System.out.println(result); } diff --git a/suimangService/src/main/resources/mapper/UserCreateVideoNumMapper.xml b/suimangService/src/main/resources/mapper/UserCreateVideoNumMapper.xml index 30d4704..97a9571 100644 --- a/suimangService/src/main/resources/mapper/UserCreateVideoNumMapper.xml +++ b/suimangService/src/main/resources/mapper/UserCreateVideoNumMapper.xml @@ -7,10 +7,14 @@ UPDATE user_create_video_num - residue_num = #{createVideoNum.residueNum} - 1,create_num = #{createVideoNum.createNum} + 1 + residue_credits = #{createVideoNum.residueCredits} - #{useCredit}, + create_num = #{createVideoNum.createNum} + 1, + create_all_time = #{createVideoNum.createAllTime} + #{time} - residue_num = #{createVideoNum.residueNum} + 1,create_num = #{createVideoNum.createNum} - 1 + residue_credits = #{createVideoNum.residueCredits} + #{useCredit}, + create_num = #{createVideoNum.createNum} - 1, + create_all_time = #{createVideoNum.createAllTime} - #{time} WHERE user_id = #{createVideoNum.userId}