From 0313149ea558c73460163122338723a03dfebdac Mon Sep 17 00:00:00 2001 From: xupei <1779019091@qq.com> Date: Thu, 2 Nov 2023 15:35:07 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E5=A4=84=E7=90=86+=E4=BB=A3=E7=A0=81=E6=B8=85=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ai/da/common/utils/SendEmailUtil.java | 1 - .../ai/da/controller/ElementController.java | 3 -- .../ai/da/controller/GenerateController.java | 1 - .../ai/da/controller/LibraryController.java | 3 -- .../ai/da/controller/PythonController.java | 20 ++++----- .../controller/SavedCollectionController.java | 5 --- .../java/com/ai/da/python/PythonService.java | 40 ++++++++--------- .../impl/CollectionElementServiceImpl.java | 10 ----- .../service/impl/CollectionServiceImpl.java | 4 -- .../impl/DesignHistoryServiceImpl.java | 28 ------------ .../service/impl/DesignItemServiceImpl.java | 21 +++++---- .../ai/da/service/impl/DesignServiceImpl.java | 15 ++++--- .../da/service/impl/GenerateServiceImpl.java | 43 ++++++++++++------- .../impl/LibraryModelPointServiceImpl.java | 10 ----- .../impl/UserLikeGroupServiceImpl.java | 4 -- src/main/resources/messages_en.properties | 13 +++++- 16 files changed, 91 insertions(+), 130 deletions(-) diff --git a/src/main/java/com/ai/da/common/utils/SendEmailUtil.java b/src/main/java/com/ai/da/common/utils/SendEmailUtil.java index f2f30238..6ebdeef8 100644 --- a/src/main/java/com/ai/da/common/utils/SendEmailUtil.java +++ b/src/main/java/com/ai/da/common/utils/SendEmailUtil.java @@ -11,7 +11,6 @@ import com.tencentcloudapi.ses.v20201002.models.SendEmailRequest; import com.tencentcloudapi.ses.v20201002.models.SendEmailResponse; import com.tencentcloudapi.ses.v20201002.models.Template; import lombok.extern.slf4j.Slf4j; -import org.springframework.util.Assert; import java.util.Date; diff --git a/src/main/java/com/ai/da/controller/ElementController.java b/src/main/java/com/ai/da/controller/ElementController.java index 9d0dda9d..ad2b17fd 100644 --- a/src/main/java/com/ai/da/controller/ElementController.java +++ b/src/main/java/com/ai/da/controller/ElementController.java @@ -2,7 +2,6 @@ package com.ai.da.controller; import com.ai.da.common.config.exception.BusinessException; import com.ai.da.common.response.Response; -import com.ai.da.common.utils.FileUtil; import com.ai.da.common.utils.MD5Utils; import com.ai.da.model.dto.*; import com.ai.da.model.vo.*; @@ -13,12 +12,10 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; -import org.springframework.util.Assert; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.annotation.PostConstruct; import javax.annotation.Resource; import javax.validation.Valid; import java.util.List; diff --git a/src/main/java/com/ai/da/controller/GenerateController.java b/src/main/java/com/ai/da/controller/GenerateController.java index 9749a826..30e5fb38 100644 --- a/src/main/java/com/ai/da/controller/GenerateController.java +++ b/src/main/java/com/ai/da/controller/GenerateController.java @@ -34,7 +34,6 @@ public class GenerateController { return Response.success(generateService.generateCaption(sketchElementId)); } - @ApiOperation("通过文字、图片生成图片") @PostMapping("/sketchAndPrint") public Response generateThroughImageText(@Valid @RequestBody GenerateThroughImageTextDTO generateThroughImageTextDTO) { diff --git a/src/main/java/com/ai/da/controller/LibraryController.java b/src/main/java/com/ai/da/controller/LibraryController.java index ab5b8355..186acd16 100644 --- a/src/main/java/com/ai/da/controller/LibraryController.java +++ b/src/main/java/com/ai/da/controller/LibraryController.java @@ -1,7 +1,5 @@ package com.ai.da.controller; -import cn.hutool.core.lang.Assert; -import cn.hutool.system.UserInfo; import com.ai.da.common.config.FileProperties; import com.ai.da.common.config.exception.BusinessException; import com.ai.da.common.context.UserContext; @@ -17,7 +15,6 @@ import com.ai.da.model.vo.*; import com.ai.da.service.LibraryModelPointService; import com.ai.da.service.LibraryService; import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; diff --git a/src/main/java/com/ai/da/controller/PythonController.java b/src/main/java/com/ai/da/controller/PythonController.java index 7819a49c..da4a8d3f 100644 --- a/src/main/java/com/ai/da/controller/PythonController.java +++ b/src/main/java/com/ai/da/controller/PythonController.java @@ -7,7 +7,6 @@ import com.ai.da.mapper.entity.Library; import com.ai.da.model.dto.ChatFlushDTO; import com.ai.da.model.dto.ChatRobotLibraryDTO; import com.ai.da.model.dto.ChatSendDTO; -import com.ai.da.model.vo.ChatRobotLibraryVO; import com.ai.da.model.vo.ChatRobotVO; import com.ai.da.model.vo.PythonLibraryVo; import com.ai.da.model.vo.SysFileVO; @@ -21,7 +20,6 @@ import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; import javax.annotation.Resource; import java.math.BigDecimal; @@ -57,15 +55,15 @@ public class PythonController { return Response.success(pythonService.upload(file, operateType)); } - @ApiOperation(value = "python服务保存多张图片到java服务") - @PostMapping("/saveMultiGeneratePicture") - public Response> uploadMultiple(@RequestParam("files") MultipartFile[] files, - @ApiParam("操作类型 generatePrint ->生成印花 " + - "designCollection ->设计collection generateAdvancedDesign ->生成高级design" + - "generateSketch -> 生成草图") - @RequestParam(value = "operateType") String operateType) { - return Response.success(pythonService.upload(files, operateType)); - } +// @ApiOperation(value = "python服务保存多张图片到java服务") +// @PostMapping("/saveMultiGeneratePicture") +// public Response> uploadMultiple(@RequestParam("files") MultipartFile[] files, +// @ApiParam("操作类型 generatePrint ->生成印花 " + +// "designCollection ->设计collection generateAdvancedDesign ->生成高级design" + +// "generateSketch -> 生成草图") +// @RequestParam(value = "operateType") String operateType) { +// return Response.success(pythonService.upload(files, operateType)); +// } @ApiOperation(value = "通过文件类型获取系统文件") @GetMapping("/getSysFileByLevel2Type") diff --git a/src/main/java/com/ai/da/controller/SavedCollectionController.java b/src/main/java/com/ai/da/controller/SavedCollectionController.java index a1e3384d..efb7aec9 100644 --- a/src/main/java/com/ai/da/controller/SavedCollectionController.java +++ b/src/main/java/com/ai/da/controller/SavedCollectionController.java @@ -3,12 +3,10 @@ package com.ai.da.controller; import com.ai.da.common.config.exception.BusinessException; import com.ai.da.common.context.UserContext; import com.ai.da.common.response.PageBaseResponse; -import com.ai.da.common.response.PageResponse; import com.ai.da.common.response.Response; import com.ai.da.common.utils.CopyUtil; import com.ai.da.common.utils.MinioUtil; import com.ai.da.mapper.entity.Account; -import com.ai.da.mapper.entity.Collection; import com.ai.da.mapper.entity.UserLikeGroup; import com.ai.da.model.dto.*; import com.ai.da.model.vo.*; @@ -21,15 +19,12 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; -import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.validation.Valid; -import java.math.BigDecimal; -import java.math.RoundingMode; import java.util.Date; import java.util.List; import java.util.Map; diff --git a/src/main/java/com/ai/da/python/PythonService.java b/src/main/java/com/ai/da/python/PythonService.java index 573d3261..214c7df2 100644 --- a/src/main/java/com/ai/da/python/PythonService.java +++ b/src/main/java/com/ai/da/python/PythonService.java @@ -145,26 +145,26 @@ public class PythonService { return null; } - @Transactional - public List upload(MultipartFile[] files, String operateType) { - List paths = new ArrayList<>(); - //用户信息 - PythonToJavaApiOperationTypeEnum operationType = PythonToJavaApiOperationTypeEnum.uploadOf(operateType); - Assert.notNull(operationType, "unknown operateType " + operateType + "!"); - String path = calculateFileUrl(operationType); - for (MultipartFile file : files) { - File generateFile = FileUtil.upload2(file, path); - Assert.notNull(generateFile, "An error occurred while processing the file, please try again later"); - - String linuxDomain = fileProperties.getLinuxDomain(); - if (!StringUtils.isEmpty(linuxDomain)) { - //linux 系统 - String oldPath = fileProperties.getSys().getPath(); - paths.add(generateFile.getAbsolutePath().replace(oldPath, linuxDomain)); - } - } - return paths; - } +// @Transactional +// public List upload(MultipartFile[] files, String operateType) { +// List paths = new ArrayList<>(); +// //用户信息 +// PythonToJavaApiOperationTypeEnum operationType = PythonToJavaApiOperationTypeEnum.uploadOf(operateType); +// Assert.notNull(operationType, "unknown operateType " + operateType + "!"); +// String path = calculateFileUrl(operationType); +// for (MultipartFile file : files) { +// File generateFile = FileUtil.upload2(file, path); +// Assert.notNull(generateFile, "An error occurred while processing the file!"); +// +// String linuxDomain = fileProperties.getLinuxDomain(); +// if (!StringUtils.isEmpty(linuxDomain)) { +// //linux 系统 +// String oldPath = fileProperties.getSys().getPath(); +// paths.add(generateFile.getAbsolutePath().replace(oldPath, linuxDomain)); +// } +// } +// return paths; +// } private String calculateFileUrl(PythonToJavaApiOperationTypeEnum operationType) { diff --git a/src/main/java/com/ai/da/service/impl/CollectionElementServiceImpl.java b/src/main/java/com/ai/da/service/impl/CollectionElementServiceImpl.java index 67417408..7e018227 100644 --- a/src/main/java/com/ai/da/service/impl/CollectionElementServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/CollectionElementServiceImpl.java @@ -5,14 +5,11 @@ import com.ai.da.common.config.FileProperties; 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.utils.*; import com.ai.da.mapper.CollectionElementMapper; import com.ai.da.mapper.GenerateDetailMapper; import com.ai.da.mapper.entity.*; -import com.ai.da.mapper.entity.Collection; import com.ai.da.model.dto.*; -import com.ai.da.model.enums.MalePosition; import com.ai.da.model.enums.ModelType; import com.ai.da.model.enums.Sex; import com.ai.da.model.vo.*; @@ -26,24 +23,17 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Lists; import io.netty.util.internal.StringUtil; -import javafx.scene.chart.ValueAxis; import lombok.extern.slf4j.Slf4j; -import org.bouncycastle.LICENSE; -import org.bouncycastle.cms.CMSAuthenticatedGenerator; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.transaction.reactive.AbstractReactiveTransactionManager; -import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; -import sun.applet.resources.MsgAppletViewer; import javax.annotation.Resource; import java.io.File; import java.math.BigDecimal; import java.util.*; -import java.util.stream.Collector; import java.util.stream.Collectors; /** diff --git a/src/main/java/com/ai/da/service/impl/CollectionServiceImpl.java b/src/main/java/com/ai/da/service/impl/CollectionServiceImpl.java index 3b56bba9..a3d2ce5b 100644 --- a/src/main/java/com/ai/da/service/impl/CollectionServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/CollectionServiceImpl.java @@ -9,17 +9,13 @@ import com.ai.da.common.utils.MinioUtil; import com.ai.da.mapper.CollectionMapper; import com.ai.da.mapper.entity.Collection; import com.ai.da.mapper.entity.CollectionElement; -import com.ai.da.model.dto.CollectionColorDTO; import com.ai.da.model.vo.CollectionColorVO; import com.ai.da.model.vo.CollectionElementVO; import com.ai.da.model.vo.UserLikeCollectionVO; import com.ai.da.service.CollectionElementService; import com.ai.da.service.CollectionService; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Assert; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.google.common.collect.Maps; import io.netty.util.internal.StringUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/ai/da/service/impl/DesignHistoryServiceImpl.java b/src/main/java/com/ai/da/service/impl/DesignHistoryServiceImpl.java index 0cea2a7e..8532c905 100644 --- a/src/main/java/com/ai/da/service/impl/DesignHistoryServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/DesignHistoryServiceImpl.java @@ -1,43 +1,15 @@ package com.ai.da.service.impl; -import com.ai.da.common.config.FileProperties; -import com.ai.da.common.config.exception.BusinessException; -import com.ai.da.common.context.UserContext; -import com.ai.da.common.enums.CollectionLevel2TypeEnum; -import com.ai.da.common.enums.DesignTypeEnum; -import com.ai.da.common.enums.LibraryLevel1TypeEnum; -import com.ai.da.common.enums.LibraryTopTypeEnum; -import com.ai.da.common.response.PageBaseResponse; -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.DesignHistoryMapper; -import com.ai.da.mapper.LibraryMapper; -import com.ai.da.mapper.entity.Design; import com.ai.da.mapper.entity.DesignHistory; -import com.ai.da.mapper.entity.Library; -import com.ai.da.model.dto.LibraryUpdateDTO; -import com.ai.da.model.dto.LibraryUploadDTO; -import com.ai.da.model.dto.QueryLibraryPageServiceDTO; -import com.ai.da.model.vo.*; import com.ai.da.service.DesignHistoryService; -import com.ai.da.service.LibraryModelPointService; -import com.ai.da.service.LibraryService; 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 lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import org.springframework.util.Assert; -import org.springframework.util.CollectionUtils; -import org.springframework.util.StringUtils; import javax.annotation.Resource; -import java.io.File; import java.util.*; -import java.util.stream.Collectors; /** * 服务实现类 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 17528295..bbb16b20 100644 --- a/src/main/java/com/ai/da/service/impl/DesignItemServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/DesignItemServiceImpl.java @@ -25,7 +25,6 @@ import com.google.common.collect.Lists; import io.netty.util.internal.StringUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import org.springframework.util.Assert; import javax.annotation.Resource; import java.io.IOException; @@ -414,10 +413,6 @@ public class DesignItemServiceImpl extends ServiceImpl { TDesignPythonOutfitDetail detail = designPythonOutfitDetailService.getById(layer.getId()); - Assert.notNull(detail, layer.getImageCategory() + " layer does not exists!"); + if (Objects.isNull(detail)){ + log.error(layer.getImageCategory() + " layer does not exists!"); + throw new BusinessException("layers.does.not.exists"); + } +// Assert.notNull(detail, layer.getImageCategory() + " layer does not exists!"); /*layer.setImageUrl(detail.getImageUrl()); layer.setMaskUrl(detail.getMaskUrl());*/ 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 b8fc092e..438b719a 100644 --- a/src/main/java/com/ai/da/service/impl/DesignServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/DesignServiceImpl.java @@ -29,11 +29,9 @@ import com.google.common.collect.Lists; import io.netty.util.internal.StringUtil; import lombok.extern.slf4j.Slf4j; import okhttp3.*; -import org.checkerframework.checker.units.qual.C; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; @@ -841,7 +839,9 @@ public class DesignServiceImpl extends ServiceImpl impleme @Override public String generateHighDesign(GenerateHighDesignDTO generateHighDesignDTO) { DesignItem designItem = designItemService.getById(generateHighDesignDTO.getDesignItemId()); - Assert.notNull(designItem, "design item does not exist!"); + if (Objects.isNull(designItem)){ + throw new BusinessException("design.item.does.not.exist"); + } String highUrl = pythonService.generateHighDesign(designItem.getDesignUrl()); //存储 designItemService.updateDesignHighUrl(designItem.getId(), highUrl, generateHighDesignDTO.getTimeZone()); @@ -851,7 +851,9 @@ public class DesignServiceImpl extends ServiceImpl impleme @Override public Boolean deleteHighDesign(GenerateHighDesignDTO generateHighDesignDTO) { DesignItem designItem = designItemService.getById(generateHighDesignDTO.getDesignItemId()); - Assert.notNull(designItem, "design item does not exist!"); + if (Objects.isNull(designItem)){ + throw new BusinessException("design.item.does.not.exist"); + } if (StringUtils.isEmpty(designItem.getHighDesignUrl())) { //并发情况 ,不提示 直接返回 return Boolean.TRUE; @@ -1057,7 +1059,10 @@ public class DesignServiceImpl extends ServiceImpl impleme if (flag) { // 1、判断designPythonOutfitId查出的图层信息是否为空(不允许为空,系统内部错误) List details = designPythonOutfitDetailService.getDetailByDesignPythonOutfitId(designPythonOutfit.getId()); - Assert.notEmpty(details, "Some errors occurred, please restart the design"); + if (Objects.isNull(details)){ + log.error("Layer information is empty! DesignPythonOutfitId is " + designPythonOutfit.getId()); + throw new BusinessException("layer.information.not.found"); + } details.forEach(detail -> { List offset = new ArrayList<>(); if (StringUtil.isNullOrEmpty(detail.getOffset()) || detail.getOffset().equals("null")) { 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 0ab5de53..8acdbb48 100644 --- a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java @@ -1,8 +1,7 @@ package com.ai.da.service.impl; -import cn.hutool.core.lang.Assert; +import com.ai.da.common.config.exception.BusinessException; import com.ai.da.common.context.UserContext; -import com.ai.da.common.enums.CollectionLevel1TypeEnum; import com.ai.da.common.enums.GenerateModeEnum; import com.ai.da.common.enums.ModelNameEnum; import com.ai.da.common.utils.DateUtil; @@ -55,9 +54,9 @@ public class GenerateServiceImpl extends ServiceImpl i @Override public GenerateCaptionVO generateCaption(Long sketchElementId) { CollectionElement collectionElement = collectionElementMapper.selectById(sketchElementId); - Assert.notNull(collectionElement, "System error!Please reselect the sketch"); - Assert.isTrue("Sketchboard".equals(collectionElement.getLevel1Type()) && !StringUtil.isNullOrEmpty(collectionElement.getUrl()) - , "System error!Please reselect the sketch"); + if (Objects.isNull(collectionElement)){ + throw new BusinessException("the.image.does.not.exist.please.reselect"); + } String url = collectionElement.getUrl(); // String caption = pythonService.generateSketchCaption(url); GenerateCaptionVO recognized_caption = new GenerateCaptionVO("recognized caption"); @@ -127,16 +126,21 @@ public class GenerateServiceImpl extends ServiceImpl i private void validateGeneraType(Generate generate, String text, Long elementId) { switch (generate.getGenerateType()) { case "text": - Assert.notNull(text, "Please input the caption"); + if (StringUtil.isNullOrEmpty(text)){ + throw new BusinessException("please.input.the.caption"); + } generate.setText(text); break; case "image": - Assert.notNull(elementId, "Please choose a image"); + if (Objects.isNull(elementId)){ + throw new BusinessException("please.choose.an.image"); + } generate.setCollectionElementId(elementId); break; case "text-image": - Assert.isTrue(!StringUtil.isNullOrEmpty(text) && Objects.nonNull(elementId), - "Please input the caption and choose a image"); + if (StringUtil.isNullOrEmpty(text) || Objects.isNull(elementId)){ + throw new BusinessException("please.input.the.caption.and.choose.an.image"); + } generate.setText(text); generate.setCollectionElementId(elementId); default: @@ -148,20 +152,27 @@ public class GenerateServiceImpl extends ServiceImpl i // 1、判断参数是否正确 // 1.1 必须参数是否非空 if (SKETCH_BOARD.getRealName().equals(generateLikeDTO.getLevel1Type())) { - Assert.isTrue(!StringUtil.isNullOrEmpty(generateLikeDTO.getLevel2Type()), "level2Type cannot be empty"); + if (StringUtil.isNullOrEmpty(generateLikeDTO.getLevel2Type())){ + throw new BusinessException("level2Type.cannot.be.empty"); + } } // 1.2 判断参数是否真实有效 Long generateDetailId = generateLikeDTO.getGenerateDetailId(); GenerateDetail generateDetail = generateDetailMapper.selectById(generateDetailId); - Assert.notNull(generateDetail, "generateItem does not exist"); + if (Objects.isNull(generateDetail)){ + throw new BusinessException("generateItem.does.not.exist"); + } Generate generate = getById(generateDetail.getGenerateId()); - Assert.isTrue(generateLikeDTO.getLevel1Type().equals(generate.getLevel1Type()), "level1Type does not match"); + if (!generateLikeDTO.getLevel1Type().equals(generate.getLevel1Type())){ + throw new BusinessException("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"); + if (Objects.nonNull(generateDetail.getLibraryId()) || Objects.nonNull(libraryDetail)){ + throw new BusinessException("duplicate.likes.are.not.allowed"); + } // 2.2、添加到library AuthPrincipalVo userInfo = UserContext.getUserHolder(); Long accountId = userInfo.getId(); @@ -178,7 +189,9 @@ public class GenerateServiceImpl extends ServiceImpl i public Boolean generateDislike(Long generateDetailId, String timeZone) { // 1、确定generateDetail中是否有这条记录 GenerateDetail generateDetail = generateDetailMapper.selectById(generateDetailId); - Assert.notNull(generateDetail, "generateItem does not exist"); + if (Objects.isNull(generateDetail)){ + throw new BusinessException("generateItem.does.not.exist"); + } // 2、修改generateDetail表中的isLike、libraryId字段 updateLikeStatus(generateDetailId, (byte) 0, 0L, timeZone); diff --git a/src/main/java/com/ai/da/service/impl/LibraryModelPointServiceImpl.java b/src/main/java/com/ai/da/service/impl/LibraryModelPointServiceImpl.java index 5b196da1..d3473898 100644 --- a/src/main/java/com/ai/da/service/impl/LibraryModelPointServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/LibraryModelPointServiceImpl.java @@ -1,22 +1,16 @@ package com.ai.da.service.impl; import cn.hutool.core.collection.CollectionUtil; -import cn.hutool.core.lang.Assert; -import cn.hutool.json.JSONUtil; import com.ai.da.common.config.exception.BusinessException; -import com.ai.da.common.enums.LibraryLevel1TypeEnum; import com.ai.da.common.enums.SingleOverallEnum; import com.ai.da.common.utils.CopyUtil; import com.ai.da.common.utils.DateUtil; import com.ai.da.mapper.LibraryModelPointMapper; import com.ai.da.mapper.entity.*; -import com.ai.da.model.dto.DesignSingleDTO; -import com.ai.da.model.dto.DesignSingleItemDTO; import com.ai.da.model.dto.LibraryModelPointDTO; import com.ai.da.model.dto.ModelsDotDTO; import com.ai.da.model.enums.ModelType; import com.ai.da.model.vo.LibraryModelPointVO; -import com.ai.da.model.vo.LibraryUpdateVo; import com.ai.da.python.PythonService; import com.ai.da.python.vo.DesignPythonObjects; import com.ai.da.service.DesignService; @@ -27,17 +21,13 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; -import org.omg.PortableServer.LIFESPAN_POLICY_ID; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import javax.annotation.Resource; -import java.util.Arrays; import java.util.List; import java.util.Objects; -import java.util.Set; -import java.util.stream.Collectors; /** * 服务实现类 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 5a8c8017..f5da4974 100644 --- a/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java @@ -2,13 +2,10 @@ package com.ai.da.service.impl; import cn.hutool.core.collection.CollectionUtil; import com.ai.da.common.config.exception.BusinessException; -import com.ai.da.common.context.UserContext; -import com.ai.da.common.utils.CopyUtil; import com.ai.da.common.utils.DateUtil; import com.ai.da.common.utils.MinioUtil; import com.ai.da.mapper.TDesignPythonOutfitMapper; import com.ai.da.mapper.UserLikeGroupMapper; -import com.ai.da.mapper.entity.Account; import com.ai.da.mapper.entity.TDesignPythonOutfit; import com.ai.da.mapper.entity.UserLikeGroup; import com.ai.da.model.vo.*; @@ -20,7 +17,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import org.springframework.util.Assert; import javax.annotation.Resource; import java.util.Date; diff --git a/src/main/resources/messages_en.properties b/src/main/resources/messages_en.properties index cf9c42bf..6a5e7c86 100644 --- a/src/main/resources/messages_en.properties +++ b/src/main/resources/messages_en.properties @@ -72,6 +72,11 @@ save.sysFile.failed=Save sysFile failed! save.pythonTAllInfo.failed=Save pythonTAllInfo failed! save.collection.failed=Save collection failed! save.designItemDetail.failed=Save designItemDetail failed! +please.input.the.caption=Please input the caption! +please.choose.an.image=Please choose an image! +please.input.the.caption.and.choose.an.image=Please input the caption and choose an image! +duplicate.likes.are.not.allowed=Duplicate likes are not allowed! +layer.information.not.found=Layer information not found! # 前端传参校验 singleOverall.cannot.be.empty=singleOverall cannot be empty! colorBoards.cannot.be.empty=colorBoards cannot be empty! @@ -131,4 +136,10 @@ level1Type.cannot.be.empty=level1Type cannot be empty! regionNum.cannot.be.empty=regionNum cannot be empty! phone.cannot.be.empty=phone cannot be empty! printId.cannot.be.empty=printId cannot be empty! -path.cannot.be.empty=Path cannot be empty! \ No newline at end of file +path.cannot.be.empty=Path cannot be empty! +level2Type.cannot.be.empty=level2Type cannot be empty! +generateItem.does.not.exist=generateItem does not exist! +level1Type.does.not.match=level1Type does not match! +the.image.does.not.exist.please.reselect=the image does not exist, please reselect! +design.item.does.not.exist=design item does not exist! +layers.does.not.exists=layers does not exists! \ No newline at end of file From ffcbabf62e68c2695d0ceab4a4e8f74875e5fd80 Mon Sep 17 00:00:00 2001 From: xupei <1779019091@qq.com> Date: Fri, 3 Nov 2023 11:29:54 +0800 Subject: [PATCH 2/3] =?UTF-8?q?Generate=201=E3=80=81=E5=B0=86=E7=94=9F?= =?UTF-8?q?=E6=88=90=E5=9B=BE=E7=89=87=E7=9A=84md5=E5=AD=98=E5=82=A8?= =?UTF-8?q?=E5=88=B0=E6=95=B0=E6=8D=AE=E5=BA=93=202=E3=80=81=E8=AE=B0?= =?UTF-8?q?=E5=BD=95sketchboard=E4=B8=8B=EF=BC=8C=E7=94=9F=E6=88=90?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E6=97=B6=E7=9A=84=E6=80=A7=E5=88=AB=EF=BC=88?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=88=B0generateType=E4=B9=8B=E5=90=8E?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ai/da/common/enums/GenerateModeEnum.java | 8 +++++++ .../ai/da/mapper/GenerateDetailMapper.java | 10 +++++++++ .../da/model/vo/GenerateCollectionItemVO.java | 3 +++ .../da/service/impl/GenerateServiceImpl.java | 22 +++++++++++++++---- .../resources/mapper/GenerateDetailMapper.xml | 13 +++++++++++ src/main/resources/messages_en.properties | 3 ++- 6 files changed, 54 insertions(+), 5 deletions(-) create mode 100644 src/main/resources/mapper/GenerateDetailMapper.xml diff --git a/src/main/java/com/ai/da/common/enums/GenerateModeEnum.java b/src/main/java/com/ai/da/common/enums/GenerateModeEnum.java index bffcc79d..44409731 100644 --- a/src/main/java/com/ai/da/common/enums/GenerateModeEnum.java +++ b/src/main/java/com/ai/da/common/enums/GenerateModeEnum.java @@ -2,6 +2,10 @@ package com.ai.da.common.enums; import lombok.Getter; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + @Getter public enum GenerateModeEnum { @@ -27,4 +31,8 @@ public enum GenerateModeEnum { this.code = code; this.value = value; } + + public static List getGenerateModeList(){ + return Stream.of(TEXT,IMAGE,TEXT_IMAGE).map(GenerateModeEnum::getValue).collect(Collectors.toList()); + } } diff --git a/src/main/java/com/ai/da/mapper/GenerateDetailMapper.java b/src/main/java/com/ai/da/mapper/GenerateDetailMapper.java index 3b6cf30f..d4c0212d 100644 --- a/src/main/java/com/ai/da/mapper/GenerateDetailMapper.java +++ b/src/main/java/com/ai/da/mapper/GenerateDetailMapper.java @@ -3,5 +3,15 @@ package com.ai.da.mapper; import com.ai.da.common.config.mybatis.plus.CommonMapper; import com.ai.da.mapper.entity.GenerateDetail; +import java.util.List; +import java.util.Map; + public interface GenerateDetailMapper extends CommonMapper { + /** + * 查找相同MD5相同level1Type 被like过的图片的libraryId + * @param md5 图片的MD5值 + * @param level1Type levelType + * @return libraryId + */ + List> getLibraryIdThroughMD5(String md5, String level1Type); } diff --git a/src/main/java/com/ai/da/model/vo/GenerateCollectionItemVO.java b/src/main/java/com/ai/da/model/vo/GenerateCollectionItemVO.java index 7079f6cb..eb979c35 100644 --- a/src/main/java/com/ai/da/model/vo/GenerateCollectionItemVO.java +++ b/src/main/java/com/ai/da/model/vo/GenerateCollectionItemVO.java @@ -13,4 +13,7 @@ public class GenerateCollectionItemVO { @ApiModelProperty("generate生成图片的url") private String generateItemUrl; + + @ApiModelProperty("生成的图片是否已经被like") + private Boolean isLiked = Boolean.FALSE; } 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 8acdbb48..91858690 100644 --- a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java @@ -69,13 +69,17 @@ public class GenerateServiceImpl extends ServiceImpl i // 1、获取用户信息 AuthPrincipalVo userHolder = UserContext.getUserHolder(); Long accountId = userHolder.getId(); + if (!GenerateModeEnum.getGenerateModeList().contains(generateThroughImageTextDTO.getGenerateType())){ + throw new BusinessException("unknown.generate.type"); + } // 2、判断必须入参是否为非空 Generate generate = new Generate(); generate.setAccountId(accountId); generate.setLevel1Type(generateThroughImageTextDTO.getLevel1Type()); + // 当level1type是sketchboard时,存数据库需要加上当前性别 generate.setGenerateType(generate.getLevel1Type().equals(SKETCH_BOARD.getRealName()) ? - generateThroughImageTextDTO.getGender() + "_" + generateThroughImageTextDTO.getGenerateType() : + generateThroughImageTextDTO.getGenerateType() + " (" +generateThroughImageTextDTO.getGender() + ")": generateThroughImageTextDTO.getGenerateType()); generate.setModelName(StringUtil.isNullOrEmpty(generateThroughImageTextDTO.getVersion()) ? ModelNameEnum.MODEL_0.getCode() : generateThroughImageTextDTO.getVersion()); generate.setCreateDate(DateUtil.getByTimeZone(generateThroughImageTextDTO.getTimeZone())); @@ -93,7 +97,9 @@ public class GenerateServiceImpl extends ServiceImpl i save(generate); // 4、向模型发起请求 - int mode = GenerateModeEnum.TEXT.getValue().equals(generate.getGenerateType()) ? GenerateModeEnum.TEXT.getCode() : GenerateModeEnum.TEXT_IMAGE.getCode(); + int mode = GenerateModeEnum.TEXT.getValue().equals(generateThroughImageTextDTO.getGenerateType()) ? + GenerateModeEnum.TEXT.getCode() : + GenerateModeEnum.TEXT_IMAGE.getCode(); String category = generateThroughImageTextDTO.getLevel1Type().equals(SKETCH_BOARD.getRealName()) ? "sketch" : generateThroughImageTextDTO.getLevel1Type().equals(PRINT_BOARD.getRealName()) ? "print" : "moodboard"; List generatedSketchUrl = pythonService.generateSketchOrPrint(accountId, Objects.isNull(elementId) ? null : collectionElement.getUrl(), @@ -106,13 +112,21 @@ public class GenerateServiceImpl extends ServiceImpl i List generatedCollectionItems = new ArrayList<>(); generatedSketchUrl.forEach(item -> { GenerateDetail generateDetail = new GenerateDetail(); + GenerateCollectionItemVO generateCollectionItemVO = new GenerateCollectionItemVO(); + String md5 = MD5Utils.encryptFile(minioUtil.getPresignedUrl(item, 24 * 60), Boolean.FALSE); + // 通过MD5值和level1Type,判断不同level1Type下相同的图片是否被like过 + List> libraryIdList = generateDetailMapper.getLibraryIdThroughMD5(md5, generateThroughImageTextDTO.getLevel1Type()); + if (!libraryIdList.isEmpty()){ + generateDetail.setIsLike((byte) 1); + generateDetail.setLibraryId(libraryIdList.get(0).get("library_id")); + generateCollectionItemVO.setIsLiked(Boolean.TRUE); + } generateDetail.setUrl(item); generateDetail.setGenerateId(generate.getId()); generateDetail.setCreateDate(DateUtil.getByTimeZone(generateThroughImageTextDTO.getTimeZone())); - generateDetail.setMd5(MD5Utils.encryptFile(minioUtil.getPresignedUrl(item, 24 * 60), Boolean.FALSE)); + generateDetail.setMd5(md5); generateDetailMapper.insert(generateDetail); - GenerateCollectionItemVO generateCollectionItemVO = new GenerateCollectionItemVO(); generateCollectionItemVO.setGenerateItemId(generateDetail.getId()); generateCollectionItemVO.setGenerateItemUrl(minioUtil.getPresignedUrl(item, 24 * 60)); generatedCollectionItems.add(generateCollectionItemVO); diff --git a/src/main/resources/mapper/GenerateDetailMapper.xml b/src/main/resources/mapper/GenerateDetailMapper.xml new file mode 100644 index 00000000..3dd87411 --- /dev/null +++ b/src/main/resources/mapper/GenerateDetailMapper.xml @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/src/main/resources/messages_en.properties b/src/main/resources/messages_en.properties index 6a5e7c86..3b67564c 100644 --- a/src/main/resources/messages_en.properties +++ b/src/main/resources/messages_en.properties @@ -142,4 +142,5 @@ generateItem.does.not.exist=generateItem does not exist! level1Type.does.not.match=level1Type does not match! the.image.does.not.exist.please.reselect=the image does not exist, please reselect! design.item.does.not.exist=design item does not exist! -layers.does.not.exists=layers does not exists! \ No newline at end of file +layers.does.not.exists=layers does not exists! +unknown.generate.type=unknown generate type! \ No newline at end of file From 331490c4475d39199c7418106af08d03d8220def Mon Sep 17 00:00:00 2001 From: xupei <1779019091@qq.com> Date: Fri, 3 Nov 2023 13:59:16 +0800 Subject: [PATCH 3/3] BUGFIX:generateType --- .../model/dto/GenerateThroughImageTextDTO.java | 1 + .../ai/da/service/impl/GenerateServiceImpl.java | 17 ++++++++--------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/ai/da/model/dto/GenerateThroughImageTextDTO.java b/src/main/java/com/ai/da/model/dto/GenerateThroughImageTextDTO.java index 1ed89a2e..ca12d04a 100644 --- a/src/main/java/com/ai/da/model/dto/GenerateThroughImageTextDTO.java +++ b/src/main/java/com/ai/da/model/dto/GenerateThroughImageTextDTO.java @@ -20,6 +20,7 @@ public class GenerateThroughImageTextDTO { @ApiModelProperty("text image text-image") String generateType; + /** 暂时没有用上 */ @ApiModelProperty("图片是update,还是从library中选择") String designType; 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 91858690..6108aa2c 100644 --- a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java @@ -68,8 +68,9 @@ public class GenerateServiceImpl extends ServiceImpl i public GenerateCollectionVO generateThroughImageText(GenerateThroughImageTextDTO generateThroughImageTextDTO) { // 1、获取用户信息 AuthPrincipalVo userHolder = UserContext.getUserHolder(); + String generateType = generateThroughImageTextDTO.getGenerateType(); Long accountId = userHolder.getId(); - if (!GenerateModeEnum.getGenerateModeList().contains(generateThroughImageTextDTO.getGenerateType())){ + if (!GenerateModeEnum.getGenerateModeList().contains(generateType)){ throw new BusinessException("unknown.generate.type"); } @@ -79,15 +80,15 @@ public class GenerateServiceImpl extends ServiceImpl i generate.setLevel1Type(generateThroughImageTextDTO.getLevel1Type()); // 当level1type是sketchboard时,存数据库需要加上当前性别 generate.setGenerateType(generate.getLevel1Type().equals(SKETCH_BOARD.getRealName()) ? - generateThroughImageTextDTO.getGenerateType() + " (" +generateThroughImageTextDTO.getGender() + ")": - generateThroughImageTextDTO.getGenerateType()); + generateType + " (" +generateThroughImageTextDTO.getGender() + ")": + generateType); generate.setModelName(StringUtil.isNullOrEmpty(generateThroughImageTextDTO.getVersion()) ? ModelNameEnum.MODEL_0.getCode() : generateThroughImageTextDTO.getVersion()); generate.setCreateDate(DateUtil.getByTimeZone(generateThroughImageTextDTO.getTimeZone())); String text = generateThroughImageTextDTO.getText(); Long elementId = generateThroughImageTextDTO.getCollectionElementId(); - validateGeneraType(generate, text, elementId); + validateGeneraType(generate, text, elementId,generateType); // 3、将请求信息落库 // 3.1 sketch或print在t_collection_element表中的信息是否需要更新 如 level2Type @@ -97,7 +98,7 @@ public class GenerateServiceImpl extends ServiceImpl i save(generate); // 4、向模型发起请求 - int mode = GenerateModeEnum.TEXT.getValue().equals(generateThroughImageTextDTO.getGenerateType()) ? + int mode = GenerateModeEnum.TEXT.getValue().equals(generateType) ? GenerateModeEnum.TEXT.getCode() : GenerateModeEnum.TEXT_IMAGE.getCode(); String category = generateThroughImageTextDTO.getLevel1Type().equals(SKETCH_BOARD.getRealName()) ? "sketch" : @@ -105,8 +106,6 @@ public class GenerateServiceImpl extends ServiceImpl i List generatedSketchUrl = pythonService.generateSketchOrPrint(accountId, Objects.isNull(elementId) ? null : collectionElement.getUrl(), category, text, mode, generateThroughImageTextDTO.getVersion(), generateThroughImageTextDTO.getGender()); -// List generatedSketchUrl = Arrays.asList("testUrl1","testUrl2","testUrl3","testUrl4"); - // 5、处理模型返回的数据 // 5.1 将相应的url保存到数据库 List generatedCollectionItems = new ArrayList<>(); @@ -137,8 +136,8 @@ public class GenerateServiceImpl extends ServiceImpl i return new GenerateCollectionVO(generate.getId(), collectionId, generatedCollectionItems); } - private void validateGeneraType(Generate generate, String text, Long elementId) { - switch (generate.getGenerateType()) { + private void validateGeneraType(Generate generate, String text, Long elementId,String generateType) { + switch (generateType) { case "text": if (StringUtil.isNullOrEmpty(text)){ throw new BusinessException("please.input.the.caption");