diff --git a/src/main/java/com/ai/da/model/dto/DesignSingleIncludeLayersDTO.java b/src/main/java/com/ai/da/model/dto/DesignSingleIncludeLayersDTO.java index 76161990..b2b5828d 100644 --- a/src/main/java/com/ai/da/model/dto/DesignSingleIncludeLayersDTO.java +++ b/src/main/java/com/ai/da/model/dto/DesignSingleIncludeLayersDTO.java @@ -26,6 +26,9 @@ public class DesignSingleIncludeLayersDTO { @ApiModelProperty("进度") private String processId; + @ApiModelProperty("性别") + private String gender; + @NotBlank(message = "timeZone.cannot.be.empty") @ApiModelProperty("本地时区,比如 'Asia/Tokyo' 东京时间 , 'Asia/Shanghai' 北京时间 由js本地获取") private String timeZone; diff --git a/src/main/java/com/ai/da/model/dto/DesignSingleItemDTO.java b/src/main/java/com/ai/da/model/dto/DesignSingleItemDTO.java index 8206a68f..77b8b431 100644 --- a/src/main/java/com/ai/da/model/dto/DesignSingleItemDTO.java +++ b/src/main/java/com/ai/da/model/dto/DesignSingleItemDTO.java @@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import java.util.List; @@ -14,6 +15,14 @@ public class DesignSingleItemDTO { @ApiModelProperty("切换图片对应的id") private Long id; + @NotEmpty(message = "changed cannot be empty") + @ApiModelProperty("当前服装的id是否被添加随机数") + private Boolean changed; + + @NotBlank(message = "designType cannot be empty") + @ApiModelProperty("当前图片来源于用户上传还是从library选择 Collection/Library") + private String designType; + @NotBlank(message = "type.cannot.be.empty") @ApiModelProperty("生成item实际对应的类型 有:outwear,dress,blouse,skirt,trousers Shoes Hairstyle Earring") private String type; diff --git a/src/main/java/com/ai/da/model/vo/DesignItemClothesDetailVO.java b/src/main/java/com/ai/da/model/vo/DesignItemClothesDetailVO.java index 70ca7b46..2b5c3667 100644 --- a/src/main/java/com/ai/da/model/vo/DesignItemClothesDetailVO.java +++ b/src/main/java/com/ai/da/model/vo/DesignItemClothesDetailVO.java @@ -17,6 +17,12 @@ public class DesignItemClothesDetailVO { @ApiModelProperty("对应的上游id") private Long id; + @ApiModelProperty("该id末尾是否被加了随机数") + private Boolean changed; + + @ApiModelProperty("该图片来源 Collection / Library") + private String designType; + @ApiModelProperty("对应的类型 有:Outwear,Dress,Blouse,Skirt,Trousers Shoes Hairstyle Earring Body") private String type; diff --git a/src/main/java/com/ai/da/model/vo/DesignSinglePrint.java b/src/main/java/com/ai/da/model/vo/DesignSinglePrint.java index 94575022..54818442 100644 --- a/src/main/java/com/ai/da/model/vo/DesignSinglePrint.java +++ b/src/main/java/com/ai/da/model/vo/DesignSinglePrint.java @@ -12,6 +12,9 @@ import java.util.List; @ApiModel("design single 印花详情") public class DesignSinglePrint { + @ApiModelProperty("印花是用户上传的还是从library中选的 collection/library") + private String designType; + @ApiModelProperty("印花url") private String path; diff --git a/src/main/java/com/ai/da/python/PythonService.java b/src/main/java/com/ai/da/python/PythonService.java index 94cf664b..8e42c1d8 100644 --- a/src/main/java/com/ai/da/python/PythonService.java +++ b/src/main/java/com/ai/da/python/PythonService.java @@ -2595,13 +2595,21 @@ public class PythonService { List response = new ArrayList<>(); designSingleItemList.forEach(designSingleItem -> { + Long businessId; + if (!designSingleIncludeLayersDTO.getIsPreview() && designSingleItem.getChanged()){ + String s = String.valueOf(designSingleItem.getId()); + businessId = Long.parseLong(s.substring(0,s.length() - 3)); + }else { + businessId = designSingleItem.getId(); + } response.add(new DesignPythonItem( designSingleItem.getType(), designSingleItem.getPath(), designSingleItem.getColor(), resolveDesignSinglePrint(designSingleItem.getPrintObject(), designSingleItem.getPath()), // businessId designItemDetailId (python端确认没有作用,但是数据库需要存,作用:未知) - designSingleItem.getId(), +// designSingleItem.getId(), + businessId, pythonTAllInfoService.getImageIdByPath(designSingleItem.getPath()), designSingleItem.getOffset(), designSingleItem.getScale(), diff --git a/src/main/java/com/ai/da/service/impl/DesignItemServiceImpl.java b/src/main/java/com/ai/da/service/impl/DesignItemServiceImpl.java index 64bc25d4..613d8e71 100644 --- a/src/main/java/com/ai/da/service/impl/DesignItemServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/DesignItemServiceImpl.java @@ -3,11 +3,14 @@ package com.ai.da.service.impl; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; import com.ai.da.common.config.exception.BusinessException; +import com.ai.da.common.constant.CommonConstant; import com.ai.da.common.context.UserContext; +import com.ai.da.common.enums.CollectionLevel1TypeEnum; import com.ai.da.common.enums.SingleOverallEnum; import com.ai.da.common.enums.SysFileLevel2TypeEnum; import com.ai.da.common.utils.CopyUtil; import com.ai.da.common.utils.DateUtil; +import com.ai.da.common.utils.MD5Utils; import com.ai.da.common.utils.MinioUtil; import com.ai.da.mapper.primary.DesignItemMapper; import com.ai.da.mapper.primary.entity.*; @@ -30,8 +33,10 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.io.IOException; +import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @@ -488,6 +493,8 @@ public class DesignItemServiceImpl extends ServiceImpl idChanged = designSingleItemDTOList.stream().collect(Collectors.toMap(DesignSingleItemDTO::getId, DesignSingleItemDTO::getChanged)); + // 获取每个单品的designType,该状态需要再返回给前端 + Map idDesignType = designSingleItemDTOList.stream().collect(Collectors.toMap(DesignSingleItemDTO::getId, DesignSingleItemDTO::getDesignType)); + boolean flag = singleOrOverall.equals("single"); designSingleItemDTOList.forEach(singleItem -> { DesignItemClothesDetailVO designItemClothesDetailVO = new DesignItemClothesDetailVO(); designItemClothesDetailVO.setId(singleItem.getId()); + designItemClothesDetailVO.setChanged(idChanged.get(singleItem.getId())); + designItemClothesDetailVO.setDesignType(idDesignType.get(singleItem.getId())); designItemClothesDetailVO.setType(singleItem.getType()); designItemClothesDetailVO.setPath(minioUtil.getPresignedUrl(singleItem.getPath(), 24 * 60)); designItemClothesDetailVO.setMinIOPath(singleItem.getPath()); designItemClothesDetailVO.setColor(panToneService.getPantoneByRgb(singleItem.getColor())); -// designItemClothesDetailVO.setPrintObject(new DesignPythonItemPrint(singleItem.getPrintObject().getPath())); designItemClothesDetailVO.setPrintObject(singleItem.getPrintObject()); designItemClothesDetailVO.setLayersObject(layersObject.stream().filter( layers -> (singleItem.getType().toLowerCase().equals(layers.getImageCategory().split("_")[0]) @@ -703,4 +712,68 @@ public class DesignItemServiceImpl extends ServiceImpl libraries = new ArrayList<>(); + // 添加sketch到library + designSingleIncludeLayersDTO.getDesignSingleItemDTOList().forEach(designSingleItem -> { + + if (!StringUtil.isNullOrEmpty(designSingleItem.getDesignType()) && designSingleItem.getDesignType().equals("Collection")){ + String path = minioUtil.getPresignedUrl(designSingleItem.getPath(), CommonConstant.MINIO_IMAGE_EXPIRE_TIME); + try { + String md5 = MD5Utils.encryptFile(path, false); + // 先判断是否需要被加入到library + Boolean needAdd = libraryService.checkMd5(CollectionLevel1TypeEnum.SKETCH_BOARD.getRealName(), + designSingleItem.getType(), + designSingleIncludeLayersDTO.getGender(), + md5); + // 加入到library + if (needAdd){ + Library library = new Library(); + library.setAccountId(UserContext.getUserHolder().getId()); + library.setLevel1Type(CollectionLevel1TypeEnum.SKETCH_BOARD.getRealName()); + library.setLevel2Type(designSingleItem.getType()); + library.setLevel3Type(designSingleIncludeLayersDTO.getGender()); + library.setUrl(designSingleItem.getPath()); + library.setName(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"))); + library.setMd5(md5); + library.setCreateDate(DateUtil.getByTimeZone(designSingleIncludeLayersDTO.getTimeZone())); + libraries.add(library); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + // 添加print到library + designSingleItem.getPrintObject().getPrints().forEach(print -> { + if (!StringUtil.isNullOrEmpty(print.getDesignType()) && print.getDesignType().equals("Collection")){ + String path = minioUtil.getPresignedUrl(print.getMinIOPath(), CommonConstant.MINIO_IMAGE_EXPIRE_TIME); + try { + String md5 = MD5Utils.encryptFile(path, false); + // 先判断是否已被加入到library + Boolean needAdd = libraryService.checkMd5(CollectionLevel1TypeEnum.PRINT_BOARD.getRealName(), + null, + null, + md5); + // 加入到library + if (needAdd){ + Library library = new Library(); + library.setAccountId(UserContext.getUserHolder().getId()); + library.setLevel1Type(CollectionLevel1TypeEnum.PRINT_BOARD.getRealName()); + library.setUrl(print.getMinIOPath()); + library.setName(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"))); + library.setMd5(md5); + library.setCreateDate(DateUtil.getByTimeZone(designSingleIncludeLayersDTO.getTimeZone())); + libraries.add(library); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + } + }); + } ); + libraryService.saveBatch(libraries); + } } diff --git a/src/main/java/com/ai/da/service/impl/LibraryServiceImpl.java b/src/main/java/com/ai/da/service/impl/LibraryServiceImpl.java index 9d402416..080523ed 100644 --- a/src/main/java/com/ai/da/service/impl/LibraryServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/LibraryServiceImpl.java @@ -409,7 +409,8 @@ public class LibraryServiceImpl extends ServiceImpl impl qw.lambda().eq(Library::getLevel2Type, level2Type); qw.lambda().eq(Library::getLevel3Type, sex); } else { - qw.lambda().eq(Library::getLevel2Type, sex); +// qw.lambda().eq(Library::getLevel2Type, sex); + qw.lambda().eq(Library::getLevel3Type, sex); } } qw.lambda().eq(Library::getMd5, md5);