From ffcbabf62e68c2695d0ceab4a4e8f74875e5fd80 Mon Sep 17 00:00:00 2001 From: xupei <1779019091@qq.com> Date: Fri, 3 Nov 2023 11:29:54 +0800 Subject: [PATCH] =?UTF-8?q?Generate=201=E3=80=81=E5=B0=86=E7=94=9F?= =?UTF-8?q?=E6=88=90=E5=9B=BE=E7=89=87=E7=9A=84md5=E5=AD=98=E5=82=A8?= =?UTF-8?q?=E5=88=B0=E6=95=B0=E6=8D=AE=E5=BA=93=202=E3=80=81=E8=AE=B0?= =?UTF-8?q?=E5=BD=95sketchboard=E4=B8=8B=EF=BC=8C=E7=94=9F=E6=88=90?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E6=97=B6=E7=9A=84=E6=80=A7=E5=88=AB=EF=BC=88?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=88=B0generateType=E4=B9=8B=E5=90=8E?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ai/da/common/enums/GenerateModeEnum.java | 8 +++++++ .../ai/da/mapper/GenerateDetailMapper.java | 10 +++++++++ .../da/model/vo/GenerateCollectionItemVO.java | 3 +++ .../da/service/impl/GenerateServiceImpl.java | 22 +++++++++++++++---- .../resources/mapper/GenerateDetailMapper.xml | 13 +++++++++++ src/main/resources/messages_en.properties | 3 ++- 6 files changed, 54 insertions(+), 5 deletions(-) create mode 100644 src/main/resources/mapper/GenerateDetailMapper.xml diff --git a/src/main/java/com/ai/da/common/enums/GenerateModeEnum.java b/src/main/java/com/ai/da/common/enums/GenerateModeEnum.java index bffcc79d..44409731 100644 --- a/src/main/java/com/ai/da/common/enums/GenerateModeEnum.java +++ b/src/main/java/com/ai/da/common/enums/GenerateModeEnum.java @@ -2,6 +2,10 @@ package com.ai.da.common.enums; import lombok.Getter; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + @Getter public enum GenerateModeEnum { @@ -27,4 +31,8 @@ public enum GenerateModeEnum { this.code = code; this.value = value; } + + public static List getGenerateModeList(){ + return Stream.of(TEXT,IMAGE,TEXT_IMAGE).map(GenerateModeEnum::getValue).collect(Collectors.toList()); + } } diff --git a/src/main/java/com/ai/da/mapper/GenerateDetailMapper.java b/src/main/java/com/ai/da/mapper/GenerateDetailMapper.java index 3b6cf30f..d4c0212d 100644 --- a/src/main/java/com/ai/da/mapper/GenerateDetailMapper.java +++ b/src/main/java/com/ai/da/mapper/GenerateDetailMapper.java @@ -3,5 +3,15 @@ package com.ai.da.mapper; import com.ai.da.common.config.mybatis.plus.CommonMapper; import com.ai.da.mapper.entity.GenerateDetail; +import java.util.List; +import java.util.Map; + public interface GenerateDetailMapper extends CommonMapper { + /** + * 查找相同MD5相同level1Type 被like过的图片的libraryId + * @param md5 图片的MD5值 + * @param level1Type levelType + * @return libraryId + */ + List> getLibraryIdThroughMD5(String md5, String level1Type); } diff --git a/src/main/java/com/ai/da/model/vo/GenerateCollectionItemVO.java b/src/main/java/com/ai/da/model/vo/GenerateCollectionItemVO.java index 7079f6cb..eb979c35 100644 --- a/src/main/java/com/ai/da/model/vo/GenerateCollectionItemVO.java +++ b/src/main/java/com/ai/da/model/vo/GenerateCollectionItemVO.java @@ -13,4 +13,7 @@ public class GenerateCollectionItemVO { @ApiModelProperty("generate生成图片的url") private String generateItemUrl; + + @ApiModelProperty("生成的图片是否已经被like") + private Boolean isLiked = Boolean.FALSE; } 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 8acdbb48..91858690 100644 --- a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java @@ -69,13 +69,17 @@ public class GenerateServiceImpl extends ServiceImpl i // 1、获取用户信息 AuthPrincipalVo userHolder = UserContext.getUserHolder(); Long accountId = userHolder.getId(); + if (!GenerateModeEnum.getGenerateModeList().contains(generateThroughImageTextDTO.getGenerateType())){ + throw new BusinessException("unknown.generate.type"); + } // 2、判断必须入参是否为非空 Generate generate = new Generate(); generate.setAccountId(accountId); generate.setLevel1Type(generateThroughImageTextDTO.getLevel1Type()); + // 当level1type是sketchboard时,存数据库需要加上当前性别 generate.setGenerateType(generate.getLevel1Type().equals(SKETCH_BOARD.getRealName()) ? - generateThroughImageTextDTO.getGender() + "_" + generateThroughImageTextDTO.getGenerateType() : + generateThroughImageTextDTO.getGenerateType() + " (" +generateThroughImageTextDTO.getGender() + ")": generateThroughImageTextDTO.getGenerateType()); generate.setModelName(StringUtil.isNullOrEmpty(generateThroughImageTextDTO.getVersion()) ? ModelNameEnum.MODEL_0.getCode() : generateThroughImageTextDTO.getVersion()); generate.setCreateDate(DateUtil.getByTimeZone(generateThroughImageTextDTO.getTimeZone())); @@ -93,7 +97,9 @@ public class GenerateServiceImpl extends ServiceImpl i save(generate); // 4、向模型发起请求 - int mode = GenerateModeEnum.TEXT.getValue().equals(generate.getGenerateType()) ? GenerateModeEnum.TEXT.getCode() : GenerateModeEnum.TEXT_IMAGE.getCode(); + int mode = GenerateModeEnum.TEXT.getValue().equals(generateThroughImageTextDTO.getGenerateType()) ? + GenerateModeEnum.TEXT.getCode() : + GenerateModeEnum.TEXT_IMAGE.getCode(); String category = generateThroughImageTextDTO.getLevel1Type().equals(SKETCH_BOARD.getRealName()) ? "sketch" : generateThroughImageTextDTO.getLevel1Type().equals(PRINT_BOARD.getRealName()) ? "print" : "moodboard"; List generatedSketchUrl = pythonService.generateSketchOrPrint(accountId, Objects.isNull(elementId) ? null : collectionElement.getUrl(), @@ -106,13 +112,21 @@ public class GenerateServiceImpl extends ServiceImpl i List generatedCollectionItems = new ArrayList<>(); generatedSketchUrl.forEach(item -> { GenerateDetail generateDetail = new GenerateDetail(); + GenerateCollectionItemVO generateCollectionItemVO = new GenerateCollectionItemVO(); + String md5 = MD5Utils.encryptFile(minioUtil.getPresignedUrl(item, 24 * 60), Boolean.FALSE); + // 通过MD5值和level1Type,判断不同level1Type下相同的图片是否被like过 + List> libraryIdList = generateDetailMapper.getLibraryIdThroughMD5(md5, generateThroughImageTextDTO.getLevel1Type()); + if (!libraryIdList.isEmpty()){ + generateDetail.setIsLike((byte) 1); + generateDetail.setLibraryId(libraryIdList.get(0).get("library_id")); + generateCollectionItemVO.setIsLiked(Boolean.TRUE); + } generateDetail.setUrl(item); generateDetail.setGenerateId(generate.getId()); generateDetail.setCreateDate(DateUtil.getByTimeZone(generateThroughImageTextDTO.getTimeZone())); - generateDetail.setMd5(MD5Utils.encryptFile(minioUtil.getPresignedUrl(item, 24 * 60), Boolean.FALSE)); + generateDetail.setMd5(md5); generateDetailMapper.insert(generateDetail); - GenerateCollectionItemVO generateCollectionItemVO = new GenerateCollectionItemVO(); generateCollectionItemVO.setGenerateItemId(generateDetail.getId()); generateCollectionItemVO.setGenerateItemUrl(minioUtil.getPresignedUrl(item, 24 * 60)); generatedCollectionItems.add(generateCollectionItemVO); diff --git a/src/main/resources/mapper/GenerateDetailMapper.xml b/src/main/resources/mapper/GenerateDetailMapper.xml new file mode 100644 index 00000000..3dd87411 --- /dev/null +++ b/src/main/resources/mapper/GenerateDetailMapper.xml @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/src/main/resources/messages_en.properties b/src/main/resources/messages_en.properties index 6a5e7c86..3b67564c 100644 --- a/src/main/resources/messages_en.properties +++ b/src/main/resources/messages_en.properties @@ -142,4 +142,5 @@ generateItem.does.not.exist=generateItem does not exist! level1Type.does.not.match=level1Type does not match! the.image.does.not.exist.please.reselect=the image does not exist, please reselect! design.item.does.not.exist=design item does not exist! -layers.does.not.exists=layers does not exists! \ No newline at end of file +layers.does.not.exists=layers does not exists! +unknown.generate.type=unknown generate type! \ No newline at end of file