TASK:AiDA design like sort、moodboardPosition
This commit is contained in:
@@ -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.MoodboardPosition;
|
||||||
|
|
||||||
|
public interface MoodboardPositionMapper extends CommonMapper<MoodboardPosition> {
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
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.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@TableName("moodboard_position")
|
||||||
|
public class MoodboardPosition implements Serializable {
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
@TableId(value = "id", type = IdType.AUTO)
|
||||||
|
private Long id;
|
||||||
|
private Long moodboardId;
|
||||||
|
private Long collectionId;
|
||||||
|
private String type;
|
||||||
|
private String styleData;
|
||||||
|
private Integer sequence;
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
private LocalDateTime updateTime;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -61,7 +61,7 @@ public class DesignCollectionDTO {
|
|||||||
@ApiModelProperty("python端design进程ID")
|
@ApiModelProperty("python端design进程ID")
|
||||||
private String processId;
|
private String processId;
|
||||||
|
|
||||||
private String moodboardPostion;
|
private String moodboardPosition;
|
||||||
|
|
||||||
private List<String> requestIdList;
|
private List<String> requestIdList;
|
||||||
|
|
||||||
|
|||||||
@@ -25,4 +25,5 @@ public class UserLikeVO {
|
|||||||
private String pictureName;
|
private String pictureName;
|
||||||
|
|
||||||
private Integer sort;
|
private Integer sort;
|
||||||
|
private Long userLikeSortId;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,13 +9,19 @@ import com.ai.da.common.utils.DateUtil;
|
|||||||
import com.ai.da.common.utils.MinioUtil;
|
import com.ai.da.common.utils.MinioUtil;
|
||||||
import com.ai.da.common.utils.RedisUtil;
|
import com.ai.da.common.utils.RedisUtil;
|
||||||
import com.ai.da.mapper.primary.CollectionMapper;
|
import com.ai.da.mapper.primary.CollectionMapper;
|
||||||
|
import com.ai.da.mapper.primary.MoodboardPositionMapper;
|
||||||
import com.ai.da.mapper.primary.entity.Collection;
|
import com.ai.da.mapper.primary.entity.Collection;
|
||||||
import com.ai.da.mapper.primary.entity.CollectionElement;
|
import com.ai.da.mapper.primary.entity.CollectionElement;
|
||||||
|
import com.ai.da.mapper.primary.entity.MoodboardPosition;
|
||||||
import com.ai.da.model.vo.CollectionColorVO;
|
import com.ai.da.model.vo.CollectionColorVO;
|
||||||
import com.ai.da.model.vo.CollectionElementVO;
|
import com.ai.da.model.vo.CollectionElementVO;
|
||||||
import com.ai.da.model.vo.UserLikeCollectionVO;
|
import com.ai.da.model.vo.UserLikeCollectionVO;
|
||||||
import com.ai.da.service.CollectionElementService;
|
import com.ai.da.service.CollectionElementService;
|
||||||
import com.ai.da.service.CollectionService;
|
import com.ai.da.service.CollectionService;
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import io.netty.util.internal.StringUtil;
|
import io.netty.util.internal.StringUtil;
|
||||||
@@ -25,6 +31,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@@ -45,6 +52,8 @@ public class CollectionServiceImpl extends ServiceImpl<CollectionMapper, Collect
|
|||||||
private CollectionElementService collectionElementService;
|
private CollectionElementService collectionElementService;
|
||||||
@Resource
|
@Resource
|
||||||
private MinioUtil minioUtil;
|
private MinioUtil minioUtil;
|
||||||
|
@Resource
|
||||||
|
private MoodboardPositionMapper moodboardPositionMapper;
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@Override
|
@Override
|
||||||
@@ -84,7 +93,12 @@ public class CollectionServiceImpl extends ServiceImpl<CollectionMapper, Collect
|
|||||||
if (collection.getMoodTemplateId() != null) {
|
if (collection.getMoodTemplateId() != null) {
|
||||||
CollectionElement byId = collectionElementService.getById(response.getMoodTemplateId());
|
CollectionElement byId = collectionElementService.getById(response.getMoodTemplateId());
|
||||||
if (null != collection.getMoodboardPosition()) {
|
if (null != collection.getMoodboardPosition()) {
|
||||||
response.setMoodboardPosition(collection.getMoodboardPosition());
|
String moodboardPositionString = getMoodboardPositionString(collection.getId());
|
||||||
|
if (StringUtils.isBlank(moodboardPositionString)) {
|
||||||
|
response.setMoodboardPosition(collection.getMoodboardPosition());
|
||||||
|
}else {
|
||||||
|
response.setMoodboardPosition(moodboardPositionString);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (Objects.nonNull(byId)) {
|
if (Objects.nonNull(byId)) {
|
||||||
response.setMoodTemplateName(byId.getName());
|
response.setMoodTemplateName(byId.getName());
|
||||||
@@ -147,6 +161,48 @@ public class CollectionServiceImpl extends ServiceImpl<CollectionMapper, Collect
|
|||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getMoodboardPositionString(Long id) {
|
||||||
|
QueryWrapper<MoodboardPosition> qw = new QueryWrapper<>();
|
||||||
|
qw.lambda().eq(MoodboardPosition::getCollectionId, id);
|
||||||
|
List<MoodboardPosition> moodboardPositions = moodboardPositionMapper.selectList(qw);
|
||||||
|
if (moodboardPositions != null && !moodboardPositions.isEmpty()) {
|
||||||
|
// 将查询结果转换为 JSON 字符串
|
||||||
|
JSONObject resultJson = new JSONObject();
|
||||||
|
|
||||||
|
// 遍历 MoodboardPosition 列表,根据实际情况填充到 resultJson 中
|
||||||
|
for (MoodboardPosition position : moodboardPositions) {
|
||||||
|
String type = position.getType();
|
||||||
|
String styleData = position.getStyleData();
|
||||||
|
int sequence = position.getSequence(); // 获取 sequence 值
|
||||||
|
|
||||||
|
// 如果 type 字段还没有对应的 JSONArray,则初始化它
|
||||||
|
if (!resultJson.containsKey(type)) {
|
||||||
|
resultJson.put(type, new ArrayList<>());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取对应类型的列表
|
||||||
|
List<JSONObject> styleList = (List<JSONObject>) resultJson.get(type);
|
||||||
|
|
||||||
|
// 确保列表长度足够,可以容纳 `sequence` 索引
|
||||||
|
while (styleList.size() <= sequence) {
|
||||||
|
styleList.add(new JSONObject()); // 添加空的 JSONObject,直到长度大于 `sequence`
|
||||||
|
}
|
||||||
|
|
||||||
|
// 将解析的样式数据存入正确的索引位置
|
||||||
|
JSONObject styleObject = JSON.parseObject(styleData);
|
||||||
|
styleList.set(sequence, styleObject); // 根据 sequence 设置数据
|
||||||
|
|
||||||
|
// 更新回 resultJson
|
||||||
|
resultJson.put(type, styleList);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 将最终结果转换为字符串
|
||||||
|
return resultJson.toJSONString();
|
||||||
|
} else {
|
||||||
|
return null; // 返回空的 JSON 对象
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private List<CollectionColorVO> resolveColorBoard(List<CollectionElement> collectionElements) {
|
private List<CollectionColorVO> resolveColorBoard(List<CollectionElement> collectionElements) {
|
||||||
return CopyUtil.copyList(collectionElements, CollectionColorVO.class, (o, d) -> {
|
return CopyUtil.copyList(collectionElements, CollectionColorVO.class, (o, d) -> {
|
||||||
String name = o.getName();
|
String name = o.getName();
|
||||||
|
|||||||
@@ -94,6 +94,9 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
|
|||||||
@Resource
|
@Resource
|
||||||
private TDesignPythonOutfitMapper designPythonOutfitMapper;
|
private TDesignPythonOutfitMapper designPythonOutfitMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private MoodboardPositionMapper moodboardPositionMapper;
|
||||||
|
|
||||||
@Value("${minio.endpoint}")
|
@Value("${minio.endpoint}")
|
||||||
private String endpoint;
|
private String endpoint;
|
||||||
@Value("${minio.bucketName.results}")
|
@Value("${minio.bucketName.results}")
|
||||||
@@ -304,7 +307,9 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
|
|||||||
//保存collection
|
//保存collection
|
||||||
Long collectionId;
|
Long collectionId;
|
||||||
if (null == collectionIdParam) {
|
if (null == collectionIdParam) {
|
||||||
collectionId = collectionService.saveCollection(userInfo.getId(), designDTO.getTimeZone(), designDTO.getMoodTemplateId(), designDTO.getMoodboardPostion());
|
collectionId = collectionService.saveCollection(userInfo.getId(), designDTO.getTimeZone(), designDTO.getMoodTemplateId(), designDTO.getMoodboardPosition());
|
||||||
|
String moodboardPosition = designDTO.getMoodboardPosition();
|
||||||
|
parseMoodboardPosition(moodboardPosition, collectionId);
|
||||||
}else {
|
}else {
|
||||||
collectionId = collectionIdParam;
|
collectionId = collectionIdParam;
|
||||||
}
|
}
|
||||||
@@ -371,6 +376,74 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
|
|||||||
return requestId;
|
return requestId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void parseMoodboardPosition(String moodboardPosition, Long collectionIdParam) {
|
||||||
|
if (!StringUtils.isEmpty(moodboardPosition)) {
|
||||||
|
// 将 JSON 字符串解析为 JSONObject
|
||||||
|
JSONObject moodboardPositionJson = JSONObject.parseObject(moodboardPosition);
|
||||||
|
|
||||||
|
// 准备保存的 MoodboardPosition 列表
|
||||||
|
List<MoodboardPosition> moodboardPositions = new ArrayList<>();
|
||||||
|
|
||||||
|
// 遍历 JSON 对象的 key(即样式类型)
|
||||||
|
for (String key : moodboardPositionJson.keySet()) {
|
||||||
|
// 特殊处理 "class" 字段
|
||||||
|
if ("class".equals(key)) {
|
||||||
|
// 获取 "class" 字段的值并将其转为 List<String>
|
||||||
|
JSONArray classArray = moodboardPositionJson.getJSONArray(key);
|
||||||
|
if (classArray != null) {
|
||||||
|
|
||||||
|
for (int j = 0; j < classArray.size(); j++) {
|
||||||
|
// 将 classList 存入 MoodboardPosition(或者其他结构)
|
||||||
|
|
||||||
|
MoodboardPosition position = new MoodboardPosition()
|
||||||
|
.setCollectionId(collectionIdParam) // 关联 Collection ID
|
||||||
|
.setType(key) // 样式类型
|
||||||
|
.setStyleData(classArray.getString(j)) // 设置 class 字段
|
||||||
|
.setSequence(j) // 根据索引值设置顺序
|
||||||
|
.setCreateTime(LocalDateTime.now()) // 创建时间
|
||||||
|
.setUpdateTime(LocalDateTime.now()); // 更新时间
|
||||||
|
|
||||||
|
// 添加到列表中
|
||||||
|
moodboardPositions.add(position);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
continue; // 跳过 "class" 字段的常规处理
|
||||||
|
}
|
||||||
|
|
||||||
|
JSONArray styleArray = moodboardPositionJson.getJSONArray(key);
|
||||||
|
if (styleArray != null) {
|
||||||
|
for (int i = 0; i < styleArray.size(); i++) {
|
||||||
|
// 获取当前样式数据
|
||||||
|
JSONObject styleData = styleArray.getJSONObject(i);
|
||||||
|
|
||||||
|
// 构建 MoodboardPosition 实例
|
||||||
|
MoodboardPosition position = new MoodboardPosition()
|
||||||
|
.setCollectionId(collectionIdParam) // 关联 Collection ID
|
||||||
|
.setType(key) // 样式类型
|
||||||
|
.setStyleData(styleData.toJSONString()) // 样式数据存为 JSON 字符串
|
||||||
|
.setSequence(i) // 根据索引值设置顺序
|
||||||
|
.setCreateTime(LocalDateTime.now()) // 创建时间
|
||||||
|
.setUpdateTime(LocalDateTime.now()); // 更新时间
|
||||||
|
|
||||||
|
// 添加到列表中
|
||||||
|
moodboardPositions.add(position);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 如果解析结果非空,保存到数据库
|
||||||
|
if (!moodboardPositions.isEmpty()) {
|
||||||
|
for (MoodboardPosition position : moodboardPositions) {
|
||||||
|
moodboardPositionMapper.insert(position);
|
||||||
|
}
|
||||||
|
log.info("成功解析并保存 {} 条 MoodboardPosition 数据", moodboardPositions.size());
|
||||||
|
} else {
|
||||||
|
log.warn("未找到可保存的 MoodboardPosition 数据");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
log.warn("传入的 moodboardPosition 字段为空");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void relationImageId(DesignPythonObjects pythonObjects) {
|
public void relationImageId(DesignPythonObjects pythonObjects) {
|
||||||
@@ -417,7 +490,7 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
|
|||||||
if (!reDesignDTO.getMoodboardPosition().equals(collection.getMoodboardPosition())) {
|
if (!reDesignDTO.getMoodboardPosition().equals(collection.getMoodboardPosition())) {
|
||||||
collection.setMoodboardPosition(reDesignDTO.getMoodboardPosition());
|
collection.setMoodboardPosition(reDesignDTO.getMoodboardPosition());
|
||||||
}
|
}
|
||||||
if (null != reDesignDTO.getMoodTemplateId() && reDesignDTO.getMoodTemplateId().equals(collection.getMoodTemplateId())) {
|
if (null != reDesignDTO.getMoodTemplateId() && !reDesignDTO.getMoodTemplateId().equals(collection.getMoodTemplateId())) {
|
||||||
collection.setMoodTemplateId(reDesignDTO.getMoodTemplateId());
|
collection.setMoodTemplateId(reDesignDTO.getMoodTemplateId());
|
||||||
}
|
}
|
||||||
collectionService.updateById(collection);
|
collectionService.updateById(collection);
|
||||||
@@ -1672,7 +1745,7 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
|
|||||||
//保存collection
|
//保存collection
|
||||||
Long collectionId;
|
Long collectionId;
|
||||||
if (null == collectionIdParam) {
|
if (null == collectionIdParam) {
|
||||||
collectionId = collectionService.saveCollection(userInfo.getId(), designDTO.getTimeZone(), designDTO.getMoodTemplateId(), designDTO.getMoodboardPostion());
|
collectionId = collectionService.saveCollection(userInfo.getId(), designDTO.getTimeZone(), designDTO.getMoodTemplateId(), designDTO.getMoodboardPosition());
|
||||||
}else {
|
}else {
|
||||||
collectionId = collectionIdParam;
|
collectionId = collectionIdParam;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -189,7 +189,9 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
|||||||
userLikeSortQueryWrapper.lambda().eq(UserLikeSort::getUserLikeId, o.getId());
|
userLikeSortQueryWrapper.lambda().eq(UserLikeSort::getUserLikeId, o.getId());
|
||||||
List<UserLikeSort> userLikeSorts = userLikeSortMapper.selectList(userLikeSortQueryWrapper);
|
List<UserLikeSort> userLikeSorts = userLikeSortMapper.selectList(userLikeSortQueryWrapper);
|
||||||
if (CollectionUtil.isNotEmpty(userLikeSorts)) {
|
if (CollectionUtil.isNotEmpty(userLikeSorts)) {
|
||||||
o.setSort(userLikeSorts.get(0).getSort());
|
UserLikeSort userLikeSort = userLikeSorts.get(0);
|
||||||
|
o.setSort(userLikeSort.getSort());
|
||||||
|
o.setUserLikeSortId(userLikeSort.getId());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
UserLikeCollectionVO userLikeCollection = collectionService.chooseCollection(group.getCollectionId());
|
UserLikeCollectionVO userLikeCollection = collectionService.chooseCollection(group.getCollectionId());
|
||||||
|
|||||||
Reference in New Issue
Block a user