局部design

This commit is contained in:
2025-02-25 11:48:08 +08:00
parent e60c3d7aa3
commit cf38e7253f
10 changed files with 104 additions and 10 deletions

View File

@@ -26,7 +26,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.google.common.collect.Lists;
import com.mysql.cj.util.StringUtils;
import io.netty.util.internal.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.SerializationUtils;
@@ -88,9 +87,10 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
@Value("${minio.bucketName.modifiedSketch}")
private String modifiedSketchBucket;
@Value("${minio.bucketName.clothing}")
private String clothingBucket;
@Value("${minio.bucketName.partialDesign}")
private String partialDesignBucket;
@Autowired
private RedisUtil redisUtil;
@@ -358,11 +358,7 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
}
designItemDetail.setIconPath(detail.getIcon());
designItemDetail.setUndividedLayer(categoryAndUndividedLayer.get(detail.getType().toLowerCase()));
// 印花存储在design_item_detail_print表中 这里还要存吗?
// DesignPythonItemPrint printObject = detail.getPrintToPython();
// designItemDetail.setPrintPath(Objects.isNull(printObject) ? "" : printObject.getPath());
// 当有多个印花后返回的printObject太长导致存储到数据库时报错
// designItemDetail.setPrintJson(JSON.toJSONString(printObject));
designItemDetail.setPartialDesign(detail.getPartial_design());
designItemDetails.add(designItemDetail);
});
// businessId 来自t_sys_file或者t_library
@@ -452,6 +448,11 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
log.info("set labelingMask为空便于日志打印");
i.setMaskUrl(null);
}
if (!Objects.isNull(i.getPartialDesignDTO()) &&
!StringUtil.isNullOrEmpty(i.getPartialDesignDTO().getPartialDesignBase64())){
log.info("set partialDesignBase64为空便于日志打印");
i.getPartialDesignDTO().setPartialDesignBase64(null);
}
});
log.info("designSingle request入参 ==> " + JSONObject.toJSONString(clone));
@@ -516,6 +517,8 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
// maskBase64ToPath(designSingleIncludeLayersDTO, setNull);
maskBase64ToPath(designSingleIncludeLayersDTO, Boolean.TRUE);
partialDesignBase64ToImage(designSingleIncludeLayersDTO, userId);
// 组装入参
DesignPythonObjects objects = pythonService.covertDesignSingleParam(
designSingleIncludeLayersDTO, design.getSingleOverall(),
@@ -556,7 +559,6 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
}
List<DesignPythonOutfitVO> detailsVO = new ArrayList<>();
tDesignPythonOutfitDetails.forEach(detail -> {
String type = detail.getImageCategory().split("_")[0];
detailsVO.add(designPythonOutfitDetailService.convertToDesignPythonOutfitVO(detail, null));
@@ -624,6 +626,31 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
});
}
private void partialDesignBase64ToImage(DesignSingleIncludeLayersDTO designSingleIncludeLayersDTO, Long accountId){
designSingleIncludeLayersDTO.getDesignSingleItemDTOList().forEach(item -> {
PartialDesignDTO partialDesignDTO = item.getPartialDesignDTO();
if (!Objects.isNull(item.getPartialDesignDTO())
&& !StringUtil.isNullOrEmpty(item.getPartialDesignDTO().getPartialDesignBase64())){
String path ;
if (!StringUtil.isNullOrEmpty(partialDesignDTO.getPartialDesignMinioPath())){
String sourcePath = partialDesignDTO.getPartialDesignMinioPath();
path = sourcePath.substring(sourcePath.indexOf("/") + 1, sourcePath.lastIndexOf("."));
}else {
path = accountId + "/" + CommonConstant.PARTIAL_DESIGN_FILENAME + "/" + UUID.randomUUID();
}
// todo 将原图地址作为修改后的图片地址,放在不同的桶
String newPath = minioUtil.base64UploadToPath(partialDesignDTO.getPartialDesignBase64(), partialDesignBucket, path);
if (StringUtil.isNullOrEmpty(newPath)){
log.error("局部design图片上传失败");
throw new BusinessException("partial.design.failed");
}
item.getPartialDesignDTO().setPartialDesignMinioPath(newPath);
}else {
item.setPartialDesignDTO(new PartialDesignDTO(null));
}
});
}
@Override
public Map<String, String> setTypeAndUndividedLayer(JSONArray layers){
HashMap<String, String> categoryAndLayer = new HashMap<>();
@@ -761,6 +788,9 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
&& (flag ? Boolean.TRUE : singleItem.getPriority().equals(layers.getPriority())))
).collect(Collectors.toList()));
designItemClothesDetailVO.setGradient(singleItem.getGradient());
String partialDesignMinioPath = singleItem.getPartialDesignDTO().getPartialDesignMinioPath();
String preSignedUrl = StringUtil.isNullOrEmpty(partialDesignMinioPath) ? null : minioUtil.getPreSignedUrl(partialDesignMinioPath, CommonConstant.MINIO_IMAGE_EXPIRE_TIME, true);
designItemClothesDetailVO.setPartialDesign(new PartialDesignDTO(partialDesignMinioPath, preSignedUrl));
if (categoryAndUndividedLayer.containsKey(singleItem.getType().toLowerCase())) designItemClothesDetailVO.setUndividedLayer(minioUtil.getPreSignedUrl(categoryAndUndividedLayer.get(singleItem.getType().toLowerCase()), CommonConstant.MINIO_IMAGE_EXPIRE_TIME, true));
body.setLayersObject(layersObject.stream().filter(layers -> layers.getImageCategory().equals("body")).collect(Collectors.toList()));