BUGFIX: modifySketch 在library中修改后需要保存到library
This commit is contained in:
@@ -80,4 +80,18 @@ public class Library implements Serializable {
|
||||
private Date updateDate;
|
||||
|
||||
// private Integer isCopy;
|
||||
|
||||
|
||||
public Library() {
|
||||
}
|
||||
|
||||
public Library(Long accountId, String level1Type, String level2Type, String level3Type, String url, String md5, Date createDate) {
|
||||
this.accountId = accountId;
|
||||
this.level1Type = level1Type;
|
||||
this.level2Type = level2Type;
|
||||
this.level3Type = level3Type;
|
||||
this.url = url;
|
||||
this.md5 = md5;
|
||||
this.createDate = createDate;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,9 +21,12 @@ public class GenerateModifyDTO {
|
||||
@ApiModelProperty(value = "sketch所属分类", required = true)
|
||||
private String category;
|
||||
|
||||
@ApiModelProperty(value = "originalId的来源 Library || Generate(默认为空)", required = true)
|
||||
private String originalIdSource;
|
||||
|
||||
@NotNull(message = "id cannot be empty")
|
||||
@ApiModelProperty(value = "原图id", required = true)
|
||||
private String originalId;
|
||||
private Long originalId;
|
||||
|
||||
@ApiModelProperty("是否覆盖原图")
|
||||
private Boolean isOverride;
|
||||
|
||||
@@ -894,43 +894,95 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public GenerateResultVO modifySketch(GenerateModifyDTO generateModifyDTO) {
|
||||
log.info("修改提取出的sketch,并加入到library");
|
||||
|
||||
// 提取常用参数
|
||||
Long accountId = UserContext.getUserHolder().getId();
|
||||
String base64 = generateModifyDTO.getBase64();
|
||||
String gender = generateModifyDTO.getGender();
|
||||
String gender = generateModifyDTO.getGender().toLowerCase();
|
||||
String category = generateModifyDTO.getCategory();
|
||||
Long originalId = generateModifyDTO.getOriginalId();
|
||||
boolean isOverride = generateModifyDTO.getIsOverride();
|
||||
boolean isFromLibrary = generateModifyDTO.getOriginalIdSource().equals("Library");
|
||||
|
||||
// 将base64上传到minio
|
||||
String path;
|
||||
GenerateDetail originalDetail = generateDetailMapper.selectById(generateModifyDTO.getOriginalId());
|
||||
Long generateDetailId = originalDetail.getId();
|
||||
if (generateModifyDTO.getIsOverride()){
|
||||
path = originalDetail.getUrl().replaceFirst("^[^/]+/", "").replaceFirst("\\.[^.]+$", "");
|
||||
}else {
|
||||
path = accountId + "/sketchboard/" + gender.toLowerCase() + "/" + category + "/" + UUID.randomUUID();
|
||||
// 获取原始路径和可能的generateId
|
||||
PathInfo pathInfo = getOriginalPathAndGenerateId(isFromLibrary, originalId);
|
||||
|
||||
// 确定存储路径
|
||||
String storagePath = isOverride
|
||||
? pathInfo.originalPath.replaceFirst("^[^/]+/", "").replaceFirst("\\.[^.]+$", "")
|
||||
: accountId + "/sketchboard/" + gender + "/" + category + "/" + UUID.randomUUID();
|
||||
|
||||
// 上传到MinIO
|
||||
String minioPath = minioUtil.base64UploadToPath(base64, userBucket, storagePath);
|
||||
log.info("修改后的图片:{}", minioPath);
|
||||
|
||||
// 保存到数据库并返回结果
|
||||
return isFromLibrary
|
||||
? handleLibrarySave(accountId, originalId, minioPath, category, gender, isOverride)
|
||||
: handleGenerateSave(originalId, pathInfo.generateId, minioPath, category, isOverride);
|
||||
}
|
||||
|
||||
private static class PathInfo {
|
||||
String originalPath;
|
||||
Long generateId;
|
||||
|
||||
PathInfo(String originalPath, Long generateId) {
|
||||
this.originalPath = originalPath;
|
||||
this.generateId = generateId;
|
||||
}
|
||||
}
|
||||
|
||||
String minioPath = minioUtil.base64UploadToPath(base64, userBucket, path);
|
||||
private PathInfo getOriginalPathAndGenerateId(boolean isFromLibrary, Long originalId) {
|
||||
if (isFromLibrary) {
|
||||
return new PathInfo(libraryService.getById(originalId).getUrl(), null);
|
||||
} else {
|
||||
GenerateDetail detail = generateDetailMapper.selectById(originalId);
|
||||
return new PathInfo(detail.getUrl(), detail.getGenerateId());
|
||||
}
|
||||
}
|
||||
|
||||
log.info("修改后的图片 : {}", minioPath);
|
||||
private GenerateResultVO handleLibrarySave(Long accountId, Long libraryId, String minioPath,
|
||||
String category, String gender, boolean isOverride) {
|
||||
Library library;
|
||||
if (isOverride) {
|
||||
library = new Library();
|
||||
library.setId(libraryId);
|
||||
library.setUrl(minioPath);
|
||||
library.setUpdateDate(new Date());
|
||||
libraryService.updateById(library);
|
||||
} else {
|
||||
library = new Library(accountId, "Sketchboard", category, gender, minioPath,
|
||||
MD5Utils.encryptFile(minioUtil.getPreSignedUrl(minioPath, CommonConstant.MINIO_IMAGE_EXPIRE_TIME), false),
|
||||
new Date());
|
||||
libraryService.save(library);
|
||||
libraryId = library.getId();
|
||||
}
|
||||
return buildResultVO(libraryId, minioPath, category);
|
||||
}
|
||||
|
||||
// 存入db 保存到t_generate_detail
|
||||
if (!generateModifyDTO.getIsOverride()){
|
||||
GenerateDetail generateDetail = new GenerateDetail();
|
||||
generateDetail.setGenerateId(originalDetail.getGenerateId());
|
||||
private GenerateResultVO handleGenerateSave(Long originalId, Long generateId, String minioPath,
|
||||
String category, boolean isOverride) {
|
||||
GenerateDetail generateDetail = new GenerateDetail();
|
||||
if (isOverride) {
|
||||
generateDetail.setId(originalId);
|
||||
generateDetail.setUrl(minioPath);
|
||||
generateDetail.setUpdateDate(new Date());
|
||||
generateDetailMapper.updateById(generateDetail);
|
||||
} else {
|
||||
generateDetail.setGenerateId(generateId);
|
||||
generateDetail.setUrl(minioPath);
|
||||
generateDetail.setIsLike((byte)0);
|
||||
generateDetail.setMd5(MD5Utils.encryptFile(minioUtil.getPreSignedUrl(minioPath, CommonConstant.MINIO_IMAGE_EXPIRE_TIME, true), Boolean.FALSE));
|
||||
generateDetail.setMd5(MD5Utils.encryptFile(minioUtil.getPreSignedUrl(minioPath,
|
||||
CommonConstant.MINIO_IMAGE_EXPIRE_TIME, true), Boolean.FALSE));
|
||||
generateDetail.setCreateDate(LocalDateTime.now());
|
||||
generateDetailMapper.insert(generateDetail);
|
||||
|
||||
generateDetailId = generateDetail.getId();
|
||||
}else {
|
||||
GenerateDetail generateDetail = new GenerateDetail();
|
||||
generateDetail.setUrl(minioPath);
|
||||
generateDetail.setId(generateDetailId);
|
||||
generateDetailMapper.updateById(generateDetail);
|
||||
originalId = generateDetail.getId();
|
||||
}
|
||||
return buildResultVO(originalId, minioPath, category);
|
||||
}
|
||||
|
||||
return new GenerateResultVO(generateDetailId, minioUtil.getPreSignedUrl(minioPath, CommonConstant.MINIO_IMAGE_EXPIRE_TIME, true), "Success", category);
|
||||
private GenerateResultVO buildResultVO(Long id, String minioPath, String category) {
|
||||
String url = minioUtil.getPreSignedUrl(minioPath, CommonConstant.MINIO_IMAGE_EXPIRE_TIME, true);
|
||||
return new GenerateResultVO(id, url, "Success", category);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user