Generate
1、将生成图片的md5存储到数据库 2、记录sketchboard下,生成图片时的性别(添加到generateType之后)
This commit is contained in:
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -13,4 +13,7 @@ public class GenerateCollectionItemVO {
|
||||
|
||||
@ApiModelProperty("generate生成图片的url")
|
||||
private String generateItemUrl;
|
||||
|
||||
@ApiModelProperty("生成的图片是否已经被like")
|
||||
private Boolean isLiked = Boolean.FALSE;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
13
src/main/resources/mapper/GenerateDetailMapper.xml
Normal file
13
src/main/resources/mapper/GenerateDetailMapper.xml
Normal 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>
|
||||
@@ -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!
|
||||
Reference in New Issue
Block a user