From 5b3a52152ab5f2e43223453dbd887495ca34aaa5 Mon Sep 17 00:00:00 2001 From: xupei Date: Wed, 16 Jul 2025 19:14:41 +0800 Subject: [PATCH] =?UTF-8?q?TASK:=20ToProduct=20Relight=20Pose=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E5=88=A0=E9=99=A4=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ai/da/controller/GenerateController.java | 11 ++++ .../controller/SavedCollectionController.java | 16 ++++++ .../primary/entity/PoseTransformation.java | 2 + .../primary/entity/ToProductImageResult.java | 5 ++ .../com/ai/da/service/GenerateService.java | 2 + .../ai/da/service/UserLikeGroupService.java | 2 + .../da/service/impl/GenerateServiceImpl.java | 52 +++++++++++++++---- .../impl/UserLikeGroupServiceImpl.java | 32 ++++++++++++ 8 files changed, 112 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/ai/da/controller/GenerateController.java b/src/main/java/com/ai/da/controller/GenerateController.java index 2db4ef8b..683bbc21 100644 --- a/src/main/java/com/ai/da/controller/GenerateController.java +++ b/src/main/java/com/ai/da/controller/GenerateController.java @@ -146,6 +146,17 @@ public class GenerateController { return Response.success(generateService.getAllPose()); } + @ApiOperation(value = "删除pose transfer的结果") + @GetMapping("/deleteResult") + public Response deleteToProductRelightResult(@RequestParam("projectId") Long projectId, @RequestParam("id") Long id){ + try{ + generateService.deleteGeneratedPose(projectId, id); + return Response.success(); + }catch (Exception e){ + return Response.fail(e.getMessage()); + } + } + /*@ApiOperation(value = "万象 t2i 创建异步任务") @GetMapping("/createAsyncTask") public Response createAsyncTask(@RequestParam("prompt") String prompt){ diff --git a/src/main/java/com/ai/da/controller/SavedCollectionController.java b/src/main/java/com/ai/da/controller/SavedCollectionController.java index 530acb21..651395a7 100644 --- a/src/main/java/com/ai/da/controller/SavedCollectionController.java +++ b/src/main/java/com/ai/da/controller/SavedCollectionController.java @@ -23,11 +23,13 @@ import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.validation.Valid; +import javax.validation.constraints.Pattern; import java.io.IOException; import java.util.*; import java.util.stream.Collectors; @@ -36,6 +38,7 @@ import java.util.stream.Collectors; @Api(tags = "History模块(saved Collection)") @Slf4j @RestController +@Validated @RequestMapping("/api/history") public class SavedCollectionController { @Resource @@ -260,6 +263,19 @@ public class SavedCollectionController { return Response.success(magicToolResultVOList); } + @ApiOperation(value = "删除toProduct Relight的结果") + @GetMapping("/deleteResult") + public Response deleteResult(@RequestParam("id") Long id, + @RequestParam("projectId") Long projectId, + @RequestParam("type") @Pattern(regexp = "^(Relight|ToProductImage)$", message = "Please choose type from 'Relight|ToProductImage'") String type){ + try{ + userLikeGroupService.deleteToProductRelightResult(id, projectId, type); + return Response.success(); + }catch (Exception e){ + return Response.fail(e.getMessage()); + } + } + @ApiOperation(value = "likeHistoryRelSketch") @PostMapping("/likeHistoryRelSketch") public Response likeHistoryRelSketch() { 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 28b56eaf..6fe2377a 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 @@ -1,5 +1,6 @@ package com.ai.da.mapper.primary.entity; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; @@ -29,6 +30,7 @@ public class PoseTransformation extends BaseEntity { private byte isLiked; + @TableField("is_deleted") private byte isDeleted; private String modelName; diff --git a/src/main/java/com/ai/da/mapper/primary/entity/ToProductImageResult.java b/src/main/java/com/ai/da/mapper/primary/entity/ToProductImageResult.java index 1031a386..796c677a 100644 --- a/src/main/java/com/ai/da/mapper/primary/entity/ToProductImageResult.java +++ b/src/main/java/com/ai/da/mapper/primary/entity/ToProductImageResult.java @@ -1,6 +1,7 @@ package com.ai.da.mapper.primary.entity; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -62,4 +63,8 @@ public class ToProductImageResult implements Serializable { private String modelName; private String taskStatus; + + @ApiModelProperty(value = "是否删除1:是 0:否") + @TableField + private byte isDeleted = 0; } diff --git a/src/main/java/com/ai/da/service/GenerateService.java b/src/main/java/com/ai/da/service/GenerateService.java index 8cea57ae..bdeb6452 100644 --- a/src/main/java/com/ai/da/service/GenerateService.java +++ b/src/main/java/com/ai/da/service/GenerateService.java @@ -75,6 +75,8 @@ public interface GenerateService extends IService { void processPoseTransformResultBatch(String taskId, String progress); + void deleteGeneratedPose(Long projectId, Long id); + String createAsyncTask(GenerateThroughImageTextDTO generateThroughImageTextDTO); GenerateResultVO getAsyncTaskResult(String taskId); diff --git a/src/main/java/com/ai/da/service/UserLikeGroupService.java b/src/main/java/com/ai/da/service/UserLikeGroupService.java index b054d1cd..4eb2a257 100644 --- a/src/main/java/com/ai/da/service/UserLikeGroupService.java +++ b/src/main/java/com/ai/da/service/UserLikeGroupService.java @@ -74,6 +74,8 @@ public interface UserLikeGroupService extends IService { List getRelightResult(List taskIdList); + void deleteToProductRelightResult(Long id, Long projectId, String type); + String likeHistoryRelSketch(); String download(); 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 c40ff11d..6c2619d3 100644 --- a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java @@ -29,6 +29,7 @@ import com.alibaba.dashscope.utils.JsonUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -1725,16 +1726,15 @@ public class GenerateServiceImpl extends ServiceImpl i String messageFromResource = BusinessException.getMessageFromResource(clothCategory.toUpperCase()); vo.setCategory(clothCategory); vo.setCategoryValue(messageFromResource); - - List collectionElements = collectionElementService.getByProjectId(projectId); - if (!collectionElements.isEmpty()){ - collectionElements.forEach(item -> { - item.setUrl(StringUtil.isNullOrEmpty(item.getUrl()) ? null : minioUtil.getPreSignedUrl(item.getUrl(), CommonConstant.MINIO_IMAGE_EXPIRE_TIME)); - }); - vo.setUploadImages(collectionElements); - }else { - vo.setUploadImages(new ArrayList<>()); - } + } + List collectionElements = collectionElementService.getByProjectId(projectId); + if (!collectionElements.isEmpty()){ + collectionElements.forEach(item -> { + item.setUrl(StringUtil.isNullOrEmpty(item.getUrl()) ? null : minioUtil.getPreSignedUrl(item.getUrl(), CommonConstant.MINIO_IMAGE_EXPIRE_TIME)); + }); + vo.setUploadImages(collectionElements); + }else { + vo.setUploadImages(new ArrayList<>()); } return vo; } @@ -1829,6 +1829,38 @@ public class GenerateServiceImpl extends ServiceImpl i } } + @Resource + private CollectionSortMapper collectionSortMapper; + + @Transactional(rollbackFor = Exception.class) + public void deleteGeneratedPose(Long projectId, Long id){ + Long accountId = UserContext.getUserHolder().getId(); + // 1、删除generate中的结果 + UpdateWrapper wrapper = new UpdateWrapper<>(); + wrapper.eq("id", id) + .set("is_deleted", 1) // 手动设置 + .set("update_time", LocalDateTime.now()); + int update = poseTransformationMapper.update(null, wrapper); + log.info("删除PoseTransfer 结果, id为{}, 影响行数={}", id, update); + if (update != 0) { + // 2、如果有排序,删除排序,排序后是否需要重置排序计数器以及后续排序数字 + // 先校验type的值是不是ToProductImage、Relight、PoseTransfer + if (id == null || projectId == null) { + throw new IllegalArgumentException("参数不能为null"); + } + Project project = projectService.getById(projectId); + if (!project.getAccountId().equals(accountId)){ + throw new IllegalArgumentException("项目id不属于当前账号,请仅对自己的账号数据进行处理"); + } + int deletedRows = collectionSortMapper.delete(new QueryWrapper() + .eq("project_id", projectId) + .eq("relation_id", id).eq("relation_type", "PoseTransfer")); + + log.info("deleteGeneratedPose 删除记录:id={}, type={}, 影响行数={}", id, "PoseTransfer", deletedRows); + } + } + + /** * 万象专业版 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 ac085ec0..2c5a9d3c 100644 --- a/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java @@ -1332,6 +1332,38 @@ public class UserLikeGroupServiceImpl extends ServiceImpl wrapper = new UpdateWrapper<>(); + wrapper.eq("id", id) + .eq("project_id", projectId) + .set("is_deleted", 1); // 手动设置 + int update = toProductImageResultMapper.update(null, wrapper); + log.info("删除{} 结果, id为{}, 影响行数={}", type, id, update); + + if (update != 0) { + // 2、如果有排序,删除排序,排序后是否需要重置排序计数器以及后续排序数字 + // 先校验type的值是不是ToProductImage、Relight、PoseTransfer + if (id == null || type == null || projectId == null) { + throw new IllegalArgumentException("参数不能为null"); + } + + int deletedRows = collectionSortMapper.delete(new QueryWrapper() + .eq("project_id", projectId) + .eq("relation_id", id).eq("relation_type", type)); + + log.info("deleteToProductRelightResult 删除记录:id={}, type={}, 影响行数={}", id, type, deletedRows); + } + } + @Override public String likeHistoryRelSketch() { QueryWrapper qw = new QueryWrapper<>();