From 5ea8e851d780daf72e7d1eefe2937ef5b026993f Mon Sep 17 00:00:00 2001
From: shahaibo <1023316923@qq.com>
Date: Mon, 6 Jan 2025 10:46:51 +0800
Subject: [PATCH] TASK:AiDA design like sort
---
pom.xml | 8 ++-
.../ai/da/controller/DesignController.java | 6 ++
.../da/mapper/primary/UserLikeSortMapper.java | 7 ++
.../mapper/primary/entity/UserLikeSort.java | 24 +++++++
.../com/ai/da/model/dto/UserLikeSortDTO.java | 13 ++++
.../java/com/ai/da/model/vo/DesignLikeVO.java | 2 +
.../java/com/ai/da/model/vo/UserLikeVO.java | 2 +
.../java/com/ai/da/python/PythonService.java | 31 +++++++--
.../java/com/ai/da/service/DesignService.java | 2 +
.../ai/da/service/impl/DesignServiceImpl.java | 66 +++++++++++++++++--
.../impl/UserLikeGroupServiceImpl.java | 9 +++
11 files changed, 159 insertions(+), 11 deletions(-)
create mode 100644 src/main/java/com/ai/da/mapper/primary/UserLikeSortMapper.java
create mode 100644 src/main/java/com/ai/da/mapper/primary/entity/UserLikeSort.java
create mode 100644 src/main/java/com/ai/da/model/dto/UserLikeSortDTO.java
diff --git a/pom.xml b/pom.xml
index ff9df865..db7bdb0b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -151,9 +151,15 @@
3.0.3
+
+
+
+
+
+
com.tencentcloudapi
- tencentcloud-sdk-java-ses
+ tencentcloud-sdk-java
3.1.572
diff --git a/src/main/java/com/ai/da/controller/DesignController.java b/src/main/java/com/ai/da/controller/DesignController.java
index 934bcecb..6046ed32 100644
--- a/src/main/java/com/ai/da/controller/DesignController.java
+++ b/src/main/java/com/ai/da/controller/DesignController.java
@@ -71,6 +71,12 @@ public class DesignController {
return Response.success(designService.dislike(disDesignLikeDTO));
}
+ @ApiOperation(value = "Design sort")
+ @PostMapping("/sort")
+ public Response sort(@Valid @RequestBody UserLikeSortDTO userLikeSortDTO) {
+ return Response.success(designService.sort(userLikeSortDTO));
+ }
+
@ApiOperation(value = "sketchBoard upload generate design前裁剪")
@PostMapping("/sketchBoardsBoundingBox")
public Response> sketchesBoundingBox(@Valid @RequestBody ReDesignCollectionDTO reDesignCollectionDTO) {
diff --git a/src/main/java/com/ai/da/mapper/primary/UserLikeSortMapper.java b/src/main/java/com/ai/da/mapper/primary/UserLikeSortMapper.java
new file mode 100644
index 00000000..c6966249
--- /dev/null
+++ b/src/main/java/com/ai/da/mapper/primary/UserLikeSortMapper.java
@@ -0,0 +1,7 @@
+package com.ai.da.mapper.primary;
+
+import com.ai.da.common.config.mybatis.plus.CommonMapper;
+import com.ai.da.mapper.primary.entity.UserLikeSort;
+
+public interface UserLikeSortMapper extends CommonMapper {
+}
diff --git a/src/main/java/com/ai/da/mapper/primary/entity/UserLikeSort.java b/src/main/java/com/ai/da/mapper/primary/entity/UserLikeSort.java
new file mode 100644
index 00000000..3e733d3c
--- /dev/null
+++ b/src/main/java/com/ai/da/mapper/primary/entity/UserLikeSort.java
@@ -0,0 +1,24 @@
+package com.ai.da.mapper.primary.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("user_like_sort")
+public class UserLikeSort implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+ private Long userLikeGroupId;
+ private Long userLikeId;
+ private Integer sort;
+}
\ No newline at end of file
diff --git a/src/main/java/com/ai/da/model/dto/UserLikeSortDTO.java b/src/main/java/com/ai/da/model/dto/UserLikeSortDTO.java
new file mode 100644
index 00000000..9cf6dd8c
--- /dev/null
+++ b/src/main/java/com/ai/da/model/dto/UserLikeSortDTO.java
@@ -0,0 +1,13 @@
+package com.ai.da.model.dto;
+
+import com.ai.da.mapper.primary.entity.UserLikeSort;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class UserLikeSortDTO{
+ private Long userLikeGroupId;
+
+ List userLikeSortList;
+}
diff --git a/src/main/java/com/ai/da/model/vo/DesignLikeVO.java b/src/main/java/com/ai/da/model/vo/DesignLikeVO.java
index 2a38f8bd..a54bc2ec 100644
--- a/src/main/java/com/ai/da/model/vo/DesignLikeVO.java
+++ b/src/main/java/com/ai/da/model/vo/DesignLikeVO.java
@@ -19,6 +19,8 @@ public class DesignLikeVO {
private String pictureName;
+ private Long userLikeId;
+
public DesignLikeVO() {
}
}
diff --git a/src/main/java/com/ai/da/model/vo/UserLikeVO.java b/src/main/java/com/ai/da/model/vo/UserLikeVO.java
index 589e8fc6..a1344f80 100644
--- a/src/main/java/com/ai/da/model/vo/UserLikeVO.java
+++ b/src/main/java/com/ai/da/model/vo/UserLikeVO.java
@@ -23,4 +23,6 @@ public class UserLikeVO {
@ApiModelProperty("图片路径")
private String designOutfitUrl;
private String pictureName;
+
+ private Integer sort;
}
diff --git a/src/main/java/com/ai/da/python/PythonService.java b/src/main/java/com/ai/da/python/PythonService.java
index f7f47631..9cfb9fa4 100644
--- a/src/main/java/com/ai/da/python/PythonService.java
+++ b/src/main/java/com/ai/da/python/PythonService.java
@@ -268,7 +268,8 @@ public class PythonService {
DesignPythonObject pythonObject = createDesignPythonObject(elementVO, designPictureType, systemScale, singleOverall, switchCategory, i);
// 如果当前对象与已组装的对象重复,则跳过当前组装
- if (assembledObjects.contains(pythonObject)) {
+ DesignPythonObject designPythonObjectCopy = getCopy(pythonObject);
+ if (assembledObjects.contains(designPythonObjectCopy)) {
if (lastAssembledObject != null && assembledObjects.contains(lastAssembledObject)) {
// 如果当前组装与前一个组装的对象重复,且前一个组装也重复,结束组装
System.out.println("当前组装的对象与前两个组装的对象重复,结束组装。");
@@ -279,8 +280,8 @@ public class PythonService {
}
// 将当前对象添加到已组装的集合中,并记录
- assembledObjects.add(pythonObject);
- lastAssembledObject = pythonObject; // 更新上一次组装的对象
+ assembledObjects.add(designPythonObjectCopy);
+ lastAssembledObject = designPythonObjectCopy; // 更新上一次组装的对象
objects.add(pythonObject);
redisUtil.addProcessId(processId, i + 1);
@@ -288,6 +289,26 @@ public class PythonService {
return designPythonObjects;
}
+ private DesignPythonObject getCopy(DesignPythonObject pythonObject) {
+ DesignPythonObject designPythonObjectCopy = CopyUtil.copyObject(pythonObject, DesignPythonObject.class);
+ designPythonObjectCopy.setObjectSign(null);
+ DesignPythonBasic basic = designPythonObjectCopy.getBasic();
+ basic.setSave_name(null);
+ designPythonObjectCopy.setBasic(basic);
+ List items = designPythonObjectCopy.getItems();
+ List itemsCopy = new ArrayList<>();
+ for (DesignPythonItem item : items) {
+ item.setElementId(null);
+ item.setIcon(null);
+ item.setBusinessId(null);
+ item.setImage_id(null);
+ item.setImageId(null);
+ itemsCopy.add(item);
+ }
+ designPythonObjectCopy.setItems(itemsCopy);
+ return designPythonObjectCopy;
+ }
+
private void updateSketchNumbers(CurrentDesignPictureTypeEnum designPictureType, int[] sketchNumbers) {
switch (designPictureType) {
case PIN:
@@ -320,7 +341,9 @@ public class PythonService {
DesignPythonObject pythonObject = new DesignPythonObject();
pythonObject.setItems(coverToDesignPythonItemNew(elementVO, designPictureType, systemScale));
pythonObject.setBasic(coverToBasic(pythonObject.getItems().get(0), singleOverall, switchCategory, elementVO.getDesignLibraryModelPoint()));
- pythonObject.setObjectSign(elementVO.getRequestIdList().get(i));
+ if (CollectionUtil.isNotEmpty(elementVO.getRequestIdList())) {
+ pythonObject.setObjectSign(elementVO.getRequestIdList().get(i));
+ }
return pythonObject;
}
diff --git a/src/main/java/com/ai/da/service/DesignService.java b/src/main/java/com/ai/da/service/DesignService.java
index 80d13f47..9dc7591d 100644
--- a/src/main/java/com/ai/da/service/DesignService.java
+++ b/src/main/java/com/ai/da/service/DesignService.java
@@ -110,4 +110,6 @@ public interface DesignService extends IService {
String designCloud(DesignCollectionDTO designDTO);
void processDesignBatch(Map designBatchResult);
+
+ Boolean sort(UserLikeSortDTO userLikeSortDTO);
}
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 46ff2d8c..c24ce8a6 100644
--- a/src/main/java/com/ai/da/service/impl/DesignServiceImpl.java
+++ b/src/main/java/com/ai/da/service/impl/DesignServiceImpl.java
@@ -8,10 +8,7 @@ import com.ai.da.common.constant.CommonConstant;
import com.ai.da.common.context.UserContext;
import com.ai.da.common.enums.*;
import com.ai.da.common.utils.*;
-import com.ai.da.mapper.primary.DesignBatchMapper;
-import com.ai.da.mapper.primary.DesignMapper;
-import com.ai.da.mapper.primary.GenerateDetailMapper;
-import com.ai.da.mapper.primary.TDesignPythonOutfitMapper;
+import com.ai.da.mapper.primary.*;
import com.ai.da.mapper.primary.entity.*;
import com.ai.da.mapper.primary.entity.Collection;
import com.ai.da.model.dto.*;
@@ -114,6 +111,9 @@ public class DesignServiceImpl extends ServiceImpl impleme
@Resource
private DesignBatchMapper designBatchMapper;
+ @Resource
+ private UserLikeSortMapper userLikeSortMapper;
+
private final ConcurrentHashMap> designContext = new ConcurrentHashMap<>();
@@ -1040,7 +1040,9 @@ public class DesignServiceImpl extends ServiceImpl impleme
}
String pictureName = null;
UserLike userLike;
+ Boolean isFirst = true;
if (Objects.nonNull(userGroupId)) {
+ isFirst = false;
UserLikeGroup userLikeGroup = userLikeGroupService.getById(userGroupId);
if (Objects.isNull(userLikeGroup)) {
throw new BusinessException("userLikeGroup.not.found");
@@ -1086,6 +1088,24 @@ public class DesignServiceImpl extends ServiceImpl impleme
designItem.getDesignId(), designLikeDTO.getDesignItemId(), designLikeDTO.getDesignPythonOutfitId(), tDesignPythonOutfits.get(0).getDesignUrl(), designLikeDTO.getTimeZone());
}
userLikeService.save(userLike);
+ if (isFirst) {
+ UserLikeSort userLikeSort = new UserLikeSort();
+ userLikeSort.setUserLikeGroupId(userGroupId);
+ userLikeSort.setUserLikeId(userLike.getId());
+ userLikeSort.setSort(1);
+ userLikeSortMapper.insert(userLikeSort);
+ }else {
+ QueryWrapper qw = new QueryWrapper<>();
+ qw.lambda().eq(UserLikeSort::getUserLikeGroupId, userGroupId);
+ qw.lambda().orderByDesc(UserLikeSort::getSort);
+ List userLikeSorts = userLikeSortMapper.selectList(qw);
+ Integer sort = userLikeSorts.get(0).getSort();
+ UserLikeSort userLikeSort = new UserLikeSort();
+ userLikeSort.setUserLikeGroupId(userGroupId);
+ userLikeSort.setUserLikeId(userLike.getId());
+ userLikeSort.setSort(sort + 1);
+ userLikeSortMapper.insert(userLikeSort);
+ }
groupDetailId = userLike.getId();
String designUrl = designPythonOutfitMapper.selectById(userLike.getDesignOutfitId()).getDesignUrl();
if (designUrl.contains("/")) {
@@ -1094,7 +1114,7 @@ public class DesignServiceImpl extends ServiceImpl impleme
}
//修改designItem为like状态
designItemService.updateLikeStatus(designLikeDTO.getDesignItemId(), (byte) 1);
- return new DesignLikeVO(userGroupId, groupDetailId, pictureName);
+ return new DesignLikeVO(userGroupId, groupDetailId, pictureName, userLike.getId());
}
private List validateMergeElement(List oldElements, List designItemDetails) {
@@ -1176,9 +1196,32 @@ public class DesignServiceImpl extends ServiceImpl impleme
//group 下面没有元素时候 直接删除
// userLikeGroupService.removeById(userLike.getUserLikeGroupId());
}
+
+ QueryWrapper qw = new QueryWrapper<>();
+ qw.lambda().eq(UserLikeSort::getUserLikeGroupId, userLike.getUserLikeGroupId());
+ qw.lambda().orderByDesc(UserLikeSort::getSort);
+ List userLikeSorts = userLikeSortMapper.selectList(qw);
+ UserLikeSort userLikeSort = getUserLikeSortByUserLikeId(userLike.getId());
+ Long userLikeSortId = userLikeSort.getId();
+ for (UserLikeSort likeSort : userLikeSorts) {
+ if (Objects.equals(likeSort.getId(), userLikeSortId)) {
+ userLikeSortMapper.deleteById(likeSort);
+ break;
+ }else {
+ likeSort.setSort(likeSort.getSort() - 1);
+ userLikeSortMapper.updateById(likeSort);
+ }
+ }
return Boolean.TRUE;
}
+ private UserLikeSort getUserLikeSortByUserLikeId(Long userLikeId) {
+ QueryWrapper qw = new QueryWrapper<>();
+ qw.lambda().eq(UserLikeSort::getUserLikeId, userLikeId);
+ UserLikeSort userLikeSort = userLikeSortMapper.selectOne(qw);
+ return userLikeSort;
+ }
+
@Override
public String generateHighDesign(GenerateHighDesignDTO generateHighDesignDTO) {
DesignItem designItem = designItemService.getById(generateHighDesignDTO.getDesignItemId());
@@ -1874,4 +1917,15 @@ public class DesignServiceImpl extends ServiceImpl impleme
}
-}
+ @Override
+ public Boolean sort(UserLikeSortDTO userLikeSortDTO) {
+// QueryWrapper qw = new QueryWrapper<>();
+// qw.lambda().eq(UserLikeSort::getUserLikeGroupId, userLikeSortDTO.getUserLikeGroupId());
+// userLikeSortMapper.delete(qw);
+ for (UserLikeSort userLikeSort : userLikeSortDTO.getUserLikeSortList()) {
+ userLikeSortMapper.updateById(userLikeSort);
+ }
+ return Boolean.TRUE;
+ }
+
+}
\ No newline at end of file
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 0aff560f..4e8a730f 100644
--- a/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java
+++ b/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java
@@ -86,6 +86,8 @@ public class UserLikeGroupServiceImpl extends ServiceImpl userLikeSortQueryWrapper = new QueryWrapper<>();
+ userLikeSortQueryWrapper.lambda().eq(UserLikeSort::getUserLikeId, o.getId());
+ List userLikeSorts = userLikeSortMapper.selectList(userLikeSortQueryWrapper);
+ if (CollectionUtil.isNotEmpty(userLikeSorts)) {
+ o.setSort(userLikeSorts.get(0).getSort());
+ }
});
UserLikeCollectionVO userLikeCollection = collectionService.chooseCollection(group.getCollectionId());
Integer beenPublished = 0;