1、将生成图片的md5存储到数据库
2、记录sketchboard下,生成图片时的性别(添加到generateType之后)
This commit is contained in:
xupei
2023-11-03 11:29:54 +08:00
parent 0313149ea5
commit ffcbabf62e
6 changed files with 54 additions and 5 deletions

View File

@@ -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<String> getGenerateModeList(){
return Stream.of(TEXT,IMAGE,TEXT_IMAGE).map(GenerateModeEnum::getValue).collect(Collectors.toList());
}
}

View File

@@ -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<GenerateDetail> {
/**
* 查找相同MD5相同level1Type 被like过的图片的libraryId
* @param md5 图片的MD5值
* @param level1Type levelType
* @return libraryId
*/
List<Map<String,Long>> getLibraryIdThroughMD5(String md5, String level1Type);
}

View File

@@ -13,4 +13,7 @@ public class GenerateCollectionItemVO {
@ApiModelProperty("generate生成图片的url")
private String generateItemUrl;
@ApiModelProperty("生成的图片是否已经被like")
private Boolean isLiked = Boolean.FALSE;
}

View File

@@ -69,13 +69,17 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> 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<GenerateMapper, Generate> 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<String> generatedSketchUrl = pythonService.generateSketchOrPrint(accountId, Objects.isNull(elementId) ? null : collectionElement.getUrl(),
@@ -106,13 +112,21 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
List<GenerateCollectionItemVO> 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<Map<String,Long>> 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);

View File

@@ -0,0 +1,13 @@
<?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.ai.da.mapper.GenerateDetailMapper">
<select id="getLibraryIdThroughMD5" resultType="java.util.Map">
select a.library_id
from t_generate_detail a
left join t_generate b
on a.generate_id = b.id
where a.md5 = #{md5}
and a.is_like = 1
and b.level1_type = #{level1Type}
</select>
</mapper>

View File

@@ -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!
layers.does.not.exists=layers does not exists!
unknown.generate.type=unknown generate type!