diff --git a/src/main/java/com/ai/da/controller/GenerateController.java b/src/main/java/com/ai/da/controller/GenerateController.java index cb8723f0..e98c4465 100644 --- a/src/main/java/com/ai/da/controller/GenerateController.java +++ b/src/main/java/com/ai/da/controller/GenerateController.java @@ -110,6 +110,12 @@ public class GenerateController { return Response.success(generateResult); } + @ApiOperation("喜欢或取消喜欢姿势变换生成的图片") + @PostMapping("/likeOrDislike") + public Response likeOrDislike(@ApiParam("id") @RequestParam Long transformedId, @ApiParam("like || dislike") @RequestParam String likeOrDislike) { + return Response.success(generateService.disOrLikePose(transformedId, likeOrDislike)); + } + @ApiOperation(value = "修改模特比例") @PostMapping("/modifyProportion") public Response modifyModelProportion(@Valid @RequestBody ModifyModelProportionDTO proportionDTO){ diff --git a/src/main/java/com/ai/da/mapper/primary/entity/PoseTransformation.java b/src/main/java/com/ai/da/mapper/primary/entity/PoseTransformation.java index 55c95939..62a7dfb4 100644 --- a/src/main/java/com/ai/da/mapper/primary/entity/PoseTransformation.java +++ b/src/main/java/com/ai/da/mapper/primary/entity/PoseTransformation.java @@ -23,7 +23,7 @@ public class PoseTransformation extends BaseEntity { private String videoUrl; // GIF第一帧截图 - private String imageUrl; + private String firstFrameUrl; private byte isLiked; diff --git a/src/main/java/com/ai/da/mapper/primary/entity/SketchReconstruction.java b/src/main/java/com/ai/da/mapper/primary/entity/SketchReconstruction.java index d4b124a1..49f8ec1e 100644 --- a/src/main/java/com/ai/da/mapper/primary/entity/SketchReconstruction.java +++ b/src/main/java/com/ai/da/mapper/primary/entity/SketchReconstruction.java @@ -15,4 +15,6 @@ public class SketchReconstruction extends BaseEntity{ private Long generateDetailId; + private String gender; + } diff --git a/src/main/java/com/ai/da/model/vo/ModuleChooseVO.java b/src/main/java/com/ai/da/model/vo/ModuleChooseVO.java index 071cf62b..3cf15c4a 100644 --- a/src/main/java/com/ai/da/model/vo/ModuleChooseVO.java +++ b/src/main/java/com/ai/da/model/vo/ModuleChooseVO.java @@ -30,7 +30,7 @@ public class ModuleChooseVO { private CavasModuleChooseVO canvas; private List boundingBox; -// private moodBoardModuleChooseVO poseTransfer; + private List poseTransfer; // private moodBoardModuleChooseVO patternMaking3D; private SketchReconstructionVO deReconstruction; } diff --git a/src/main/java/com/ai/da/model/vo/PoseTransformationVO.java b/src/main/java/com/ai/da/model/vo/PoseTransformationVO.java index fb7e57b5..e7349e32 100644 --- a/src/main/java/com/ai/da/model/vo/PoseTransformationVO.java +++ b/src/main/java/com/ai/da/model/vo/PoseTransformationVO.java @@ -13,13 +13,25 @@ public class PoseTransformationVO { private String taskId; + private String productImage; + private String gifUrl; private String videoUrl; // GIF第一帧截图 - private String imageUrl; + private String firstFrameUrl; private byte isLiked; private String status; + + public PoseTransformationVO(Long id, String taskId, String gifUrl, String videoUrl, String firstFrameUrl, byte isLiked, String status) { + this.id = id; + this.taskId = taskId; + this.gifUrl = gifUrl; + this.videoUrl = videoUrl; + this.firstFrameUrl = firstFrameUrl; + this.isLiked = isLiked; + this.status = status; + } } diff --git a/src/main/java/com/ai/da/model/vo/SketchReconstructionVO.java b/src/main/java/com/ai/da/model/vo/SketchReconstructionVO.java index 43c13acb..9493e05f 100644 --- a/src/main/java/com/ai/da/model/vo/SketchReconstructionVO.java +++ b/src/main/java/com/ai/da/model/vo/SketchReconstructionVO.java @@ -10,4 +10,8 @@ public class SketchReconstructionVO { private boolean isLiked; + private String category; + + private String categoryValue; + } diff --git a/src/main/java/com/ai/da/python/PythonService.java b/src/main/java/com/ai/da/python/PythonService.java index 3e050c7f..fb62429a 100644 --- a/src/main/java/com/ai/da/python/PythonService.java +++ b/src/main/java/com/ai/da/python/PythonService.java @@ -4074,7 +4074,7 @@ public class PythonService { } } - public String modifyModelProportion(String mannequinPath, Float scale, String name, int top, int bottom) { + public String modifyModelProportion(String mannequinPath, Float stretch, String name, int top, int bottom) { OkHttpClient client = new OkHttpClient().newBuilder() .connectTimeout(30, TimeUnit.SECONDS) .pingInterval(5, TimeUnit.SECONDS)//websocket轮训间隔(单位:秒) @@ -4087,7 +4087,7 @@ public class PythonService { // 模特的minio地址 content.put("mannequins", mannequinPath); // 缩放比 - content.put("scale", scale.toString()); + content.put("resize_pixel", stretch.toString()); // 结果存放桶名 content.put("bucket_name", "aida-users"); // 模特名uuid diff --git a/src/main/java/com/ai/da/service/GenerateService.java b/src/main/java/com/ai/da/service/GenerateService.java index 597a79d1..445a8eb7 100644 --- a/src/main/java/com/ai/da/service/GenerateService.java +++ b/src/main/java/com/ai/da/service/GenerateService.java @@ -52,6 +52,10 @@ public interface GenerateService extends IService { PoseTransformationVO getPoseTransformationResult(String taskId); + List getPoseTransformationResultList(Long projectId); + + Boolean disOrLikePose(Long transformedId, String likeOrDislike); + String modifyModelProportion(ModifyModelProportionDTO proportionDTO); GenerateResultVO sketchReconstructionGenerate(SketchReconstructionDTO sketchReconstructionDTO); 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 1766dc05..0969b9bb 100644 --- a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java @@ -14,8 +14,6 @@ import com.ai.da.model.vo.*; import com.ai.da.python.PythonService; import com.ai.da.service.*; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException; @@ -28,17 +26,14 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.io.IOException; -import java.io.InputStream; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.*; import static com.ai.da.common.enums.CollectionLevel1TypeEnum.*; -import static com.ai.da.service.impl.UserLikeGroupServiceImpl.convert; @Slf4j @Service @@ -988,7 +983,7 @@ public class GenerateServiceImpl extends ServiceImpl i poseTransformation = poseTransformations.get(0); poseTransformation.setGifUrl(gifUrl); poseTransformation.setVideoUrl(videoUrl); - poseTransformation.setImageUrl(imageUrl); + poseTransformation.setFirstFrameUrl(imageUrl); poseTransformation.setUpdateTime(LocalDateTime.now()); poseTransformationMapper.updateById(poseTransformation); @@ -1015,7 +1010,7 @@ public class GenerateServiceImpl extends ServiceImpl i if (poseTransformationVO.getStatus().equals("Success")){ poseTransformationVO.setGifUrl(minioUtil.getPreSignedUrl(poseTransformationVO.getGifUrl(), CommonConstant.MINIO_IMAGE_EXPIRE_TIME)); poseTransformationVO.setVideoUrl(minioUtil.getPreSignedUrl(poseTransformationVO.getVideoUrl(), CommonConstant.MINIO_IMAGE_EXPIRE_TIME)); - poseTransformationVO.setImageUrl(minioUtil.getPreSignedUrl(poseTransformationVO.getImageUrl(), CommonConstant.MINIO_IMAGE_EXPIRE_TIME)); + poseTransformationVO.setFirstFrameUrl(minioUtil.getPreSignedUrl(poseTransformationVO.getFirstFrameUrl(), CommonConstant.MINIO_IMAGE_EXPIRE_TIME)); } return poseTransformationVO; }else { @@ -1023,6 +1018,40 @@ public class GenerateServiceImpl extends ServiceImpl i } } + public List getPoseTransformationResultList(Long projectId){ + List poseTransformations = poseTransformationMapper.selectList(new QueryWrapper().eq("project_id", projectId).eq("is_liked", 1)); + List vos = new ArrayList<>(); + if (poseTransformations != null && poseTransformations.size() > 1){ + poseTransformations.forEach(item -> { + PoseTransformationVO poseTransformationVO = new PoseTransformationVO(); + poseTransformationVO.setId(item.getId()); + poseTransformationVO.setProductImage(minioUtil.getPreSignedUrl(item.getProductImage(), CommonConstant.MINIO_IMAGE_EXPIRE_TIME)); + poseTransformationVO.setGifUrl(minioUtil.getPreSignedUrl(item.getGifUrl(), CommonConstant.MINIO_IMAGE_EXPIRE_TIME)); + poseTransformationVO.setVideoUrl(minioUtil.getPreSignedUrl(item.getVideoUrl(), CommonConstant.MINIO_IMAGE_EXPIRE_TIME)); + poseTransformationVO.setFirstFrameUrl(minioUtil.getPreSignedUrl(item.getFirstFrameUrl(), CommonConstant.MINIO_IMAGE_EXPIRE_TIME)); + poseTransformationVO.setIsLiked(item.getIsLiked()); + vos.add(poseTransformationVO); + }); + } + return vos; + } + + public Boolean disOrLikePose(Long transformedId, String likeOrDislike){ + PoseTransformation poseTransformation = poseTransformationMapper.selectById(transformedId); + if (Objects.nonNull(poseTransformation)){ + if (likeOrDislike.equals("like")){ + poseTransformation.setIsLiked((byte)1); + }else if (likeOrDislike.equals("dislike")){ + poseTransformation.setIsLiked((byte)0); + } + poseTransformation.setUpdateTime(LocalDateTime.now()); + poseTransformationMapper.updateById(poseTransformation); + }else { + return false; + } + return true; + } + @Resource private SysFileService sysFileService; @@ -1112,6 +1141,7 @@ public class GenerateServiceImpl extends ServiceImpl i sketchReconstruction.setProjectId(projectId); sketchReconstruction.setCollageImgSketchUrl(targetPath); sketchReconstruction.setGenerateDetailId(generateResultVO.getId()); + sketchReconstruction.setGender(sketchReconstructionDTO.getGender()); sketchReconstruction.setCreateTime(LocalDateTime.now()); sketchReconstructionMapper.insert(sketchReconstruction); }else { @@ -1136,6 +1166,10 @@ public class GenerateServiceImpl extends ServiceImpl i GenerateDetail generateDetail = generateDetailMapper.selectById(sketchReconstruction.getGenerateDetailId()); vo.setCollageSketchUrl(minioUtil.getPreSignedUrl(generateDetail.getUrl(), CommonConstant.MINIO_IMAGE_EXPIRE_TIME)); vo.setLiked(generateDetail.getIsLike().equals((byte)1)); + String clothCategory = pythonService.getClothCategory(generateDetail.getUrl(), sketchReconstruction.getGender()); + String messageFromResource = BusinessException.getMessageFromResource(clothCategory.toUpperCase()); + vo.setCategory(clothCategory); + vo.setCategoryValue(messageFromResource); } return vo; } 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 a699b692..0dbcdabf 100644 --- a/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java @@ -1573,6 +1573,9 @@ public class UserLikeGroupServiceImpl extends ServiceImpl poseTransformationResultList = generateService.getPoseTransformationResultList(projectDTO.getId()); + moduleChooseVO.setPoseTransfer(poseTransformationResultList); } } return moduleChooseVO;