diff --git a/src/main/java/com/ai/da/controller/GenerateController.java b/src/main/java/com/ai/da/controller/GenerateController.java index e2d4e6f4..0e4958df 100644 --- a/src/main/java/com/ai/da/controller/GenerateController.java +++ b/src/main/java/com/ai/da/controller/GenerateController.java @@ -2,6 +2,7 @@ package com.ai.da.controller; import com.ai.da.common.enums.CreditsEventsEnum; import com.ai.da.common.response.Response; +import com.ai.da.mapper.primary.entity.CollectionSort; import com.ai.da.model.dto.*; import com.ai.da.model.vo.*; import com.ai.da.service.GenerateService; @@ -101,7 +102,7 @@ public class GenerateController { @ApiOperation(value = "请求进行姿势变换") @PostMapping("/poseTransform") - public Response poseTransform(@Valid @RequestBody PoseTransformDTO poseTransformDTO) { + public Response poseTransform(@Valid @RequestBody PoseTransformDTO poseTransformDTO) { return Response.success(generateService.poseTransform(poseTransformDTO)); } @@ -115,7 +116,12 @@ public class GenerateController { @ApiOperation("喜欢或取消喜欢姿势变换生成的图片") @PostMapping("/likeOrDislike") public Response likeOrDislike(@ApiParam("id") @RequestParam Long transformedId, @ApiParam("like || dislike") @RequestParam String likeOrDislike, @RequestParam("projectId") Long projectId, @RequestParam(value = "collectionSortParentId", required = false) Long collectionSortParentId) { - return Response.success(generateService.disOrLikePose(transformedId, likeOrDislike, projectId, collectionSortParentId)); + Object obj = generateService.disOrLikePose(transformedId, likeOrDislike, projectId, collectionSortParentId); + if (obj instanceof CollectionSort){ + return Response.success(((CollectionSort) obj).getId()); + }else { + return Response.success(obj); + } } @ApiOperation(value = "修改模特比例") diff --git a/src/main/java/com/ai/da/controller/SavedCollectionController.java b/src/main/java/com/ai/da/controller/SavedCollectionController.java index 95d22dfb..8573ccd8 100644 --- a/src/main/java/com/ai/da/controller/SavedCollectionController.java +++ b/src/main/java/com/ai/da/controller/SavedCollectionController.java @@ -187,7 +187,7 @@ public class SavedCollectionController { @ApiOperation(value = "toProduct") @PostMapping("/toProduct") - public Response> toProduct(@Valid @RequestBody ToProductImageDTO toProductImageDTO) { + public Response> toProduct(@Valid @RequestBody ToProductImageDTO toProductImageDTO) { return Response.success(userLikeGroupService.toProduct(toProductImageDTO)); } @@ -206,7 +206,8 @@ public class SavedCollectionController { @ApiOperation(value = "productImageLike") @PostMapping("/productImageLike") public Response productImageLike(@Valid @RequestBody ProductImageLikeDTO productImageLikeDTO) { - return Response.success(userLikeGroupService.productImageLike(productImageLikeDTO)); + CollectionSort collectionSort = userLikeGroupService.productImageLike(productImageLikeDTO); + return Response.success(Objects.nonNull(collectionSort) ? collectionSort.getId() : null); } @ApiOperation(value = "collectionLikeUpdate") @@ -242,7 +243,7 @@ public class SavedCollectionController { @ApiOperation(value = "relight") @PostMapping("/relight") - public Response> relight(@Valid @RequestBody ToProductImageDTO toProductImageDTO) { + public Response> relight(@Valid @RequestBody ToProductImageDTO toProductImageDTO) { return Response.success(userLikeGroupService.relight(toProductImageDTO)); } diff --git a/src/main/java/com/ai/da/mapper/primary/CollectionSortMapper.java b/src/main/java/com/ai/da/mapper/primary/CollectionSortMapper.java index d4f1a819..a9b6fde9 100644 --- a/src/main/java/com/ai/da/mapper/primary/CollectionSortMapper.java +++ b/src/main/java/com/ai/da/mapper/primary/CollectionSortMapper.java @@ -3,25 +3,14 @@ package com.ai.da.mapper.primary; import com.ai.da.common.config.mybatis.plus.CommonMapper; import com.ai.da.mapper.primary.entity.CollectionSort; import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; public interface CollectionSortMapper extends CommonMapper { - @Update("UPDATE collection_sort SET sort = sort + 1 " + - "WHERE project_id = #{projectId} " + - "AND relation_type = #{relationType} " + - "AND sort < #{originalSort}") - void increaseDesignSortBelow( - @Param("projectId") Long projectId, - @Param("relationType") String relationType, - @Param("originalSort") int originalSort - ); - @Update("UPDATE collection_sort SET sort = sort + 1 " + "WHERE parent_id = #{parentId} " + "AND relation_type != 'Design' " + - "AND sort < #{originalSort}") - void increaseGenerateSortBelow( + "AND sort > #{originalSort}") + void increaseGenerateSortAbove( @Param("parentId") Long parentId, @Param("relationType") String relationType, @Param("originalSort") int originalSort diff --git a/src/main/java/com/ai/da/mapper/primary/entity/CollectionSort.java b/src/main/java/com/ai/da/mapper/primary/entity/CollectionSort.java index b5d9a392..75cf47fe 100644 --- a/src/main/java/com/ai/da/mapper/primary/entity/CollectionSort.java +++ b/src/main/java/com/ai/da/mapper/primary/entity/CollectionSort.java @@ -18,6 +18,7 @@ public class CollectionSort extends BaseEntity implements Serializable { private Long userLikeGroupId; private Long userLikeId; + // 页面排序采用倒序,最新的元素序号最大 private Integer sort; private Long projectId; private Long relationId; diff --git a/src/main/java/com/ai/da/model/dto/PoseTransformDTO.java b/src/main/java/com/ai/da/model/dto/PoseTransformDTO.java index d48ecd06..22367894 100644 --- a/src/main/java/com/ai/da/model/dto/PoseTransformDTO.java +++ b/src/main/java/com/ai/da/model/dto/PoseTransformDTO.java @@ -23,4 +23,6 @@ public class PoseTransformDTO { private String modelName; private Long parentId; + + private Long userLikeSortId; } diff --git a/src/main/java/com/ai/da/model/vo/ToProductImageVO.java b/src/main/java/com/ai/da/model/vo/ToProductImageVO.java index a3a32754..baadca86 100644 --- a/src/main/java/com/ai/da/model/vo/ToProductImageVO.java +++ b/src/main/java/com/ai/da/model/vo/ToProductImageVO.java @@ -8,5 +8,7 @@ import lombok.Data; public class ToProductImageVO extends ToProductImageResult { @ApiModelProperty("collection sort中的parentId, 在这里是父级的userLikeSortId") private Long parentId; + @ApiModelProperty("collection sort中的id, 在这里是用的子集里元素的userLikeSortId") + private Long userLikeSortId; } diff --git a/src/main/java/com/ai/da/service/GenerateService.java b/src/main/java/com/ai/da/service/GenerateService.java index 5ae76366..64781993 100644 --- a/src/main/java/com/ai/da/service/GenerateService.java +++ b/src/main/java/com/ai/da/service/GenerateService.java @@ -49,7 +49,7 @@ public interface GenerateService extends IService { GenerateResultVO modifySketch(GenerateModifyDTO generateModifyDTO); - String poseTransform(PoseTransformDTO poseTransformDTO); + ToProductImageResultVO poseTransform(PoseTransformDTO poseTransformDTO); void processPoseTransformResult(String taskId, String gifUrl, String videoUrl, String imageUrl); diff --git a/src/main/java/com/ai/da/service/UserLikeGroupService.java b/src/main/java/com/ai/da/service/UserLikeGroupService.java index 19b49b04..3fa00e04 100644 --- a/src/main/java/com/ai/da/service/UserLikeGroupService.java +++ b/src/main/java/com/ai/da/service/UserLikeGroupService.java @@ -46,15 +46,15 @@ public interface UserLikeGroupService extends IService { Boolean exportSave(MultipartFile file, Long projectId, String module); - List toProduct(ToProductImageDTO toProductImageDTO); + List toProduct(ToProductImageDTO toProductImageDTO); - void reArrangeSort(Long projectId, Long generateResultId, String relationType, Long parentId); + Integer rearrangeChildSort(Long childId, String relationType, Long parentId, Long userLikeSortId); void toProduct(String taskId); ToProductElementVO toProductImageElementUpload(MultipartFile file, Long projectId); - Long productImageLike(ProductImageLikeDTO productImageLikeDTO); + CollectionSort productImageLike(ProductImageLikeDTO productImageLikeDTO); List getToProductImageResultList(List taskIdList); @@ -68,7 +68,7 @@ public interface UserLikeGroupService extends IService { void relight(String taskId); - List relight(ToProductImageDTO toProductImageDTO); + List relight(ToProductImageDTO toProductImageDTO); List getRelightResult(List taskIdList); 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 c4dab989..8c9e4fab 100644 --- a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java @@ -1127,7 +1127,7 @@ public class GenerateServiceImpl extends ServiceImpl i @Resource private UserLikeGroupService userLikeGroupService; - public String poseTransform(PoseTransformDTO poseTransformDTO){ + public ToProductImageResultVO poseTransform(PoseTransformDTO poseTransformDTO){ Long accountId = UserContext.getUserHolder().getId(); Long projectId = poseTransformDTO.getProjectId(); String productImage = poseTransformDTO.getProductImage(); @@ -1164,25 +1164,33 @@ public class GenerateServiceImpl extends ServiceImpl i poseTransformation.setCreateTime(LocalDateTime.now()); poseTransformationMapper.insert(poseTransformation); // 满足条件下添加到like - addPoseTransferLike(poseTransformDTO, poseTransformation.getId()); - userLikeGroupService.reArrangeSort(projectId, poseTransformation.getId(), CollectionType.POSE_TRANSFORM.getValue(), poseTransformDTO.getParentId()); + Integer sort = addPoseTransferLike(poseTransformDTO, poseTransformation.getId()); + Integer reSort = userLikeGroupService.rearrangeChildSort(poseTransformation.getId(), CollectionType.POSE_TRANSFORM.getValue(), + poseTransformDTO.getParentId(), poseTransformDTO.getUserLikeSortId()); if (flag){ // 6、添加预扣除积分到redis creditsService.addRecordToCreditsDeduction(accountId, taskId, creditsEventsEnum); // 6.1 添加积分扣除记录到db creditsService.preInsert(accountId, creditsEventsEnum.getName(), taskId, Boolean.TRUE, null); - return taskId; + ToProductImageResultVO toProductImageResultVO = new ToProductImageResultVO(); + toProductImageResultVO.setTaskId(taskId); + toProductImageResultVO.setSort(Objects.isNull(reSort) ? sort : reSort); + return toProductImageResultVO; } throw new BusinessException("pose transformation error", ResultEnum.ERROR.getCode()); } - private void addPoseTransferLike(PoseTransformDTO poseTransformDTO, Long poseTransformationId){ + private Integer addPoseTransferLike(PoseTransformDTO poseTransformDTO, Long poseTransformationId){ if (Objects.nonNull(poseTransformDTO.getParentId()) && !poseTransformDTO.getParentId().equals(0L)){ - disOrLikePose(poseTransformationId, "like", + Object object = disOrLikePose(poseTransformationId, "like", poseTransformDTO.getProjectId(), poseTransformDTO.getParentId()); + if (object instanceof CollectionSort){ + return ((CollectionSort) object).getSort(); + } } + return null; } @Resource @@ -1324,13 +1332,12 @@ public class GenerateServiceImpl extends ServiceImpl i public Object disOrLikePose(Long transformedId, String likeOrDislike, Long projectId, Long collectionSortParentId){ PoseTransformation poseTransformation = poseTransformationMapper.selectById(transformedId); - Long collectionSortId = null; + CollectionSort collectionSort = null; if (Objects.nonNull(poseTransformation)){ if (likeOrDislike.equals("like")){ poseTransformation.setIsLiked((byte)1); if (null != collectionSortParentId) { - CollectionSort collectionSort = designService.addCollectionSort(poseTransformation.getId(), CollectionType.POSE_TRANSFORM.getValue(), projectId, collectionSortParentId); - collectionSortId = collectionSort.getId(); + collectionSort = designService.addCollectionSort(poseTransformation.getId(), CollectionType.POSE_TRANSFORM.getValue(), projectId, collectionSortParentId); } }else if (likeOrDislike.equals("dislike")){ poseTransformation.setIsLiked((byte)0); @@ -1343,8 +1350,8 @@ public class GenerateServiceImpl extends ServiceImpl i }else { return false; } - if (null != collectionSortId) { - return collectionSortId; + if (Objects.nonNull(collectionSort)) { + return collectionSort; } return true; } 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 4136223c..bac9b023 100644 --- a/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java @@ -373,7 +373,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl toProduct(ToProductImageDTO toProductImageDTO) { + public List toProduct(ToProductImageDTO toProductImageDTO) { // 判断用户当前积分是否够本次生成消耗 boolean fluxTask = !StringUtil.isNullOrEmpty(toProductImageDTO.getModelName()) && toProductImageDTO.getModelName().equals("flux"); @@ -412,7 +412,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl result = new ArrayList<>(); + List result = new ArrayList<>(); boolean childFlag = !StringUtil.isNullOrEmpty(toProductImageDTO.getAgeGroup()) && toProductImageDTO.getAgeGroup().equals("Child"); int i = 0; @@ -456,7 +456,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl().eq("relation_id", childId)); - if (child == null || !child.getRelationType().equals(relationType)) { - return; + if (!child.getRelationType().equals(relationType)) { + return null; } - if (child.getSort() == 1) { - return; // 已经是第一位,无需处理 - } - // 更新其他子集的排序 - if (!"Design".equals(relationType)) { - collectionSortMapper.increaseGenerateSortBelow(parentId, relationType, child.getSort()); - } - // 更新当前子集为第一位 - child.setSort(1); + CollectionSort collectionSort = collectionSortMapper.selectById(userLikeSortId); + child.setSort(collectionSort.getSort()); + // 原来排序的大于等于userLikeSortId的排序的,都要+1 + collectionSortMapper.increaseGenerateSortAbove(parentId, relationType, collectionSort.getSort() - 1); + // 当前的生成结果则填入userLikeSortId的排序位置 child.setUpdateTime(LocalDateTime.now()); collectionSortMapper.updateById(child); - } - - private void rearrangeParentSort(Long projectId, Long parentId) { - CollectionSort parent = collectionSortMapper.selectById(parentId); - if (parent == null || !"Design".equals(parent.getRelationType())) { - return; - } - if (parent.getSort() == 1) { - return; // 已经是第一位,无需处理 - } - // 更新其他父级的排序 - collectionSortMapper.increaseDesignSortBelow(projectId, "Design", parent.getSort()); - // 更新当前父级为第一位 - parent.setSort(1); - parent.setUpdateTime(LocalDateTime.now()); - collectionSortMapper.updateById(parent); + return collectionSort.getSort(); } @Override @@ -690,7 +678,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl toProductImageResultId = productImageLikeDTO.getToProductImageResultId(); QueryWrapper qw = new QueryWrapper<>(); qw.lambda().in(ToProductImageResult::getId, toProductImageResultId); @@ -698,19 +686,17 @@ public class UserLikeGroupServiceImpl extends ServiceImpl relight(ToProductImageDTO toProductImageDTO) { + public List relight(ToProductImageDTO toProductImageDTO) { // 判断用户当前积分是否够本次生成消耗 boolean fluxTask = !StringUtil.isNullOrEmpty(toProductImageDTO.getModelName()) && toProductImageDTO.getModelName().equals("flux"); @@ -1089,7 +1075,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl result = new ArrayList<>(); + List result = new ArrayList<>(); int i = 0; @@ -1108,7 +1094,7 @@ public class UserLikeGroupServiceImpl extends ServiceImpl