From 5ecebd5117a19add39c9699803e4d59cadc868cc Mon Sep 17 00:00:00 2001 From: xupei Date: Fri, 5 Jul 2024 18:47:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8D=B0=E8=8A=B1=20?= =?UTF-8?q?=E5=85=81=E8=AE=B8=E5=90=8C=E6=97=B6single=E5=92=8Coverall?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ai/da/common/utils/MinioUtil.java | 4 +- .../primary/entity/DesignItemDetail.java | 4 + .../ai/da/model/dto/DesignSinglePrintDTO.java | 8 +- .../model/vo/DesignItemClothesDetailVO.java | 3 + .../com/ai/da/model/vo/DesignSinglePrint.java | 6 +- .../java/com/ai/da/python/PythonService.java | 145 +++++++++++------- .../com/ai/da/python/vo/DesignPythonItem.java | 7 +- .../da/python/vo/DesignPythonItemElement.java | 9 +- .../da/python/vo/DesignPythonItemPrint.java | 25 ++- .../com/ai/da/python/vo/PrintToPython.java | 20 +++ .../service/impl/DesignItemServiceImpl.java | 52 ++++--- .../ai/da/service/impl/DesignServiceImpl.java | 39 +++-- .../impl/UserLikeGroupServiceImpl.java | 6 +- 13 files changed, 214 insertions(+), 114 deletions(-) create mode 100644 src/main/java/com/ai/da/python/vo/PrintToPython.java diff --git a/src/main/java/com/ai/da/common/utils/MinioUtil.java b/src/main/java/com/ai/da/common/utils/MinioUtil.java index 17a7173c..bf5bea69 100644 --- a/src/main/java/com/ai/da/common/utils/MinioUtil.java +++ b/src/main/java/com/ai/da/common/utils/MinioUtil.java @@ -405,7 +405,7 @@ public class MinioUtil { } } - public String getPresignedUrl(String path, int expiry, boolean resetCache) { + public String getPreSignedUrl(String path, int expiry, boolean resetCache) { if (resetCache || LocalCacheUtils.getPresignedUrlCache(path) == null) { if (!path.contains("/")) { throw new BusinessException("The path is error!"); @@ -413,7 +413,7 @@ public class MinioUtil { int index = path.indexOf("/"); String bucketName = path.substring(0, index); String fileName = path.substring(index + 1); - String presignedUrl = getPresignedUrl(bucketName, fileName, expiry); + String presignedUrl = getPreSignedUrl(bucketName, fileName, expiry); LocalCacheUtils.setPresignedUrlCache(path, presignedUrl); return presignedUrl; } else { diff --git a/src/main/java/com/ai/da/mapper/primary/entity/DesignItemDetail.java b/src/main/java/com/ai/da/mapper/primary/entity/DesignItemDetail.java index 969c306b..a2daa110 100644 --- a/src/main/java/com/ai/da/mapper/primary/entity/DesignItemDetail.java +++ b/src/main/java/com/ai/da/mapper/primary/entity/DesignItemDetail.java @@ -90,6 +90,10 @@ public class DesignItemDetail implements Serializable { * item的优先级 */ private Integer priority; + /** + * 未分割的只上了颜色或只有overall印花的图层 + */ + private String undividedLayer; /** * 创建时间 diff --git a/src/main/java/com/ai/da/model/dto/DesignSinglePrintDTO.java b/src/main/java/com/ai/da/model/dto/DesignSinglePrintDTO.java index 163e468b..db815161 100644 --- a/src/main/java/com/ai/da/model/dto/DesignSinglePrintDTO.java +++ b/src/main/java/com/ai/da/model/dto/DesignSinglePrintDTO.java @@ -15,17 +15,17 @@ public class DesignSinglePrintDTO implements Serializable { // @ApiModelProperty("印花url") // private String path; - @ApiModelProperty("single -> true,overall -> false") - private Boolean ifSingle; + /*@ApiModelProperty("single -> true,overall -> false") + private Boolean ifSingle;*/ @ApiModelProperty("印花详细") private List prints; public DesignSinglePrintDTO() { } - +/* public DesignSinglePrintDTO(Boolean ifSingle, List prints) { this.ifSingle = ifSingle; this.prints = prints; - } + }*/ } \ No newline at end of file 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 52e0008d..10969e4e 100644 --- a/src/main/java/com/ai/da/model/vo/DesignItemClothesDetailVO.java +++ b/src/main/java/com/ai/da/model/vo/DesignItemClothesDetailVO.java @@ -58,6 +58,9 @@ public class DesignItemClothesDetailVO { @ApiModelProperty("渐变色信息") private Gradient gradient; + @ApiModelProperty("未分割的图层") + private String undividedLayer; + public DesignItemClothesDetailVO() { } 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 0a79320a..88bb9475 100644 --- a/src/main/java/com/ai/da/model/vo/DesignSinglePrint.java +++ b/src/main/java/com/ai/da/model/vo/DesignSinglePrint.java @@ -13,6 +13,9 @@ import java.util.List; @ApiModel("design single 印花详情") public class DesignSinglePrint implements Serializable { + @ApiModelProperty("single -> true,overall -> false") + private Boolean ifSingle; + @ApiModelProperty("印花的类型 Slogan || Logo || Pattern") private String level2Type; @@ -48,7 +51,7 @@ public class DesignSinglePrint implements Serializable { this.scale = scale; } - public DesignSinglePrint(String level2Type, String path, String minIOPath, List location, Double scale, Double angle, Integer priority) { + public DesignSinglePrint(String level2Type, String path, String minIOPath, List location, Double scale, Double angle, Integer priority, Boolean ifSingle) { this.level2Type = level2Type; this.path = path; this.minIOPath = minIOPath; @@ -56,5 +59,6 @@ public class DesignSinglePrint implements Serializable { this.scale = scale; this.angle = angle; this.priority = priority; + this.ifSingle = ifSingle; } } diff --git a/src/main/java/com/ai/da/python/PythonService.java b/src/main/java/com/ai/da/python/PythonService.java index a13db92f..b6e293c5 100644 --- a/src/main/java/com/ai/da/python/PythonService.java +++ b/src/main/java/com/ai/da/python/PythonService.java @@ -1928,14 +1928,14 @@ public class PythonService { if (!elementVO.getDesignPythonItemPrint().getPath().equals("none") && elementVO.getDesignPrintPictureTypeLayoutList().contains(type)) { DesignPythonItemPrint designPythonItemPrint = CopyUtil.copyObject(elementVO.getDesignPythonItemPrint(), DesignPythonItemPrint.class); - designPythonItemPrint.setIfSingle(false); +// designPythonItemPrint.setIfSingle(false); designPythonItemPrint.setPrint_path_list(Collections.singletonList(designPythonItemPrint.getPath())); - designPythonItemBlouse.setPrint(designPythonItemPrint); + designPythonItemBlouse.setPrint(new PrintToPython(designPythonItemPrint)); } else { DesignPythonItemPrint designPythonItemPrint = new DesignPythonItemPrint(); - designPythonItemPrint.setIfSingle(false); +// designPythonItemPrint.setIfSingle(false); designPythonItemPrint.setPrint_path_list(new ArrayList<>()); - designPythonItemBlouse.setPrint(designPythonItemPrint); + designPythonItemBlouse.setPrint(new PrintToPython(designPythonItemPrint)); } return designPythonItemBlouse; } @@ -1957,14 +1957,14 @@ public class PythonService { if (!elementVO.getDesignPythonItemPrint().getPath().equals("none") && elementVO.getDesignPrintPictureTypeLayoutList().contains(collectionElement.getLevel2Type())) { DesignPythonItemPrint designPythonItemPrint = CopyUtil.copyObject(elementVO.getDesignPythonItemPrint(), DesignPythonItemPrint.class); - designPythonItemPrint.setIfSingle(false); +// designPythonItemPrint.setIfSingle(false); designPythonItemPrint.setPrint_path_list(Collections.singletonList(designPythonItemPrint.getPath())); - designPythonItemBlouse.setPrint(designPythonItemPrint); + designPythonItemBlouse.setPrint(new PrintToPython(designPythonItemPrint)); } else { DesignPythonItemPrint designPythonItemPrint = new DesignPythonItemPrint(); - designPythonItemPrint.setIfSingle(false); +// designPythonItemPrint.setIfSingle(false); designPythonItemPrint.setPrint_path_list(new ArrayList<>()); - designPythonItemBlouse.setPrint(designPythonItemPrint); + designPythonItemBlouse.setPrint(new PrintToPython(designPythonItemPrint)); } return designPythonItemBlouse; } @@ -2587,7 +2587,7 @@ public class PythonService { List response = CopyUtil.copyList(designPythonItemDto, DesignPythonItem.class, (o, d) -> { d.setBusinessId(o.getId()); d.setIcon("none"); - d.setPrint(resolveDesignSinglePrint(o.getPrintObject(), o.getPath())); +// d.setPrint(resolveDesignSinglePrint(o.getPrintObject(), o.getPath())); }); DesignPythonItem body = new DesignPythonItem(); body.setType(SysFileLevel2TypeEnum.BODY.getRealName()); @@ -2636,12 +2636,13 @@ public class PythonService { // todo 当渐变色不为空时,是否需要将颜色置为 0 0 0 } + PrintToPython printToPython = resolveDesignSinglePrint(designSingleItem.getPrintObject().getPrints()); + resolveDesignElement(designSingleItem.getTrims(), printToPython); response.add(new DesignPythonItem( designSingleItem.getType(), designSingleItem.getPath(), designSingleItem.getColor(), - resolveDesignSinglePrint(designSingleItem.getPrintObject(), null), - resolveDesignElement(designSingleItem.getTrims()), + printToPython, // businessId designItemDetailId (python端确认没有作用,但是数据库需要存,作用:未知) // designSingleItem.getId(), businessId, @@ -2666,47 +2667,84 @@ public class PythonService { } - private DesignPythonItemPrint resolveDesignSinglePrint(DesignSinglePrintDTO printObject, String clothesPath) { - // 没有印花时的参数设置 - if (printObject.getIfSingle().equals(Boolean.FALSE) && CollectionUtil.isEmpty(printObject.getPrints())) { - return new DesignPythonItemPrint(new ArrayList<>(), false); + private PrintToPython resolveDesignSinglePrint(List printObject) { + PrintToPython printToPython = new PrintToPython(); + DesignPythonItemPrint printSingle = new DesignPythonItemPrint(); + DesignPythonItemPrint printOverall = new DesignPythonItemPrint(); + printToPython.setSingle(printSingle); + printToPython.setOverall(printOverall); + if (printObject.isEmpty()){ + return printToPython; } - DesignPythonItemPrint print = CopyUtil.copyObject(printObject, DesignPythonItemPrint.class); - int size = printObject.getPrints().size(); + // 没有印花时的参数设置 +// if (printObject.getIfSingle().equals(Boolean.FALSE) && CollectionUtil.isEmpty(printObject.getPrints())) { +// return new DesignPythonItemPrint(new ArrayList<>(), false); +// } +// DesignPythonItemPrint print = CopyUtil.copyObject(printObject, DesignPythonItemPrint.class); + + int size = printObject.size(); // 占位符填充数组 - List> location = new ArrayList<>(Collections.nCopies(size, null)); - List scale = new ArrayList<>(Collections.nCopies(size, null)); - List angle = new ArrayList<>(Collections.nCopies(size, null)); - ArrayList paths = new ArrayList<>(Collections.nCopies(size, null)); + List> locationS = new ArrayList<>(Collections.nCopies(size, null)); + List scaleS = new ArrayList<>(Collections.nCopies(size, null)); + List angleS = new ArrayList<>(Collections.nCopies(size, null)); + ArrayList pathsS = new ArrayList<>(Collections.nCopies(size, null)); + + List> locationO = new ArrayList<>(Collections.nCopies(size, null)); + List scaleO = new ArrayList<>(Collections.nCopies(size, null)); + List angleO = new ArrayList<>(Collections.nCopies(size, null)); + ArrayList pathsO = new ArrayList<>(Collections.nCopies(size, null)); // 设置印花的位置、大小、旋转角度 // 优先级越大,越靠近顶层,在传输给python的数组中,越靠前 - List prints = printObject.getPrints(); - prints.forEach(p -> { +// List prints = printObject.getPrints(); + printObject.forEach(p -> { p.getLocation().set(0, p.getLocation().get(0)); p.getLocation().set(1, p.getLocation().get(1)); Integer priority = p.getPriority(); - location.set(size - priority, p.getLocation()); - scale.set(size - priority, p.getScale()); - angle.set(size - priority, p.getAngle()); - paths.set(size - priority, p.getMinIOPath()); + // todo 下标越界问题 + if (p.getIfSingle()){ + locationS.set(priority - 1, p.getLocation()); + scaleS.set(priority - 1, p.getScale()); + angleS.set( priority - 1, p.getAngle()); + pathsS.set(priority - 1, p.getMinIOPath()); + }else { + locationO.set(priority - 1, p.getLocation()); + scaleO.set(priority - 1, p.getScale()); + angleO.set(priority - 1, p.getAngle()); + pathsO.set(priority - 1, p.getMinIOPath()); + } // log.info("本次print打点locations###{}###fileVO{}", p.getLocation(), JSON.toJSONString(fileVO)); }); - print.setLocation(location); - print.setPrint_scale_list(scale); - print.setPrint_angle_list(angle); - print.setPrint_path_list(paths); + locationS.removeAll(Collections.singleton(null)); + scaleS.removeAll(Collections.singleton(null)); + angleS.removeAll(Collections.singleton(null)); + pathsS.removeAll(Collections.singleton(null)); + printSingle.setLocation(locationS); + printSingle.setPrint_scale_list(scaleS); + printSingle.setPrint_angle_list(angleS); + printSingle.setPrint_path_list(pathsS); - return print; + locationO.removeAll(Collections.singleton(null)); + scaleO.removeAll(Collections.singleton(null)); + angleO.removeAll(Collections.singleton(null)); + pathsO.removeAll(Collections.singleton(null)); + printOverall.setLocation(locationO); + printOverall.setPrint_scale_list(scaleO); + printOverall.setPrint_angle_list(angleO); + printOverall.setPrint_path_list(pathsO); + + return printToPython; } - private DesignPythonItemElement resolveDesignElement(DesignSinglePrintDTO trims) { + private void resolveDesignElement(DesignSinglePrintDTO trims, PrintToPython printToPython) { // 没有design element 时的参数设置 - if (Objects.isNull(trims.getIfSingle()) && CollectionUtil.isEmpty(trims.getPrints())) { - return null; + DesignPythonItemElement element = new DesignPythonItemElement(); + if (CollectionUtil.isEmpty(trims.getPrints())) { + printToPython.setElement(element); + return; } - DesignPythonItemElement print = new DesignPythonItemElement(); + int size = trims.getPrints().size(); // 占位符填充数组 @@ -2722,18 +2760,17 @@ public class PythonService { p.getLocation().set(0, p.getLocation().get(0)); p.getLocation().set(1, p.getLocation().get(1)); Integer priority = p.getPriority(); - location.set(size - priority, p.getLocation()); - scale.set(size - priority, p.getScale()); - angle.set(size - priority, p.getAngle()); - paths.set(size - priority, p.getMinIOPath()); + location.set(priority - 1, p.getLocation()); + scale.set(priority - 1, p.getScale()); + angle.set(priority - 1, p.getAngle()); + paths.set(priority - 1, p.getMinIOPath()); // log.info("本次print打点locations###{}###fileVO{}", p.getLocation(), JSON.toJSONString(fileVO)); }); - print.setLocation(location); - print.setElement_scale_list(scale); - print.setElement_angle_list(angle); - print.setElement_path_list(paths); - - return print; + element.setLocation(location); + element.setElement_scale_list(scale); + element.setElement_angle_list(angle); + element.setElement_path_list(paths); + printToPython.setElement(element); } private DesignPythonBasic coverToSingleBasic(DesignPythonItem designPythonItem, String singleOverall, @@ -2806,9 +2843,9 @@ public class PythonService { dress.setColor("none"); dress.setIcon("none"); DesignPythonItemPrint designPythonItemPrint = new DesignPythonItemPrint(); - designPythonItemPrint.setIfSingle(false); +// designPythonItemPrint.setIfSingle(false); designPythonItemPrint.setPrint_path_list(new ArrayList<>()); - dress.setPrint(designPythonItemPrint); + dress.setPrint(new PrintToPython(designPythonItemPrint)); dress.setPath("aida-sys-image/images/female/blouse/0628001551.jpg"); response.add(dress); @@ -2817,9 +2854,9 @@ public class PythonService { skirt.setColor("none"); skirt.setIcon("none"); DesignPythonItemPrint designPythonItemPrint1 = new DesignPythonItemPrint(); - designPythonItemPrint1.setIfSingle(false); +// designPythonItemPrint1.setIfSingle(false); designPythonItemPrint1.setPrint_path_list(new ArrayList<>()); - skirt.setPrint(designPythonItemPrint1); + skirt.setPrint(new PrintToPython(designPythonItemPrint1)); skirt.setPath("aida-sys-image/images/female/skirt/0628000022.jpg"); // skirt.setPath("aida-sys-image/images/female/dress/0628000000.jpg"); response.add(skirt); @@ -2829,9 +2866,9 @@ public class PythonService { top.setColor("none"); top.setIcon("none"); DesignPythonItemPrint designPythonItemPrint = new DesignPythonItemPrint(); - designPythonItemPrint.setIfSingle(false); +// designPythonItemPrint.setIfSingle(false); designPythonItemPrint.setPrint_path_list(new ArrayList<>()); - top.setPrint(designPythonItemPrint); + top.setPrint(new PrintToPython(designPythonItemPrint)); top.setPath("aida-sys-image/images/male/tops/mens_test_10.png"); response.add(top); @@ -2840,9 +2877,9 @@ public class PythonService { bottom.setColor("none"); bottom.setIcon("none"); DesignPythonItemPrint designPythonItemPrint1 = new DesignPythonItemPrint(); - designPythonItemPrint1.setIfSingle(false); +// designPythonItemPrint1.setIfSingle(false); designPythonItemPrint1.setPrint_path_list(new ArrayList<>()); - bottom.setPrint(designPythonItemPrint1); + bottom.setPrint(new PrintToPython(designPythonItemPrint1)); bottom.setPath("aida-sys-image/images/male/bottoms/mens_test_6252.png"); response.add(bottom); } diff --git a/src/main/java/com/ai/da/python/vo/DesignPythonItem.java b/src/main/java/com/ai/da/python/vo/DesignPythonItem.java index 332fd8fa..aad33618 100644 --- a/src/main/java/com/ai/da/python/vo/DesignPythonItem.java +++ b/src/main/java/com/ai/da/python/vo/DesignPythonItem.java @@ -35,7 +35,7 @@ public class DesignPythonItem { /** * 对应的print图片的绝对路径 */ - private DesignPythonItemPrint print; + private PrintToPython print; /** * trims 衣服上的装饰 @@ -118,13 +118,12 @@ public class DesignPythonItem { this.image_id = image_id; } - public DesignPythonItem(String type, String path, String color, DesignPythonItemPrint print, DesignPythonItemElement element, Long businessId, + public DesignPythonItem(String type, String path, String color, PrintToPython print, Long businessId, Long image_id, List offset, Float[] resize_scale, Integer priority, String gradient, String gradientString) { this.type = type; this.path = path; this.color = color; this.print = print; - this.element = element; // this.icon = icon; this.businessId = businessId; this.image_id = image_id; @@ -135,7 +134,7 @@ public class DesignPythonItem { this.gradientString = gradientString; } - public DesignPythonItem(String type, String path, String color, DesignPythonItemPrint print, String icon, Long businessId, Long image_id) { + public DesignPythonItem(String type, String path, String color, PrintToPython print, String icon, Long businessId, Long image_id) { this.type = type; this.path = path; this.color = color; diff --git a/src/main/java/com/ai/da/python/vo/DesignPythonItemElement.java b/src/main/java/com/ai/da/python/vo/DesignPythonItemElement.java index f3a790dc..71560f2d 100644 --- a/src/main/java/com/ai/da/python/vo/DesignPythonItemElement.java +++ b/src/main/java/com/ai/da/python/vo/DesignPythonItemElement.java @@ -3,21 +3,22 @@ package com.ai.da.python.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.ArrayList; import java.util.List; @Data public class DesignPythonItemElement { @ApiModelProperty("print的位置 传 [[0.2, 0.2]]") - private List> location; + private List> location = new ArrayList<>(); - private List element_path_list; + private List element_path_list = new ArrayList<>(); @ApiModelProperty("print的缩放比例 传 [0.2, 0.2]") - private List element_scale_list; + private List element_scale_list = new ArrayList<>(); @ApiModelProperty("print的旋转角度 传 [0.2, 0.2]") - private List element_angle_list; + private List element_angle_list = new ArrayList<>(); public DesignPythonItemElement() { } diff --git a/src/main/java/com/ai/da/python/vo/DesignPythonItemPrint.java b/src/main/java/com/ai/da/python/vo/DesignPythonItemPrint.java index 6f44455f..617c8e65 100644 --- a/src/main/java/com/ai/da/python/vo/DesignPythonItemPrint.java +++ b/src/main/java/com/ai/da/python/vo/DesignPythonItemPrint.java @@ -4,6 +4,9 @@ import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.List; @Data @@ -14,7 +17,7 @@ public class DesignPythonItemPrint { @ApiModelProperty("图片绝对路径") private String path; - private List print_path_list; + private List print_path_list = new ArrayList<>(); @ApiModelProperty("上传时候对应的类型,一级类型 Printboard ") private String level1Type; @@ -33,19 +36,29 @@ public class DesignPythonItemPrint { @ApiModelProperty("print的位置 传 [[0.2, 0.2]]") - private List> location; + private List> location = new ArrayList<>(); @ApiModelProperty("print的缩放比例 传 [0.2, 0.2]") - private List print_scale_list; + private List print_scale_list = new ArrayList<>(); @ApiModelProperty("print的旋转角度 传 [0.2, 0.2]") - private List print_angle_list; + private List print_angle_list = new ArrayList<>(); @JSONField(name = "IfSingle") public Boolean getIfSingle() { return ifSingle; } + public DesignPythonItemPrint(List print_path_list, Boolean ifDesign) { + if (ifDesign){ + this.print_path_list = print_path_list; + this.location = Collections.singletonList(Arrays.asList(0.0, 0.0)); + this.print_scale_list = Arrays.asList(0.0, 0.0); + this.print_angle_list = Arrays.asList(0.0, 0.0); + } + + } + public DesignPythonItemPrint(String singlePath, String level1Type, Float scale, Boolean ifSingle) { this.path = singlePath; this.level1Type = level1Type; @@ -60,8 +73,4 @@ public class DesignPythonItemPrint { this.path = path; } - public DesignPythonItemPrint(List print_path_list, Boolean ifSingle) { - this.print_path_list = print_path_list; - this.ifSingle = ifSingle; - } } diff --git a/src/main/java/com/ai/da/python/vo/PrintToPython.java b/src/main/java/com/ai/da/python/vo/PrintToPython.java new file mode 100644 index 00000000..1d2f79ca --- /dev/null +++ b/src/main/java/com/ai/da/python/vo/PrintToPython.java @@ -0,0 +1,20 @@ +package com.ai.da.python.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class PrintToPython { + private DesignPythonItemPrint single; + private DesignPythonItemPrint overall; + private DesignPythonItemElement element; + + public PrintToPython(DesignPythonItemPrint overall) { + this.overall = new DesignPythonItemPrint(overall.getPrint_path_list(),Boolean.TRUE); + single = new DesignPythonItemPrint(); + element = new DesignPythonItemElement(); + } +} 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 593d509b..a0b5880b 100644 --- a/src/main/java/com/ai/da/service/impl/DesignItemServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/DesignItemServiceImpl.java @@ -261,7 +261,7 @@ public class DesignItemServiceImpl extends ServiceImpl saveDesignSingleItemDetailAndLayers(DesignPythonObjects pythonObjects , Long designId, Long designItemId, Long userId - , JSONObject outfit, String timeZone, List designSingleItemDTOList) { + , JSONObject outfit, String timeZone, List designSingleItemDTOList + , Map categoryAndUndividedLayer) { DesignItem designItem = new DesignItem(); // String url = pythonObjects.getObjects().get(0).getBasic().getSave_name(); @@ -343,8 +345,10 @@ public class DesignItemServiceImpl extends ServiceImpl categoryAndUndividedLayer = setTypeAndUndividedLayer(layers); if (!designSingleIncludeLayersDTO.getIsPreview()) { // 更新及保存图层信息 - tDesignPythonOutfitDetails = saveDesignSingleItemDetailAndLayers(objects, design.getId(), designSingleIncludeLayersDTO.getDesignItemId(), - userId, outfit, designSingleIncludeLayersDTO.getTimeZone(), designSingleIncludeLayersDTO.getDesignSingleItemDTOList()); + tDesignPythonOutfitDetails = saveDesignSingleItemDetailAndLayers(objects, design.getId(), designSingleIncludeLayersDTO.getDesignItemId() + , userId, outfit, designSingleIncludeLayersDTO.getTimeZone() + , designSingleIncludeLayersDTO.getDesignSingleItemDTOList() + , categoryAndUndividedLayer); saveCollectionElement(designSingleIncludeLayersDTO); } else { - JSONArray layers = outfit.getJSONArray("layers"); tDesignPythonOutfitDetails = setTDesignPythonOutfitDetailList(layers, designItem.getDesignId(), null, userId, priorityOffset); } @@ -537,7 +544,8 @@ public class DesignItemServiceImpl extends ServiceImpl setTypeAndUndividedLayer(JSONArray layers){ + HashMap categoryAndLayer = new HashMap<>(); + for (int i = 0; i < layers.size(); i++) { + JSONObject jsonObject = layers.getJSONObject(i); + String category = jsonObject.getString("image_category").split("_")[0]; + if (!category.equals("body") && !categoryAndLayer.containsKey(category)) categoryAndLayer.put(category, jsonObject.getString("pattern_image_url")); + } + return categoryAndLayer; + } + @Override @Transactional(rollbackFor = Exception.class) public ComposeLayersVO editLayersPositionAndScale(EditLayersPositionAndScaleVO positionAndScaleVO) throws IOException { @@ -650,7 +668,8 @@ public class DesignItemServiceImpl extends ServiceImpl designSingleItemDTOList, List layersObject, - String singleOrOverall) { + String singleOrOverall, + Map categoryAndUndividedLayer) { DesignSingleVO designSingleVO = new DesignSingleVO(); ArrayList clothes = new ArrayList<>(); @@ -684,6 +703,7 @@ public class DesignItemServiceImpl extends ServiceImpl layers.getImageCategory().equals("body")).collect(Collectors.toList())); clothes.add(designItemClothesDetailVO); @@ -715,20 +735,16 @@ public class DesignItemServiceImpl extends ServiceImpl designItemDetailTypeIdMap, String timeZone){ + + // todo 这边这样做对吗 DesignSinglePrintDTO printObject; if (printType.equals("print")){ printObject = designSingleItem.getPrintObject(); }else { printObject = designSingleItem.getTrims(); - if (Objects.isNull(printObject.getIfSingle())){ - printObject.setIfSingle(Boolean.FALSE); - } } - if (printObject.getIfSingle().equals(Boolean.FALSE) - && CollectionUtil.isEmpty(printObject.getPrints())) { - return; - } else { + if (!CollectionUtil.isEmpty(printObject.getPrints())) { // 2、有印花,添加到list printObject.getPrints().forEach(print -> { // 2.1 判断是否第一次添加印花,是:直接添加 @@ -743,7 +759,7 @@ public class DesignItemServiceImpl extends ServiceImpl impleme } designItemDetail.setIconPath(detail.getIcon()); designItemDetail.setPriority(typePriority.get(detail.getType().toLowerCase())); - DesignPythonItemPrint printObject = detail.getPrint(); - designItemDetail.setPrintPath(Objects.isNull(printObject) ? "" : printObject.getPath()); + if (!detail.getType().equals("Body")){ + DesignPythonItemPrint printObject = detail.getPrint().getOverall(); +// designItemDetail.setPrintPath(Objects.isNull(printObject) ? "" : printObject.getPath()); + designItemDetail.setPrintPath(CollectionUtils.isEmpty(printObject.getPrint_path_list()) ? "" : printObject.getPrint_path_list().get(0)); + } designItemDetailService.save(designItemDetail); - if (!SysFileLevel2TypeEnum.BODY.getRealName().equals(detail.getType()) && designItemDetail.getPrintPath() != null) { + if (!SysFileLevel2TypeEnum.BODY.getRealName().equals(detail.getType()) && !StringUtil.isNullOrEmpty(designItemDetail.getPrintPath())) { DesignItemDetailPrint print = new DesignItemDetailPrint(); print.setDesignItemDetailId(designItemDetail.getId()); print.setPrintType("print"); @@ -686,7 +690,7 @@ public class DesignServiceImpl extends ServiceImpl impleme designItemDetail.setBusinessId(0L); } designItemDetail.setIconPath(detail.getIcon()); - DesignPythonItemPrint printObject = detail.getPrint(); + DesignPythonItemPrint printObject = detail.getPrint().getOverall(); designItemDetail.setPrintPath(Objects.isNull(printObject) ? "" : printObject.getPath()); designItemDetails.add(designItemDetail); }); @@ -1001,6 +1005,7 @@ public class DesignServiceImpl extends ServiceImpl impleme d.setMinIOPath(o.getPath()); d.setLevel1Type(converTypeToLevel1(o.getType())); d.setGradient(JSONObject.parseObject(o.getGradientString(), Gradient.class)); + if (!StringUtil.isNullOrEmpty(o.getUndividedLayer())) d.setUndividedLayer(minioUtil.getPreSignedUrl(o.getUndividedLayer(), CommonConstant.MINIO_IMAGE_EXPIRE_TIME)); // 根据designItemDetailId获取印花 List prints = designItemDetailPrintService.getByDesignItemDetailId(o.getId(), "print"); // 判断有无印花 @@ -1204,7 +1209,7 @@ public class DesignServiceImpl extends ServiceImpl impleme if (designItemDetailPrints.size() == 1) { DesignItemDetailPrint detailPrint = designItemDetailPrints.get(0); DesignSinglePrint designSinglePrint = new DesignSinglePrint(); - designSinglePrintDTO.setIfSingle(detailPrint.getSingleOrOverall().equals("single") ? Boolean.TRUE : Boolean.FALSE); +// designSinglePrintDTO.setIfSingle(detailPrint.getSingleOrOverall().equals("single") ? Boolean.TRUE : Boolean.FALSE); designSinglePrint.setLevel2Type(detailPrint.getLevel2Type()); designSinglePrint.setLocation(JSONArray.parseArray(detailPrint.getPosition(), Double.class)); designSinglePrint.setAngle(detailPrint.getAngle()); @@ -1212,21 +1217,23 @@ public class DesignServiceImpl extends ServiceImpl impleme designSinglePrint.setPath(minioUtil.getPreSignedUrl(detailPrint.getPath(), 24 * 60)); designSinglePrint.setMinIOPath(detailPrint.getPath()); designSinglePrint.setScale(detailPrint.getScale()); + designSinglePrint.setIfSingle(detailPrint.getSingleOrOverall().equals("single") ? Boolean.TRUE : Boolean.FALSE); prints.add(designSinglePrint); } else { // single模式下多个印花 - designSinglePrintDTO.setIfSingle(Boolean.TRUE); +// designSinglePrintDTO.setIfSingle(Boolean.TRUE); designItemDetailPrints.forEach(print -> { - if (print.getSingleOrOverall().equals("single")) { - prints.add(new DesignSinglePrint( - print.getLevel2Type(), - minioUtil.getPreSignedUrl(print.getPath(), 24 * 60), - print.getPath(), - JSONArray.parseArray(print.getPosition(), Double.class), - print.getScale(), - print.getAngle(), - print.getPriority())); - } +// if (print.getSingleOrOverall().equals("single")) { + prints.add(new DesignSinglePrint( + print.getLevel2Type(), + minioUtil.getPreSignedUrl(print.getPath(), 24 * 60), + print.getPath(), + JSONArray.parseArray(print.getPosition(), Double.class), + print.getScale(), + print.getAngle(), + print.getPriority(), + print.getSingleOrOverall().equals("single") ? Boolean.TRUE : Boolean.FALSE)); +// } }); } designSinglePrintDTO.setPrints(prints); diff --git a/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java b/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java index 4ff57b99..3d8c05cb 100644 --- a/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java @@ -432,13 +432,13 @@ public class UserLikeGroupServiceImpl extends ServiceImpl