TASK:AiDA design like sort

This commit is contained in:
shahaibo
2025-01-06 10:46:51 +08:00
parent 214c93923c
commit 5ea8e851d7
11 changed files with 159 additions and 11 deletions

View File

@@ -151,9 +151,15 @@
<version>3.0.3</version>
</dependency>
<!-- /**发送邮件**/-->
<!-- <dependency>-->
<!-- <groupId>com.tencentcloudapi</groupId>-->
<!-- <artifactId>tencentcloud-sdk-java-ses</artifactId>-->
<!-- <version>3.1.572</version>-->
<!-- </dependency>-->
<dependency>
<groupId>com.tencentcloudapi</groupId>
<artifactId>tencentcloud-sdk-java-ses</artifactId>
<artifactId>tencentcloud-sdk-java</artifactId>
<version>3.1.572</version>
</dependency>

View File

@@ -71,6 +71,12 @@ public class DesignController {
return Response.success(designService.dislike(disDesignLikeDTO));
}
@ApiOperation(value = "Design sort")
@PostMapping("/sort")
public Response<Boolean> sort(@Valid @RequestBody UserLikeSortDTO userLikeSortDTO) {
return Response.success(designService.sort(userLikeSortDTO));
}
@ApiOperation(value = "sketchBoard upload generate design前裁剪")
@PostMapping("/sketchBoardsBoundingBox")
public Response<List<CollectionSketchVO>> sketchesBoundingBox(@Valid @RequestBody ReDesignCollectionDTO reDesignCollectionDTO) {

View File

@@ -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<UserLikeSort> {
}

View File

@@ -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;
}

View File

@@ -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<UserLikeSort> userLikeSortList;
}

View File

@@ -19,6 +19,8 @@ public class DesignLikeVO {
private String pictureName;
private Long userLikeId;
public DesignLikeVO() {
}
}

View File

@@ -23,4 +23,6 @@ public class UserLikeVO {
@ApiModelProperty("图片路径")
private String designOutfitUrl;
private String pictureName;
private Integer sort;
}

View File

@@ -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<DesignPythonItem> items = designPythonObjectCopy.getItems();
List<DesignPythonItem> 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;
}

View File

@@ -110,4 +110,6 @@ public interface DesignService extends IService<Design> {
String designCloud(DesignCollectionDTO designDTO);
void processDesignBatch(Map<String, Object> designBatchResult);
Boolean sort(UserLikeSortDTO userLikeSortDTO);
}

View File

@@ -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<DesignMapper, Design> impleme
@Resource
private DesignBatchMapper designBatchMapper;
@Resource
private UserLikeSortMapper userLikeSortMapper;
private final ConcurrentHashMap<String, Map<String, Object>> designContext = new ConcurrentHashMap<>();
@@ -1040,7 +1040,9 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> 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<DesignMapper, Design> 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<UserLikeSort> qw = new QueryWrapper<>();
qw.lambda().eq(UserLikeSort::getUserLikeGroupId, userGroupId);
qw.lambda().orderByDesc(UserLikeSort::getSort);
List<UserLikeSort> 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<DesignMapper, Design> 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<Long> validateMergeElement(List<CollectionElement> oldElements, List<DesignItemDetail> designItemDetails) {
@@ -1176,9 +1196,32 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
//group 下面没有元素时候 直接删除
// userLikeGroupService.removeById(userLike.getUserLikeGroupId());
}
QueryWrapper<UserLikeSort> qw = new QueryWrapper<>();
qw.lambda().eq(UserLikeSort::getUserLikeGroupId, userLike.getUserLikeGroupId());
qw.lambda().orderByDesc(UserLikeSort::getSort);
List<UserLikeSort> 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<UserLikeSort> 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<DesignMapper, Design> impleme
}
}
@Override
public Boolean sort(UserLikeSortDTO userLikeSortDTO) {
// QueryWrapper<UserLikeSort> qw = new QueryWrapper<>();
// qw.lambda().eq(UserLikeSort::getUserLikeGroupId, userLikeSortDTO.getUserLikeGroupId());
// userLikeSortMapper.delete(qw);
for (UserLikeSort userLikeSort : userLikeSortDTO.getUserLikeSortList()) {
userLikeSortMapper.updateById(userLikeSort);
}
return Boolean.TRUE;
}
}

View File

@@ -86,6 +86,8 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
private AttributeRetrievalMapper attributeRetrievalMapper;
@Resource
private ProductImageAttributeMapper productImageAttributeMapper;
@Resource
private UserLikeSortMapper userLikeSortMapper;
@Override
public void deleteUserGroup(Long userGroupId) {
@@ -166,6 +168,13 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
TDesignPythonOutfit tDesignPythonOutfit = tDesignPythonOutfits.get(0);
o.setDesignOutfitId(tDesignPythonOutfit.getId());
}
QueryWrapper<UserLikeSort> userLikeSortQueryWrapper = new QueryWrapper<>();
userLikeSortQueryWrapper.lambda().eq(UserLikeSort::getUserLikeId, o.getId());
List<UserLikeSort> userLikeSorts = userLikeSortMapper.selectList(userLikeSortQueryWrapper);
if (CollectionUtil.isNotEmpty(userLikeSorts)) {
o.setSort(userLikeSorts.get(0).getSort());
}
});
UserLikeCollectionVO userLikeCollection = collectionService.chooseCollection(group.getCollectionId());
Integer beenPublished = 0;