From 9e653595a9fc49829c7733ff4133e673652e8411 Mon Sep 17 00:00:00 2001 From: xupei Date: Tue, 30 Jan 2024 11:48:26 +0800 Subject: [PATCH] =?UTF-8?q?generate=20=E6=B7=BB=E5=8A=A0=E8=AF=95=E7=94=A8?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ai/da/controller/GenerateController.java | 3 +- .../dto/GenerateThroughImageTextDTO.java | 3 ++ .../ai/da/model/vo/PrepareForGenerateVO.java | 25 ++++++++++++ .../com/ai/da/service/GenerateService.java | 3 +- .../da/service/impl/GenerateServiceImpl.java | 38 ++++++++++++++++++- 5 files changed, 68 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/ai/da/model/vo/PrepareForGenerateVO.java diff --git a/src/main/java/com/ai/da/controller/GenerateController.java b/src/main/java/com/ai/da/controller/GenerateController.java index b3f6fb5b..c752fbc0 100644 --- a/src/main/java/com/ai/da/controller/GenerateController.java +++ b/src/main/java/com/ai/da/controller/GenerateController.java @@ -6,6 +6,7 @@ import com.ai.da.model.dto.GenerateThroughImageTextDTO; import com.ai.da.model.vo.GenerateCaptionVO; import com.ai.da.model.vo.GenerateCollectionVO; import com.ai.da.model.vo.GenerateLikeVO; +import com.ai.da.model.vo.PrepareForGenerateVO; import com.ai.da.service.GenerateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -55,7 +56,7 @@ public class GenerateController { @ApiOperation(value = "发起生成请求,异步获取结果") @PostMapping("/prepare") - public Response prepareForGenerate(@Valid @RequestBody GenerateThroughImageTextDTO generateThroughImageTextDTO) { + public Response prepareForGenerate(@Valid @RequestBody GenerateThroughImageTextDTO generateThroughImageTextDTO) { return Response.success(generateService.prepareForGenerate(generateThroughImageTextDTO)); } diff --git a/src/main/java/com/ai/da/model/dto/GenerateThroughImageTextDTO.java b/src/main/java/com/ai/da/model/dto/GenerateThroughImageTextDTO.java index fd45533c..1adfdbef 100644 --- a/src/main/java/com/ai/da/model/dto/GenerateThroughImageTextDTO.java +++ b/src/main/java/com/ai/da/model/dto/GenerateThroughImageTextDTO.java @@ -47,4 +47,7 @@ public class GenerateThroughImageTextDTO { @ApiModelProperty("唯一id,用于保持消息唯一性") String uniqueId; + + @ApiModelProperty("是否是测试用户") + Boolean isTestUser; } diff --git a/src/main/java/com/ai/da/model/vo/PrepareForGenerateVO.java b/src/main/java/com/ai/da/model/vo/PrepareForGenerateVO.java new file mode 100644 index 00000000..438d94db --- /dev/null +++ b/src/main/java/com/ai/da/model/vo/PrepareForGenerateVO.java @@ -0,0 +1,25 @@ +package com.ai.da.model.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel("prepare for generate响应vo") +public class PrepareForGenerateVO { + + @ApiModelProperty("uniqueId") + private String uniqueId; + + @ApiModelProperty("剩余使用次数") + private Integer leftUsageCount; + + public PrepareForGenerateVO(String uniqueId, Integer leftUsageCount) { + this.uniqueId = uniqueId; + this.leftUsageCount = leftUsageCount; + } + + public PrepareForGenerateVO(Integer leftUsageCount) { + this.leftUsageCount = leftUsageCount; + } +} diff --git a/src/main/java/com/ai/da/service/GenerateService.java b/src/main/java/com/ai/da/service/GenerateService.java index d1a327bd..06ca4122 100644 --- a/src/main/java/com/ai/da/service/GenerateService.java +++ b/src/main/java/com/ai/da/service/GenerateService.java @@ -7,6 +7,7 @@ import com.ai.da.model.dto.GenerateThroughImageTextDTO; import com.ai.da.model.vo.GenerateCaptionVO; import com.ai.da.model.vo.GenerateCollectionVO; import com.ai.da.model.vo.GenerateLikeVO; +import com.ai.da.model.vo.PrepareForGenerateVO; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -27,7 +28,7 @@ public interface GenerateService extends IService { GenerateCollectionVO getGenerateResult(String uniqueId); - String prepareForGenerate(GenerateThroughImageTextDTO generateThroughImageTextDTO); + PrepareForGenerateVO prepareForGenerate(GenerateThroughImageTextDTO generateThroughImageTextDTO); Long getRankPosition(String uniqueId); diff --git a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java index 095db937..0ea8e713 100644 --- a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java @@ -314,7 +314,7 @@ public class GenerateServiceImpl extends ServiceImpl i } @Override - public String prepareForGenerate(GenerateThroughImageTextDTO generateThroughImageTextDTO) { + public PrepareForGenerateVO prepareForGenerate(GenerateThroughImageTextDTO generateThroughImageTextDTO) { // 1、参数检查,判断必须参数是否为空 if (Objects.isNull(generateThroughImageTextDTO.getUserId())) { throw new BusinessException("userId cannot be empty"); @@ -323,6 +323,16 @@ public class GenerateServiceImpl extends ServiceImpl i if (!GenerateModeEnum.getGenerateModeList().contains(generateType)) { throw new BusinessException("unknown.generate.type"); } + + // 判断试用用户是否还有剩余试用机会 + int trialsCount = 0; + if (generateThroughImageTextDTO.getIsTestUser()){ + trialsCount = getTrialsCount(generateThroughImageTextDTO.getUserId(), generateThroughImageTextDTO.getLevel1Type()); + if (trialsCount >= 2){ + return new PrepareForGenerateVO(0); + } + } + String text = generateThroughImageTextDTO.getText(); Long elementId = generateThroughImageTextDTO.getCollectionElementId(); validateGeneraType(new Generate(), text, elementId, generateType); @@ -361,7 +371,7 @@ public class GenerateServiceImpl extends ServiceImpl i rabbitMQService.publishMessage(jsonString); // 5、返回唯一id - return uuid; + return new PrepareForGenerateVO(uuid, 2 - trialsCount); } @Override @@ -458,4 +468,28 @@ public class GenerateServiceImpl extends ServiceImpl i GenerateCancel generateCancel = new GenerateCancel(userId, uniqueId, DateUtil.getByTimeZone(timeZone)); generateCancelMapper.insert(generateCancel); } + + // 判断试用用户试用generate机会是否使用完毕 + private int getTrialsCount(Long userId, String level1Type){ + List getGenerateList = getGenerateByAccountId(userId, level1Type); + int trialsCount ; + if (getGenerateList.isEmpty()){ + trialsCount = 0; + } else if (getGenerateList.size() == 1) { + trialsCount = 1; + } else if (getGenerateList.size() == 2) { + trialsCount = 2; + }else { + trialsCount = 2; + } + return trialsCount; + } + + public List getGenerateByAccountId(Long accountId, String level1Type){ + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("account_id",accountId); + qw.eq("level1_type", level1Type); + + return baseMapper.selectList(qw); + } }