From 206f365ff3d26aab280326eccd5a3c9ed8a715e8 Mon Sep 17 00:00:00 2001 From: xupei <1779019091@qq.com> Date: Mon, 18 Sep 2023 14:44:30 +0800 Subject: [PATCH 1/8] =?UTF-8?q?design=20Single=E6=8E=A5=E5=8F=A3=E7=AC=AC?= =?UTF-8?q?=E4=BA=8C=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/ai/da/python/PythonService.java | 10 +++++----- .../com/ai/da/python/vo/DesignPythonItemPrint.java | 5 +++++ 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/ai/da/python/PythonService.java b/src/main/java/com/ai/da/python/PythonService.java index efd56bb5..cb8ac052 100644 --- a/src/main/java/com/ai/da/python/PythonService.java +++ b/src/main/java/com/ai/da/python/PythonService.java @@ -1354,8 +1354,8 @@ public class PythonService { private DesignPythonItemPrint resolveDesignSinglePrint(DesignSinglePrintDTO printObject, String clothesPath) { - if (Objects.isNull(printObject)) { - return null; + if (Objects.isNull(printObject.getPath()) || CollectionUtil.isEmpty(printObject.getPrints())) { + return new DesignPythonItemPrint(new ArrayList<>(),false); } DesignPythonItemPrint print = CopyUtil.copyObject(printObject, DesignPythonItemPrint.class); if(StringUtils.isEmpty(printObject.getPath())){ @@ -1519,8 +1519,8 @@ public class PythonService { } public JSONObject designNew(DesignPythonObjects designPythonObjects) { - //限流校验 - AccessLimitUtils.validate("design",5); + // todo 限流校验 +// AccessLimitUtils.validate("design",5); OkHttpClient client = new OkHttpClient().newBuilder() .connectTimeout(30, TimeUnit.SECONDS) .pingInterval(5, TimeUnit.SECONDS)//websocket轮训间隔(单位:秒) @@ -1556,7 +1556,7 @@ public class PythonService { log.error("PythonService##design异常###{}", ExceptionUtil.getThrowableList(ioException)); } //去除限流 - AccessLimitUtils.validateOut("design"); +// AccessLimitUtils.validateOut("design"); if (Objects.isNull(response)) { log.error("PythonService##design异常###{}", "response or body is empty!"); throw new BusinessException("system error!"); 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 6e0e5941..642c29eb 100644 --- a/src/main/java/com/ai/da/python/vo/DesignPythonItemPrint.java +++ b/src/main/java/com/ai/da/python/vo/DesignPythonItemPrint.java @@ -60,4 +60,9 @@ public class DesignPythonItemPrint { public DesignPythonItemPrint(String path) { this.path = path; } + + public DesignPythonItemPrint(List print_path_list, Boolean ifSingle) { + this.print_path_list = print_path_list; + IfSingle = ifSingle; + } } From 88b526f1c46a7abebe58245518388619416e3c13 Mon Sep 17 00:00:00 2001 From: xupei <1779019091@qq.com> Date: Mon, 18 Sep 2023 17:22:15 +0800 Subject: [PATCH 2/8] =?UTF-8?q?getDetail=20designSingle=20bug=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ai/da/model/vo/DesignItemClothesDetailVO.java | 7 +++++++ .../ai/da/service/impl/DesignItemServiceImpl.java | 9 +++++++-- .../com/ai/da/service/impl/DesignServiceImpl.java | 12 +++++++----- .../impl/TDesignPythonOutfitDetailServiceImpl.java | 14 ++++++++++---- src/main/resources/application-test.properties | 1 + 5 files changed, 32 insertions(+), 11 deletions(-) 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 62b8d2e0..dbf978a6 100644 --- a/src/main/java/com/ai/da/model/vo/DesignItemClothesDetailVO.java +++ b/src/main/java/com/ai/da/model/vo/DesignItemClothesDetailVO.java @@ -32,4 +32,11 @@ public class DesignItemClothesDetailVO { @ApiModelProperty("对应图层信息") private List layersObject; + + public DesignItemClothesDetailVO() { + } + + public DesignItemClothesDetailVO(String type) { + this.type = type; + } } 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 7305f4d8..e15bb119 100644 --- a/src/main/java/com/ai/da/service/impl/DesignItemServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/DesignItemServiceImpl.java @@ -413,7 +413,7 @@ public class DesignItemServiceImpl extends ServiceImpl clothes = new ArrayList<>(); + DesignItemClothesDetailVO body = new DesignItemClothesDetailVO("body"); designSingleVO.setDesignItemId(designItemId); designSingleVO.setDesignItemUrl(designItemUrl); designSingleVO.setClothes(clothes); @@ -433,9 +434,13 @@ public class DesignItemServiceImpl extends ServiceImpl singleItem.getType().toLowerCase().equals(layers.getImageCategory().split("_")[0])).collect(Collectors.toList())); + layers -> singleItem.getType().toLowerCase().equals(layers.getImageCategory().split("_")[0]) + ).collect(Collectors.toList())); + body.setLayersObject(layersObject.stream().filter(layers -> layers.getImageCategory().equals("body")).collect(Collectors.toList())); + clothes.add(designItemClothesDetailVO); }); + clothes.add(body); return designSingleVO; } diff --git a/src/main/java/com/ai/da/service/impl/DesignServiceImpl.java b/src/main/java/com/ai/da/service/impl/DesignServiceImpl.java index 1b935b4a..c5145587 100644 --- a/src/main/java/com/ai/da/service/impl/DesignServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/DesignServiceImpl.java @@ -758,7 +758,9 @@ public class DesignServiceImpl extends ServiceImpl impleme d.setId(o.getBusinessId()); d.setPrintObject(new DesignPythonItemPrint()); })); - return editDesignItemLayer(flag,designPythonOutfit,designItem.getDesignUrl(),editResponseColor(designItemDetails,response)); + return editDesignItemLayer(flag,designPythonOutfit, + minIoUtil.getPresignedUrl(bucketName,designItem.getDesignUrl(),480), + editResponseColor(designItemDetails,response)); } private String converTypeToLevel1(String type){ if(StringUtils.isEmpty(type)){ @@ -854,7 +856,7 @@ public class DesignServiceImpl extends ServiceImpl impleme }); // 2、将查询出的图层信息填充到designItemDetailVO中 - designItemDetailVO.setDesignItemUrl(designPythonOutfit.getDesignUrl()); + designItemDetailVO.setDesignItemUrl(minIoUtil.getPresignedUrl(bucketName,designPythonOutfit.getDesignUrl(),480)); // 2.1 填充clothes designItemDetailVO.getClothes().forEach(c -> { String type = c.getType().toLowerCase(); @@ -868,14 +870,14 @@ public class DesignServiceImpl extends ServiceImpl impleme String type = o.getType().toLowerCase(); List outfitVOS = detailsVO.stream().filter(detail -> detail.getImageCategory().equals(type + "_back") || detail.getImageCategory().equals(type + "_front") || - detail.getImageCategory().equals("body")).collect(Collectors.toList()); - + detail.getImageCategory().equals(type + "_left") || + detail.getImageCategory().equals(type + "_right") || + detail.getImageCategory().equals(type)).collect(Collectors.toList()); o.setLayersObject(outfitVOS); }); }else{ designItemDetailVO.setDesignItemUrl(designItemUrl); } - return designItemDetailVO; } } diff --git a/src/main/java/com/ai/da/service/impl/TDesignPythonOutfitDetailServiceImpl.java b/src/main/java/com/ai/da/service/impl/TDesignPythonOutfitDetailServiceImpl.java index b8286064..26e1de0f 100644 --- a/src/main/java/com/ai/da/service/impl/TDesignPythonOutfitDetailServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/TDesignPythonOutfitDetailServiceImpl.java @@ -30,6 +30,8 @@ public class TDesignPythonOutfitDetailServiceImpl extends ServiceImpl) JSON.parse(detail.getPosition())); - designPythonOutfitVO.setImageSize((List) JSON.parse(detail.getImageSize())); - designPythonOutfitVO.setImageUrl(StringUtil.isNullOrEmpty(detail.getImageUrl()) ? null : minIoUtil.getPresignedUrl(bucketName2,detail.getImageUrl(),5)); - designPythonOutfitVO.setMaskUrl(StringUtil.isNullOrEmpty(detail.getMaskUrl()) ? null : minIoUtil.getPresignedUrl(bucketName2,detail.getMaskUrl(),5)); + designPythonOutfitVO.setPosition(StringUtil.isNullOrEmpty(detail.getPosition()) ? null : (List) JSON.parse(detail.getPosition())); + designPythonOutfitVO.setImageSize(StringUtil.isNullOrEmpty(detail.getImageSize()) ? null : (List) JSON.parse(detail.getImageSize())); + if (detail.getImageCategory().equals("body")){ + designPythonOutfitVO.setImageUrl(StringUtil.isNullOrEmpty(detail.getImageUrl()) ? null : minIoUtil.getPresignedUrl(bucketName3,detail.getImageUrl(),480)); + }else { + designPythonOutfitVO.setImageUrl(StringUtil.isNullOrEmpty(detail.getImageUrl()) ? null : minIoUtil.getPresignedUrl(bucketName2,detail.getImageUrl(),480)); + } + designPythonOutfitVO.setMaskUrl(StringUtil.isNullOrEmpty(detail.getMaskUrl()) ? null : minIoUtil.getPresignedUrl(bucketName2,detail.getMaskUrl(),480)); return designPythonOutfitVO; } diff --git a/src/main/resources/application-test.properties b/src/main/resources/application-test.properties index e19661d7..e076c02c 100644 --- a/src/main/resources/application-test.properties +++ b/src/main/resources/application-test.properties @@ -48,6 +48,7 @@ minio.accessKey=minioadmin minio.secretKey=minioadmin minio.bucketName=aida-results minio.bucketName2=aida-clothing +minio.bucketName3=aida-mannequins From d418df3c609b770f71aca4eeffb1701863f20bf8 Mon Sep 17 00:00:00 2001 From: xupei <1779019091@qq.com> Date: Tue, 19 Sep 2023 10:25:03 +0800 Subject: [PATCH 3/8] =?UTF-8?q?generate=20=E6=8E=A5=E5=8F=A3=E7=96=8F?= =?UTF-8?q?=E9=80=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ai/da/python/PythonService.java | 44 ++++++++++++------- .../da/service/impl/GenerateServiceImpl.java | 9 +++- .../resources/application-test.properties | 1 + 3 files changed, 36 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/ai/da/python/PythonService.java b/src/main/java/com/ai/da/python/PythonService.java index cb8ac052..1f6313a5 100644 --- a/src/main/java/com/ai/da/python/PythonService.java +++ b/src/main/java/com/ai/da/python/PythonService.java @@ -1638,7 +1638,7 @@ public class PythonService { content.put("category", category); content.put("mode",mode); // content.put("str", text); - content.put("version",modelName); + content.put("version",2); RequestBody body = RequestBody.create(mediaType, JSON.toJSONString(content)); Request request = new Request.Builder() // .url(accessPythonIp + ":2828/aida/diffusion") @@ -1650,24 +1650,34 @@ public class PythonService { .build(); Response response = null; String bodyString = null; - try { +// try { log.info("generateSketchOrPrint请求入参content###{}", JSON.toJSONString(content)); - response = client.newCall(request).execute(); - bodyString = response.body().string(); - } catch (IOException ioException) { - log.error("PythonService##generateSketchOrPrint异常###{}", ExceptionUtil.getThrowableList(ioException)); - } +// response = client.newCall(request).execute(); +// bodyString = response.body().string(); + bodyString = "{\n" + + " \"code\": 200,\n" + + " \"data\": {\n" + + " \"list\": [\n" + + " \"12/print_1695088687_0.png\"\n" + + " ]\n" + + " },\n" + + " \"msg\": \"OK!\"\n" + + "}"; +// } catch (IOException ioException) { +// log.error("PythonService##generateSketchOrPrint异常###{}", ExceptionUtil.getThrowableList(ioException)); +// } //去除限流 AccessLimitUtils.validateOut("generateSketchOrPrint"); // 生成失败 - if (Objects.isNull(response) || StringUtil.isNullOrEmpty(bodyString)) { - log.error("PythonService##generateSketchOrPrint异常###{}", "response or body is empty!"); - throw new BusinessException("generate exception!"); - } - JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(bodyString)); - Boolean result = jsonObject.getBoolean("successful"); +// if (Objects.isNull(response) || StringUtil.isNullOrEmpty(bodyString)) { +// log.error("PythonService##generateSketchOrPrint异常###{}", "response or body is empty!"); +// throw new BusinessException("generate exception!"); +// } + JSONObject jsonObject = JSON.parseObject(bodyString); +// Boolean result = JSON.parseObject(JSON.toJSONString(response)).getBoolean("successful"); + Boolean result = Boolean.TRUE; if (result) { - return setGenerateImageList(jsonObject.getJSONObject("date")); + return setGenerateImageList(jsonObject.getJSONObject("data")); } log.info("generateSketchOrPrintPrint失败###{}", jsonObject); //生成失败 @@ -1703,13 +1713,13 @@ public class PythonService { } private static List setGenerateImageList(JSONObject jsonObject){ - if (Objects.isNull(jsonObject.getJSONObject("list"))){ + List imageUrlList = JSONObject.parseArray(jsonObject.get("list").toString(),String.class); + if (imageUrlList.size() == 0){ log.error("PythonService##generateSketchOrPrint异常###{}","diffusion response list is null"); - // todo 如果这里返回为空,是判断出错还是返回给前端空 throw new BusinessException("Some errors occurred, please try again later"); } - return JSONArray.parseArray(JSONObject.toJSONString(jsonObject.get("list")), String.class); + return imageUrlList; } } diff --git a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java index 8dd79cf9..6f4e809b 100644 --- a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java @@ -7,6 +7,7 @@ import com.ai.da.common.enums.GenerateModeEnum; import com.ai.da.common.enums.ModelNameEnum; 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.CollectionElementMapper; import com.ai.da.mapper.GenerateDetailMapper; import com.ai.da.mapper.GenerateMapper; @@ -21,6 +22,7 @@ import com.ai.da.service.LibraryService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import io.netty.util.internal.StringUtil; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -44,6 +46,11 @@ public class GenerateServiceImpl extends ServiceImpl im @Resource private CollectionElementService collectionElementService; + @Resource + private MinioUtil minioUtil; + @Value("${minio.bucketName4}") + private String bucketName4; + @Override public GenerateCaptionVO generateCaption(Long sketchElementId) { CollectionElement collectionElement = collectionElementMapper.selectById(sketchElementId); @@ -102,7 +109,7 @@ public class GenerateServiceImpl extends ServiceImpl im GenerateCollectionItemVO generateCollectionItemVO = new GenerateCollectionItemVO(); generateCollectionItemVO.setGenerateItemId(generateDetail.getId()); - generateCollectionItemVO.setGenerateItemUrl(item); + generateCollectionItemVO.setGenerateItemUrl(minioUtil.getPresignedUrl(bucketName4,item,480)); generatedCollectionItems.add(generateCollectionItemVO); }); diff --git a/src/main/resources/application-test.properties b/src/main/resources/application-test.properties index e076c02c..ffd37423 100644 --- a/src/main/resources/application-test.properties +++ b/src/main/resources/application-test.properties @@ -49,6 +49,7 @@ minio.secretKey=minioadmin minio.bucketName=aida-results minio.bucketName2=aida-clothing minio.bucketName3=aida-mannequins +minio.bucketName4=aida-users From a543dde9a7c470a88c097161ee902713ed4dbd72 Mon Sep 17 00:00:00 2001 From: xupei <1779019091@qq.com> Date: Tue, 19 Sep 2023 10:56:17 +0800 Subject: [PATCH 4/8] =?UTF-8?q?generate=20bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/ai/da/python/PythonService.java | 2 +- src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/ai/da/python/PythonService.java b/src/main/java/com/ai/da/python/PythonService.java index 1f6313a5..fc4a1291 100644 --- a/src/main/java/com/ai/da/python/PythonService.java +++ b/src/main/java/com/ai/da/python/PythonService.java @@ -1345,7 +1345,7 @@ public class PythonService { bodyPath = designLibraryModelPoint.getTemplateUrl(); } else { // bodyPath = "/workspace/python_code/Multi-layer-Virtual-Try-on/dataset_for_test/Img_model.png"; - bodyPath = "model_1693218345.2714431.png"; + bodyPath = "aida-mannequins/model_1693218345.2714431.png"; } response.add(new DesignPythonItem(SysFileLevel2TypeEnum.BODY.getRealName(),bodyPath,pythonTAllInfoService.getImageIdByPath(bodyPath))); return response; diff --git a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java index 6f4e809b..522e2c76 100644 --- a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java @@ -93,7 +93,8 @@ public class GenerateServiceImpl extends ServiceImpl im int mode = GenerateModeEnum.TEXT.getValue().equals(generate.getGenerateType()) ? GenerateModeEnum.TEXT.getCode() : GenerateModeEnum.TEXT_IMAGE.getCode(); String category = generateThroughImageTextDTO.getLevel1Type().equals(CollectionLevel1TypeEnum.SKETCH_BOARD.getRealName()) ? "sketch" : generateThroughImageTextDTO.getLevel1Type().equals(CollectionLevel1TypeEnum.PRINT_BOARD.getRealName()) ? "print" : "moodboard"; - List generatedSketchUrl = pythonService.generateSketchOrPrint(accountId,collectionElement.getUrl(),category,text,mode,generateThroughImageTextDTO.getVersion()); + List generatedSketchUrl = pythonService.generateSketchOrPrint(accountId,Objects.isNull(elementId) ? null : collectionElement.getUrl(), + category,text,mode,generateThroughImageTextDTO.getVersion()); // List generatedSketchUrl = Arrays.asList("testUrl1","testUrl2","testUrl3","testUrl4"); From 00803692b29e1a83767a4e4c5a7fba25dde67926 Mon Sep 17 00:00:00 2001 From: xupei <1779019091@qq.com> Date: Tue, 19 Sep 2023 13:25:55 +0800 Subject: [PATCH 5/8] =?UTF-8?q?minio=20=E8=BF=94=E5=9B=9E=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ai/da/common/utils/MinioUtil.java | 19 ++++++++++++++++++- .../java/com/ai/da/python/PythonService.java | 2 +- .../service/impl/DesignItemServiceImpl.java | 2 +- .../ai/da/service/impl/DesignServiceImpl.java | 4 ++-- .../da/service/impl/GenerateServiceImpl.java | 4 ++-- .../TDesignPythonOutfitDetailServiceImpl.java | 6 +++--- 6 files changed, 27 insertions(+), 10 deletions(-) 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 dbaf774c..ad33dd5b 100644 --- a/src/main/java/com/ai/da/common/utils/MinioUtil.java +++ b/src/main/java/com/ai/da/common/utils/MinioUtil.java @@ -240,7 +240,24 @@ public class MinioUtil { } } - + /** + * 将桶名、文件名从url中分离出来 + * @param url 带桶名、文件名的url + * @param expiry 图片过期时间 + * @return 可以直接访问的minio图片地址 + */ + public String splitThenGetPreviewUrl(String url,int expiry){ + String[] parts = url.split("/"); + String bucketName = parts[0]; + StringBuilder fileName = new StringBuilder(); + for (int i = 1; i < parts.length; i++){ + fileName.append(parts[i]); + if (i != parts.length -1){ + fileName.append("/"); + } + } + return getPresignedUrl(bucketName, String.valueOf(fileName),expiry); + } } diff --git a/src/main/java/com/ai/da/python/PythonService.java b/src/main/java/com/ai/da/python/PythonService.java index fc4a1291..987d78c2 100644 --- a/src/main/java/com/ai/da/python/PythonService.java +++ b/src/main/java/com/ai/da/python/PythonService.java @@ -1658,7 +1658,7 @@ public class PythonService { " \"code\": 200,\n" + " \"data\": {\n" + " \"list\": [\n" + - " \"12/print_1695088687_0.png\"\n" + + " \"aida-users/12/print_1695088687_0.png\"\n" + " ]\n" + " },\n" + " \"msg\": \"OK!\"\n" + 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 e15bb119..45357315 100644 --- a/src/main/java/com/ai/da/service/impl/DesignItemServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/DesignItemServiceImpl.java @@ -413,7 +413,7 @@ public class DesignItemServiceImpl extends ServiceImpl impleme d.setPrintObject(new DesignPythonItemPrint()); })); return editDesignItemLayer(flag,designPythonOutfit, - minIoUtil.getPresignedUrl(bucketName,designItem.getDesignUrl(),480), + minIoUtil.splitThenGetPreviewUrl(designItem.getDesignUrl(),480), editResponseColor(designItemDetails,response)); } private String converTypeToLevel1(String type){ @@ -856,7 +856,7 @@ public class DesignServiceImpl extends ServiceImpl impleme }); // 2、将查询出的图层信息填充到designItemDetailVO中 - designItemDetailVO.setDesignItemUrl(minIoUtil.getPresignedUrl(bucketName,designPythonOutfit.getDesignUrl(),480)); + designItemDetailVO.setDesignItemUrl(minIoUtil.splitThenGetPreviewUrl(designPythonOutfit.getDesignUrl(),480)); // 2.1 填充clothes designItemDetailVO.getClothes().forEach(c -> { String type = c.getType().toLowerCase(); diff --git a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java index 522e2c76..73022b0a 100644 --- a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java @@ -110,7 +110,7 @@ public class GenerateServiceImpl extends ServiceImpl im GenerateCollectionItemVO generateCollectionItemVO = new GenerateCollectionItemVO(); generateCollectionItemVO.setGenerateItemId(generateDetail.getId()); - generateCollectionItemVO.setGenerateItemUrl(minioUtil.getPresignedUrl(bucketName4,item,480)); + generateCollectionItemVO.setGenerateItemUrl(minioUtil.splitThenGetPreviewUrl(item,480)); generatedCollectionItems.add(generateCollectionItemVO); }); @@ -171,7 +171,7 @@ public class GenerateServiceImpl extends ServiceImpl im library.setLevel2Type(StringUtil.isNullOrEmpty(generateLikeDTO.getLevel2Type()) ? null : generateLikeDTO.getLevel2Type()); library.setName(DateUtil.dateToStr(new Date(),DateUtil.YYYY_MM_DD)); library.setUrl(imageUrl); - library.setMd5(MD5Utils.encryptFile(imageUrl,Boolean.FALSE)); + library.setMd5(MD5Utils.encryptFile(minioUtil.splitThenGetPreviewUrl(imageUrl,5),Boolean.FALSE)); library.setCreateDate(DateUtil.getByTimeZone(generateLikeDTO.getTimeZone())); return library; } diff --git a/src/main/java/com/ai/da/service/impl/TDesignPythonOutfitDetailServiceImpl.java b/src/main/java/com/ai/da/service/impl/TDesignPythonOutfitDetailServiceImpl.java index 26e1de0f..ed6bef78 100644 --- a/src/main/java/com/ai/da/service/impl/TDesignPythonOutfitDetailServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/TDesignPythonOutfitDetailServiceImpl.java @@ -57,11 +57,11 @@ public class TDesignPythonOutfitDetailServiceImpl extends ServiceImpl) JSON.parse(detail.getPosition())); designPythonOutfitVO.setImageSize(StringUtil.isNullOrEmpty(detail.getImageSize()) ? null : (List) JSON.parse(detail.getImageSize())); if (detail.getImageCategory().equals("body")){ - designPythonOutfitVO.setImageUrl(StringUtil.isNullOrEmpty(detail.getImageUrl()) ? null : minIoUtil.getPresignedUrl(bucketName3,detail.getImageUrl(),480)); + designPythonOutfitVO.setImageUrl(StringUtil.isNullOrEmpty(detail.getImageUrl()) ? null : minIoUtil.splitThenGetPreviewUrl(detail.getImageUrl(),480)); }else { - designPythonOutfitVO.setImageUrl(StringUtil.isNullOrEmpty(detail.getImageUrl()) ? null : minIoUtil.getPresignedUrl(bucketName2,detail.getImageUrl(),480)); + designPythonOutfitVO.setImageUrl(StringUtil.isNullOrEmpty(detail.getImageUrl()) ? null : minIoUtil.splitThenGetPreviewUrl(detail.getImageUrl(),480)); } - designPythonOutfitVO.setMaskUrl(StringUtil.isNullOrEmpty(detail.getMaskUrl()) ? null : minIoUtil.getPresignedUrl(bucketName2,detail.getMaskUrl(),480)); + designPythonOutfitVO.setMaskUrl(StringUtil.isNullOrEmpty(detail.getMaskUrl()) ? null : minIoUtil.splitThenGetPreviewUrl(detail.getMaskUrl(),480)); return designPythonOutfitVO; } From eb2ef0f39d5ad56383977f30e51564e288e69004 Mon Sep 17 00:00:00 2001 From: xupei <1779019091@qq.com> Date: Tue, 19 Sep 2023 15:21:53 +0800 Subject: [PATCH 6/8] =?UTF-8?q?generate=20=E6=B7=BB=E5=8A=A0dislike?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=20=E8=8E=B7=E5=8F=96library=E5=9C=B0?= =?UTF-8?q?=E5=9D=80=E4=BF=AE=E6=94=B9=EF=BC=88=E5=85=BC=E5=AE=B9minio?= =?UTF-8?q?=E5=9C=B0=E5=9D=80=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ai/da/controller/GenerateController.java | 6 ++++ .../ai/da/mapper/entity/GenerateDetail.java | 5 +++ .../com/ai/da/service/GenerateService.java | 2 ++ .../da/service/impl/GenerateServiceImpl.java | 35 +++++++++++++++++-- .../da/service/impl/LibraryServiceImpl.java | 11 +++--- 5 files changed, 51 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/ai/da/controller/GenerateController.java b/src/main/java/com/ai/da/controller/GenerateController.java index c4ed674c..2e6a2700 100644 --- a/src/main/java/com/ai/da/controller/GenerateController.java +++ b/src/main/java/com/ai/da/controller/GenerateController.java @@ -46,4 +46,10 @@ public class GenerateController { return Response.success(generateService.generateLike(generateLikeDTO)); } + @ApiOperation(value = "取消喜欢") + @PostMapping("/dislike") + public Response dislike(@RequestParam Long generateDetailId,String timeZone) { + return Response.success(generateService.generateDislike(generateDetailId,timeZone)); + } + } diff --git a/src/main/java/com/ai/da/mapper/entity/GenerateDetail.java b/src/main/java/com/ai/da/mapper/entity/GenerateDetail.java index 224ef2bf..dcdf3a58 100644 --- a/src/main/java/com/ai/da/mapper/entity/GenerateDetail.java +++ b/src/main/java/com/ai/da/mapper/entity/GenerateDetail.java @@ -37,6 +37,11 @@ public class GenerateDetail { */ private Byte isLike; + /** + * 喜欢的图片添加到library对应的id + */ + private Long libraryId; + /** * 创建时间 */ diff --git a/src/main/java/com/ai/da/service/GenerateService.java b/src/main/java/com/ai/da/service/GenerateService.java index 454f5df8..11958e1f 100644 --- a/src/main/java/com/ai/da/service/GenerateService.java +++ b/src/main/java/com/ai/da/service/GenerateService.java @@ -13,4 +13,6 @@ public interface GenerateService { GenerateCollectionVO generateThroughImageText(GenerateThroughImageTextDTO generateThroughImageTextDTO); GenerateLikeVO generateLike(GenerateLikeDTO generateLikeDTO); + + Boolean generateDislike(Long generateDetailId,String timeZone); } diff --git a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java index 73022b0a..27f2dfb2 100644 --- a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java @@ -153,17 +153,44 @@ public class GenerateServiceImpl extends ServiceImpl im Assert.isTrue(generateLikeDTO.getLevel1Type().equals(generate.getLevel1Type()),"level1Type does not match"); // 2、将like的图片信息存入library + // 2.1、不能重复喜欢 + Library libraryDetail = libraryService.getById(generateDetail.getLibraryId()); + Assert.isTrue(Objects.isNull(generateDetail.getLibraryId()) || Objects.isNull(libraryDetail), + "Duplicate likes are not allowed"); + // 2.2、添加到library AuthPrincipalVo userInfo = UserContext.getUserHolder(); Long accountId = userInfo.getId(); Library library = setLibrary(accountId, generateLikeDTO, generateDetail.getUrl()); libraryService.save(library); - // 3、更新generateDetail表的isLike列 - updateLikeStatus(generateLikeDTO.getGenerateDetailId(),(byte)1); + // 3、更新generateDetail表的isLike列和libraryId列 + updateLikeStatus(generateLikeDTO.getGenerateDetailId(),(byte)1,library.getId(),generateLikeDTO.getTimeZone()); return new GenerateLikeVO(library.getId()); } + @Override + public Boolean generateDislike(Long generateDetailId, String timeZone) { + // 1、确定generateDetail中是否有这条记录 + GenerateDetail generateDetail = generateDetailMapper.selectById(generateDetailId); + Assert.notNull(generateDetail,"generateItem does not exist"); + + // 2、修改generateDetail表中的isLike、libraryId字段 + updateLikeStatus(generateDetailId,(byte)0,0L,timeZone); + + // 3、确定library中是否添加该条记录 + Library libraryDetail = libraryService.getById(generateDetail.getLibraryId()); + if (Objects.isNull(libraryDetail)){ + return Boolean.TRUE; + } + + // 4、删除library相关记录 + libraryService.removeById(libraryDetail.getId()); + + // 5、返回成功 + return Boolean.TRUE; + } + public Library setLibrary(Long accountId,GenerateLikeDTO generateLikeDTO,String imageUrl){ Library library = new Library(); library.setAccountId(accountId); @@ -176,12 +203,14 @@ public class GenerateServiceImpl extends ServiceImpl im return library; } - public void updateLikeStatus(Long generateDetailId,Byte hasLike){ + public void updateLikeStatus(Long generateDetailId,Byte hasLike,Long libraryId,String timeZone){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("id", generateDetailId); GenerateDetail generateDetail = new GenerateDetail(); generateDetail.setIsLike(hasLike); + generateDetail.setLibraryId(libraryId); + generateDetail.setUpdateDate(DateUtil.getByTimeZone(timeZone)); generateDetailMapper.update(generateDetail,queryWrapper); } } 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 9672e3c4..8b28ae9c 100644 --- a/src/main/java/com/ai/da/service/impl/LibraryServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/LibraryServiceImpl.java @@ -5,25 +5,21 @@ import com.ai.da.common.config.exception.BusinessException; import com.ai.da.common.context.UserContext; import com.ai.da.common.enums.*; import com.ai.da.common.response.PageBaseResponse; -import com.ai.da.common.response.Response; import com.ai.da.common.utils.CopyUtil; import com.ai.da.common.utils.DateUtil; import com.ai.da.common.utils.FileUtil; -import com.ai.da.mapper.CollectionElementMapper; +import com.ai.da.common.utils.MinioUtil; import com.ai.da.mapper.LibraryMapper; -import com.ai.da.mapper.UserLikeMapper; import com.ai.da.mapper.entity.*; import com.ai.da.model.dto.*; import com.ai.da.model.vo.*; import com.ai.da.service.LibraryModelPointService; import com.ai.da.service.LibraryService; -import com.ai.da.service.UserLikeService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.base.Function; -import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.util.Assert; @@ -50,6 +46,8 @@ public class LibraryServiceImpl extends ServiceImpl impl private FileProperties fileProperties; @Resource private LibraryModelPointService libraryModelPointService; + @Resource + private MinioUtil minioUtil; private static List top = Arrays.asList(CollectionLevel2TypeEnum.DRESS.getRealName(), CollectionLevel2TypeEnum.OUTWEAR.getRealName(),CollectionLevel2TypeEnum.BLOUSE.getRealName()); @@ -122,6 +120,9 @@ public class LibraryServiceImpl extends ServiceImpl impl IPage convert = page.convert((Function) library -> { QueryLibraryPageVO libraryPageVO = CopyUtil.copyObject(library,QueryLibraryPageVO.class); libraryPageVO.setDesignType(DesignTypeEnum.LIBRARY.getRealName()); + if (library.getUrl().startsWith("aida")){ + libraryPageVO.setUrl(minioUtil.splitThenGetPreviewUrl(library.getUrl(),480)); + } if(finalMap != null && finalMap.containsKey(library.getId())){ libraryPageVO.setLibraryModelPoint(finalMap.get(library.getId())); } From aef2bb74572f16a03b87573ed0393da88c325cb2 Mon Sep 17 00:00:00 2001 From: xupei <1779019091@qq.com> Date: Tue, 19 Sep 2023 15:39:21 +0800 Subject: [PATCH 7/8] =?UTF-8?q?generate=20=E4=BF=AE=E6=94=B9dislike?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/ai/da/controller/GenerateController.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/ai/da/controller/GenerateController.java b/src/main/java/com/ai/da/controller/GenerateController.java index 2e6a2700..275c153d 100644 --- a/src/main/java/com/ai/da/controller/GenerateController.java +++ b/src/main/java/com/ai/da/controller/GenerateController.java @@ -9,6 +9,7 @@ import com.ai.da.model.vo.GenerateLikeVO; import com.ai.da.service.GenerateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; @@ -47,8 +48,9 @@ public class GenerateController { } @ApiOperation(value = "取消喜欢") - @PostMapping("/dislike") - public Response dislike(@RequestParam Long generateDetailId,String timeZone) { + @GetMapping("/dislike") + public Response dislike(@ApiParam("generateDetailId") @RequestParam Long generateDetailId, + @ApiParam("timeZone") @RequestParam String timeZone) { return Response.success(generateService.generateDislike(generateDetailId,timeZone)); } From 3afe1c715d1617b9eb27df5c0702f67a54d6f487 Mon Sep 17 00:00:00 2001 From: xupei <1779019091@qq.com> Date: Tue, 19 Sep 2023 15:52:33 +0800 Subject: [PATCH 8/8] =?UTF-8?q?generate=20=E6=8E=A5=E5=8F=A3=E7=96=8F?= =?UTF-8?q?=E9=80=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ai/da/python/PythonService.java | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/ai/da/python/PythonService.java b/src/main/java/com/ai/da/python/PythonService.java index 987d78c2..829a4e4d 100644 --- a/src/main/java/com/ai/da/python/PythonService.java +++ b/src/main/java/com/ai/da/python/PythonService.java @@ -1636,7 +1636,7 @@ public class PythonService { content.put("user_id", userId); content.put("image_url", url); content.put("category", category); - content.put("mode",mode); // + content.put("mode",mode); content.put("str", text); content.put("version",2); RequestBody body = RequestBody.create(mediaType, JSON.toJSONString(content)); @@ -1650,32 +1650,32 @@ public class PythonService { .build(); Response response = null; String bodyString = null; -// try { + try { log.info("generateSketchOrPrint请求入参content###{}", JSON.toJSONString(content)); -// response = client.newCall(request).execute(); -// bodyString = response.body().string(); - bodyString = "{\n" + - " \"code\": 200,\n" + - " \"data\": {\n" + - " \"list\": [\n" + - " \"aida-users/12/print_1695088687_0.png\"\n" + - " ]\n" + - " },\n" + - " \"msg\": \"OK!\"\n" + - "}"; -// } catch (IOException ioException) { -// log.error("PythonService##generateSketchOrPrint异常###{}", ExceptionUtil.getThrowableList(ioException)); -// } + response = client.newCall(request).execute(); + bodyString = response.body().string(); +// bodyString = "{\n" + +// " \"code\": 200,\n" + +// " \"data\": {\n" + +// " \"list\": [\n" + +// " \"aida-users/12/print_1695088687_0.png\"\n" + +// " ]\n" + +// " },\n" + +// " \"msg\": \"OK!\"\n" + +// "}"; + } catch (IOException ioException) { + log.error("PythonService##generateSketchOrPrint异常###{}", ExceptionUtil.getThrowableList(ioException)); + } //去除限流 AccessLimitUtils.validateOut("generateSketchOrPrint"); // 生成失败 -// if (Objects.isNull(response) || StringUtil.isNullOrEmpty(bodyString)) { -// log.error("PythonService##generateSketchOrPrint异常###{}", "response or body is empty!"); -// throw new BusinessException("generate exception!"); -// } + if (Objects.isNull(response) || StringUtil.isNullOrEmpty(bodyString)) { + log.error("PythonService##generateSketchOrPrint异常###{}", "response or body is empty!"); + throw new BusinessException("generate exception!"); + } JSONObject jsonObject = JSON.parseObject(bodyString); -// Boolean result = JSON.parseObject(JSON.toJSONString(response)).getBoolean("successful"); - Boolean result = Boolean.TRUE; + Boolean result = JSON.parseObject(JSON.toJSONString(response)).getBoolean("successful"); +// Boolean result = Boolean.TRUE; if (result) { return setGenerateImageList(jsonObject.getJSONObject("data")); }