TASK:AiDA design like sort
This commit is contained in:
8
pom.xml
8
pom.xml
@@ -151,9 +151,15 @@
|
|||||||
<version>3.0.3</version>
|
<version>3.0.3</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- /**发送邮件**/-->
|
<!-- /**发送邮件**/-->
|
||||||
|
<!-- <dependency>-->
|
||||||
|
<!-- <groupId>com.tencentcloudapi</groupId>-->
|
||||||
|
<!-- <artifactId>tencentcloud-sdk-java-ses</artifactId>-->
|
||||||
|
<!-- <version>3.1.572</version>-->
|
||||||
|
<!-- </dependency>-->
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.tencentcloudapi</groupId>
|
<groupId>com.tencentcloudapi</groupId>
|
||||||
<artifactId>tencentcloud-sdk-java-ses</artifactId>
|
<artifactId>tencentcloud-sdk-java</artifactId>
|
||||||
<version>3.1.572</version>
|
<version>3.1.572</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|||||||
@@ -71,6 +71,12 @@ public class DesignController {
|
|||||||
return Response.success(designService.dislike(disDesignLikeDTO));
|
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前裁剪")
|
@ApiOperation(value = "sketchBoard upload generate design前裁剪")
|
||||||
@PostMapping("/sketchBoardsBoundingBox")
|
@PostMapping("/sketchBoardsBoundingBox")
|
||||||
public Response<List<CollectionSketchVO>> sketchesBoundingBox(@Valid @RequestBody ReDesignCollectionDTO reDesignCollectionDTO) {
|
public Response<List<CollectionSketchVO>> sketchesBoundingBox(@Valid @RequestBody ReDesignCollectionDTO reDesignCollectionDTO) {
|
||||||
|
|||||||
@@ -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> {
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
13
src/main/java/com/ai/da/model/dto/UserLikeSortDTO.java
Normal file
13
src/main/java/com/ai/da/model/dto/UserLikeSortDTO.java
Normal 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;
|
||||||
|
}
|
||||||
@@ -19,6 +19,8 @@ public class DesignLikeVO {
|
|||||||
|
|
||||||
private String pictureName;
|
private String pictureName;
|
||||||
|
|
||||||
|
private Long userLikeId;
|
||||||
|
|
||||||
public DesignLikeVO() {
|
public DesignLikeVO() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,4 +23,6 @@ public class UserLikeVO {
|
|||||||
@ApiModelProperty("图片路径")
|
@ApiModelProperty("图片路径")
|
||||||
private String designOutfitUrl;
|
private String designOutfitUrl;
|
||||||
private String pictureName;
|
private String pictureName;
|
||||||
|
|
||||||
|
private Integer sort;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -268,7 +268,8 @@ public class PythonService {
|
|||||||
DesignPythonObject pythonObject = createDesignPythonObject(elementVO, designPictureType, systemScale, singleOverall, switchCategory, i);
|
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)) {
|
if (lastAssembledObject != null && assembledObjects.contains(lastAssembledObject)) {
|
||||||
// 如果当前组装与前一个组装的对象重复,且前一个组装也重复,结束组装
|
// 如果当前组装与前一个组装的对象重复,且前一个组装也重复,结束组装
|
||||||
System.out.println("当前组装的对象与前两个组装的对象重复,结束组装。");
|
System.out.println("当前组装的对象与前两个组装的对象重复,结束组装。");
|
||||||
@@ -279,8 +280,8 @@ public class PythonService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 将当前对象添加到已组装的集合中,并记录
|
// 将当前对象添加到已组装的集合中,并记录
|
||||||
assembledObjects.add(pythonObject);
|
assembledObjects.add(designPythonObjectCopy);
|
||||||
lastAssembledObject = pythonObject; // 更新上一次组装的对象
|
lastAssembledObject = designPythonObjectCopy; // 更新上一次组装的对象
|
||||||
|
|
||||||
objects.add(pythonObject);
|
objects.add(pythonObject);
|
||||||
redisUtil.addProcessId(processId, i + 1);
|
redisUtil.addProcessId(processId, i + 1);
|
||||||
@@ -288,6 +289,26 @@ public class PythonService {
|
|||||||
return designPythonObjects;
|
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) {
|
private void updateSketchNumbers(CurrentDesignPictureTypeEnum designPictureType, int[] sketchNumbers) {
|
||||||
switch (designPictureType) {
|
switch (designPictureType) {
|
||||||
case PIN:
|
case PIN:
|
||||||
@@ -320,7 +341,9 @@ public class PythonService {
|
|||||||
DesignPythonObject pythonObject = new DesignPythonObject();
|
DesignPythonObject pythonObject = new DesignPythonObject();
|
||||||
pythonObject.setItems(coverToDesignPythonItemNew(elementVO, designPictureType, systemScale));
|
pythonObject.setItems(coverToDesignPythonItemNew(elementVO, designPictureType, systemScale));
|
||||||
pythonObject.setBasic(coverToBasic(pythonObject.getItems().get(0), singleOverall, switchCategory, elementVO.getDesignLibraryModelPoint()));
|
pythonObject.setBasic(coverToBasic(pythonObject.getItems().get(0), singleOverall, switchCategory, elementVO.getDesignLibraryModelPoint()));
|
||||||
|
if (CollectionUtil.isNotEmpty(elementVO.getRequestIdList())) {
|
||||||
pythonObject.setObjectSign(elementVO.getRequestIdList().get(i));
|
pythonObject.setObjectSign(elementVO.getRequestIdList().get(i));
|
||||||
|
}
|
||||||
return pythonObject;
|
return pythonObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -110,4 +110,6 @@ public interface DesignService extends IService<Design> {
|
|||||||
String designCloud(DesignCollectionDTO designDTO);
|
String designCloud(DesignCollectionDTO designDTO);
|
||||||
|
|
||||||
void processDesignBatch(Map<String, Object> designBatchResult);
|
void processDesignBatch(Map<String, Object> designBatchResult);
|
||||||
|
|
||||||
|
Boolean sort(UserLikeSortDTO userLikeSortDTO);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,10 +8,7 @@ import com.ai.da.common.constant.CommonConstant;
|
|||||||
import com.ai.da.common.context.UserContext;
|
import com.ai.da.common.context.UserContext;
|
||||||
import com.ai.da.common.enums.*;
|
import com.ai.da.common.enums.*;
|
||||||
import com.ai.da.common.utils.*;
|
import com.ai.da.common.utils.*;
|
||||||
import com.ai.da.mapper.primary.DesignBatchMapper;
|
import com.ai.da.mapper.primary.*;
|
||||||
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.entity.*;
|
import com.ai.da.mapper.primary.entity.*;
|
||||||
import com.ai.da.mapper.primary.entity.Collection;
|
import com.ai.da.mapper.primary.entity.Collection;
|
||||||
import com.ai.da.model.dto.*;
|
import com.ai.da.model.dto.*;
|
||||||
@@ -114,6 +111,9 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
|
|||||||
@Resource
|
@Resource
|
||||||
private DesignBatchMapper designBatchMapper;
|
private DesignBatchMapper designBatchMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private UserLikeSortMapper userLikeSortMapper;
|
||||||
|
|
||||||
private final ConcurrentHashMap<String, Map<String, Object>> designContext = new ConcurrentHashMap<>();
|
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;
|
String pictureName = null;
|
||||||
UserLike userLike;
|
UserLike userLike;
|
||||||
|
Boolean isFirst = true;
|
||||||
if (Objects.nonNull(userGroupId)) {
|
if (Objects.nonNull(userGroupId)) {
|
||||||
|
isFirst = false;
|
||||||
UserLikeGroup userLikeGroup = userLikeGroupService.getById(userGroupId);
|
UserLikeGroup userLikeGroup = userLikeGroupService.getById(userGroupId);
|
||||||
if (Objects.isNull(userLikeGroup)) {
|
if (Objects.isNull(userLikeGroup)) {
|
||||||
throw new BusinessException("userLikeGroup.not.found");
|
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());
|
designItem.getDesignId(), designLikeDTO.getDesignItemId(), designLikeDTO.getDesignPythonOutfitId(), tDesignPythonOutfits.get(0).getDesignUrl(), designLikeDTO.getTimeZone());
|
||||||
}
|
}
|
||||||
userLikeService.save(userLike);
|
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();
|
groupDetailId = userLike.getId();
|
||||||
String designUrl = designPythonOutfitMapper.selectById(userLike.getDesignOutfitId()).getDesignUrl();
|
String designUrl = designPythonOutfitMapper.selectById(userLike.getDesignOutfitId()).getDesignUrl();
|
||||||
if (designUrl.contains("/")) {
|
if (designUrl.contains("/")) {
|
||||||
@@ -1094,7 +1114,7 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
|
|||||||
}
|
}
|
||||||
//修改designItem为like状态
|
//修改designItem为like状态
|
||||||
designItemService.updateLikeStatus(designLikeDTO.getDesignItemId(), (byte) 1);
|
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) {
|
private List<Long> validateMergeElement(List<CollectionElement> oldElements, List<DesignItemDetail> designItemDetails) {
|
||||||
@@ -1176,9 +1196,32 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
|
|||||||
//group 下面没有元素时候 直接删除
|
//group 下面没有元素时候 直接删除
|
||||||
// userLikeGroupService.removeById(userLike.getUserLikeGroupId());
|
// 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;
|
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
|
@Override
|
||||||
public String generateHighDesign(GenerateHighDesignDTO generateHighDesignDTO) {
|
public String generateHighDesign(GenerateHighDesignDTO generateHighDesignDTO) {
|
||||||
DesignItem designItem = designItemService.getById(generateHighDesignDTO.getDesignItemId());
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -86,6 +86,8 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
|||||||
private AttributeRetrievalMapper attributeRetrievalMapper;
|
private AttributeRetrievalMapper attributeRetrievalMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private ProductImageAttributeMapper productImageAttributeMapper;
|
private ProductImageAttributeMapper productImageAttributeMapper;
|
||||||
|
@Resource
|
||||||
|
private UserLikeSortMapper userLikeSortMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteUserGroup(Long userGroupId) {
|
public void deleteUserGroup(Long userGroupId) {
|
||||||
@@ -166,6 +168,13 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
|||||||
TDesignPythonOutfit tDesignPythonOutfit = tDesignPythonOutfits.get(0);
|
TDesignPythonOutfit tDesignPythonOutfit = tDesignPythonOutfits.get(0);
|
||||||
o.setDesignOutfitId(tDesignPythonOutfit.getId());
|
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());
|
UserLikeCollectionVO userLikeCollection = collectionService.chooseCollection(group.getCollectionId());
|
||||||
Integer beenPublished = 0;
|
Integer beenPublished = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user