Merge remote-tracking branch 'origin/develop' into develop
This commit is contained in:
@@ -46,7 +46,7 @@ public interface CollectionElementService extends IService<CollectionElement> {
|
||||
* @param generatePrintDTO
|
||||
* @return
|
||||
*/
|
||||
CollectionGeneratePrintVO generatePrint(CollectionGeneratePrintDTO generatePrintDTO);
|
||||
GenerateCollectionItemVO generatePrint(CollectionGeneratePrintDTO generatePrintDTO);
|
||||
|
||||
/**
|
||||
* 保存印花图片
|
||||
|
||||
@@ -23,6 +23,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.google.common.collect.Lists;
|
||||
import io.minio.errors.MinioException;
|
||||
import io.netty.util.internal.StringUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
@@ -33,6 +34,7 @@ import org.springframework.util.StringUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -173,7 +175,8 @@ public class CollectionElementServiceImpl extends ServiceImpl<CollectionElementM
|
||||
}
|
||||
|
||||
@Override
|
||||
public CollectionGeneratePrintVO generatePrint(CollectionGeneratePrintDTO generatePrintDTO) {
|
||||
public GenerateCollectionItemVO generatePrint(CollectionGeneratePrintDTO generatePrintDTO) {
|
||||
Long userId = UserContext.getUserHolder().getId();
|
||||
String url1 = null;
|
||||
String url2 = null;
|
||||
CollectionElement element1 = selectById(generatePrintDTO.getSelect1Id());
|
||||
@@ -198,19 +201,30 @@ public class CollectionElementServiceImpl extends ServiceImpl<CollectionElementM
|
||||
}
|
||||
List<String> printPath = Arrays.asList(url1, url2);
|
||||
//调取python 接口
|
||||
String generateUrl = pythonService.generatePrint(printPath);
|
||||
String generateUrl = pythonService.generatePrint(printPath,userId);
|
||||
if (StringUtils.isEmpty(generateUrl)) {
|
||||
throw new BusinessException("generate.interface.exception");
|
||||
}
|
||||
//用户信息
|
||||
AuthPrincipalVo userInfo = UserContext.getUserHolder();
|
||||
CollectionElement element = resolveData(generateUrl, generatePrintDTO.getTimeZone(), userInfo);
|
||||
if (!this.save(element)) {
|
||||
throw new BusinessException("save.collectionElement.failed");
|
||||
}
|
||||
CollectionGeneratePrintVO collectionGeneratePrint = CopyUtil.copyObject(element, CollectionGeneratePrintVO.class);
|
||||
collectionGeneratePrint.setDesignType(DesignTypeEnum.COLLECTION.getRealName());
|
||||
return collectionGeneratePrint;
|
||||
|
||||
// 保存合成信息到generate表
|
||||
Generate generate = setGenerate(userId, generatePrintDTO.getTimeZone());
|
||||
generateService.save(generate);
|
||||
|
||||
// 保存合成后的信息到generateDetail
|
||||
GenerateDetail generateDetail = setGenerateDetail(generate.getId(), generateUrl, generatePrintDTO.getTimeZone());
|
||||
generateDetailMapper.insert(generateDetail);
|
||||
|
||||
// CollectionElement element = resolveData(generateUrl, generatePrintDTO.getTimeZone(), userId);
|
||||
// if (!this.save(element)) {
|
||||
// throw new BusinessException("save.collectionElement.failed");
|
||||
// }
|
||||
// CollectionGeneratePrintVO collectionGeneratePrint = CopyUtil.copyObject(element, CollectionGeneratePrintVO.class);
|
||||
// collectionGeneratePrint.setUrl(minioUtil.getPresignedUrl(generateUrl, 24 * 60));
|
||||
// collectionGeneratePrint.setDesignType(DesignTypeEnum.COLLECTION.getRealName());
|
||||
// return collectionGeneratePrint;
|
||||
return new GenerateCollectionItemVO(generateDetail.getId(),
|
||||
minioUtil.getPresignedUrl(generateUrl, 24 * 60),
|
||||
generateDetail.getIsLike().equals((byte) 0) ? Boolean.FALSE : Boolean.TRUE);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -284,16 +298,23 @@ public class CollectionElementServiceImpl extends ServiceImpl<CollectionElementM
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
private CollectionElement resolveData(String path, String timeZone, AuthPrincipalVo userInfo) {
|
||||
File file = new File(path);
|
||||
private CollectionElement resolveData(String path, String timeZone, Long userId){
|
||||
// File file = new File(path);
|
||||
|
||||
String name = path.substring(path.lastIndexOf("/") + 1, path.lastIndexOf("."));
|
||||
CollectionElement element = new CollectionElement();
|
||||
element.setAccountId(userInfo.getId());
|
||||
element.setAccountId(userId);
|
||||
element.setCollectionId(0L);
|
||||
element.setName(file.getName());
|
||||
element.setName(name);
|
||||
element.setLevel1Type(CollectionLevel1TypeEnum.PRINT_BOARD.getRealName());
|
||||
element.setUrl(path);
|
||||
element.setHasPin((byte) 0);
|
||||
element.setMd5(MD5Utils.encryptFile(path, Boolean.FALSE));
|
||||
try {
|
||||
element.setMd5(MD5Utils.encryptFile(minioUtil.download(path)));
|
||||
} catch (MinioException | IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
//按时区计算
|
||||
element.setCreateDate(DateUtil.getByTimeZone(timeZone));
|
||||
return element;
|
||||
@@ -774,4 +795,38 @@ public class CollectionElementServiceImpl extends ServiceImpl<CollectionElementM
|
||||
}
|
||||
return collectionElement;
|
||||
}
|
||||
|
||||
private Generate setGenerate(Long userId,String timeZone){
|
||||
Generate generate = new Generate();
|
||||
generate.setAccountId(userId);
|
||||
generate.setLevel1Type(CollectionLevel1TypeEnum.PRINT_BOARD.getRealName());
|
||||
generate.setGenerateType("synthesis");
|
||||
generate.setModelName("Image Synthesis Model");
|
||||
generate.setCreateDate(DateUtil.getByTimeZone(timeZone));
|
||||
return generate;
|
||||
}
|
||||
|
||||
private GenerateDetail setGenerateDetail(Long generateId, String url, String timeZone){
|
||||
GenerateDetail generateDetail = new GenerateDetail();
|
||||
generateDetail.setGenerateId(generateId);
|
||||
generateDetail.setUrl(url);
|
||||
String md5;
|
||||
try {
|
||||
md5 = MD5Utils.encryptFile(minioUtil.download(url));
|
||||
} catch (MinioException | IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
// 通过MD5来确认当前图片是否有被like过,避免重复like
|
||||
List<Map<String, Long>> libraryIds = generateDetailMapper.getLibraryIdThroughMD5(md5, CollectionLevel1TypeEnum.PRINT_BOARD.getRealName());
|
||||
if (libraryIds.isEmpty()){
|
||||
generateDetail.setIsLike((byte) 0);
|
||||
}else {
|
||||
generateDetail.setIsLike((byte) 1);
|
||||
generateDetail.setLibraryId(libraryIds.get(0).get("library_id"));
|
||||
}
|
||||
generateDetail.setMd5(md5);
|
||||
generateDetail.setCreateDate(DateUtil.getByTimeZone(timeZone));
|
||||
|
||||
return generateDetail;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -185,11 +185,15 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
||||
|
||||
// 2、将like的图片信息存入library
|
||||
// 2.1、不能重复喜欢
|
||||
// 2.1.1 判断该图片是否被喜欢过
|
||||
Library libraryDetail = libraryService.getById(generateDetail.getLibraryId());
|
||||
if ( (Objects.nonNull(generateDetail.getLibraryId()) && !generateDetail.getLibraryId().equals(0L))
|
||||
|| Objects.nonNull(libraryDetail)){
|
||||
throw new BusinessException("duplicate.likes.are.not.allowed");
|
||||
}
|
||||
|
||||
// todo 2.1.2、判断library中是否有相同MD5的图片
|
||||
|
||||
// 2.2、添加到library
|
||||
AuthPrincipalVo userInfo = UserContext.getUserHolder();
|
||||
Long accountId = userInfo.getId();
|
||||
|
||||
Reference in New Issue
Block a user