bugfix: delete collection;

This commit is contained in:
shahaibo
2025-06-19 11:50:39 +08:00
parent d6285781f2
commit ea235b0d5c
10 changed files with 190 additions and 44 deletions

View File

@@ -387,6 +387,16 @@ public class GenerateConsumer {
String taskId = generateResult.getString("task_id");
userLikeGroupService.toProductBatch(taskId, url, progress);
}
} else if (progress.startsWith("0/")) {
String batchTaskId = generateResult.getString("task_id");
if (!StringUtils.isEmpty(batchTaskId)) {
userLikeGroupService.startTask(batchTaskId);
}
} else if (progress.equals("OK")) {
String batchTaskId = generateResult.getString("task_id");
if (!StringUtils.isEmpty(batchTaskId)) {
userLikeGroupService.completeTask(batchTaskId);
}
}
} else {
// 修改redis中的数据状态为exception
@@ -440,6 +450,16 @@ public class GenerateConsumer {
String taskId = generateResult.getString("task_id");
userLikeGroupService.relightBatch(taskId, url, progress);
}
} else if (progress.startsWith("0/")) {
String batchTaskId = generateResult.getString("task_id");
if (!StringUtils.isEmpty(batchTaskId)) {
userLikeGroupService.startTask(batchTaskId);
}
} else if (progress.equals("OK")) {
String batchTaskId = generateResult.getString("task_id");
if (!StringUtils.isEmpty(batchTaskId)) {
userLikeGroupService.completeTask(batchTaskId);
}
}
} else {
// 修改redis中的数据状态为exception

View File

@@ -1,5 +1,6 @@
package com.ai.da.common.config;
import com.ai.da.common.enums.CollectionLevel1TypeEnum;
import com.ai.da.common.utils.*;
import com.ai.da.mapper.primary.*;
import com.ai.da.mapper.primary.entity.*;
@@ -8,6 +9,7 @@ import com.ai.da.mapper.secondary.AttributeRetrievalMapper;
import com.ai.da.model.dto.*;
import com.ai.da.model.enums.CollectionType;
import com.ai.da.model.enums.DesignProcess;
import com.ai.da.model.enums.Sex;
import com.ai.da.model.vo.ValidateElementVO;
import com.ai.da.python.PythonService;
import com.ai.da.python.vo.DesignPythonObjects;
@@ -24,6 +26,7 @@ import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.security.core.parameters.P;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
@@ -65,8 +68,22 @@ public class MyTaskScheduler {
}
private void collectionSortData() {
QueryWrapper<CollectionSort> qw = new QueryWrapper<>();
// ToProductElement更新project_id字段数据
QueryWrapper<ToProductElement> toProductElementQueryWrapper = new QueryWrapper<>();
List<ToProductElement> toProductElements = toProductELementMapper.selectList(toProductElementQueryWrapper);
// for (ToProductElement toProductElement : toProductElements) {
// Long userLikeGroupId = toProductElement.getUserLikeGroupId();
// QueryWrapper<UserLikeGroup> userLikeGroupQueryWrapper = new QueryWrapper<>();
// userLikeGroupQueryWrapper.lambda().eq(UserLikeGroup::getId, userLikeGroupId);
// UserLikeGroup userLikeGroup = userLikeGroupMapper.selectOne(userLikeGroupQueryWrapper);
// if (Objects.nonNull(userLikeGroup)) {
// toProductElement.setProjectId(userLikeGroup.getProjectId());
// toProductElement.setType(CollectionType.DESIGN.getValue());
// collectionSortMapper.updateById(collectionSort);
// }
// }
QueryWrapper<CollectionSort> qw = new QueryWrapper<>();
List<CollectionSort> collectionSortList = collectionSortMapper.selectList(qw);
for (CollectionSort collectionSort : collectionSortList) {
Long userLikeGroupId = collectionSort.getUserLikeGroupId();
@@ -84,6 +101,9 @@ public class MyTaskScheduler {
@Resource
private CollectionSortMapper collectionSortMapper;
@Resource
private ToProductElementMapper toProductELementMapper;
@Resource
private AccountMapper accountMapper;
@@ -681,6 +701,8 @@ public class MyTaskScheduler {
@Resource
private CollectionElementMapper collectionElementMapper;
@Resource
private CollectionElementRelModelMapper collectionElementRelModelMapper;
@Resource
private CollectionElementService collectionElementService;
@@ -1367,7 +1389,7 @@ public class MyTaskScheduler {
@Transactional
public void projectDataCreate() {
// TODO:UserLikeGroup转project待完善
// UserLikeGroup转project
// QueryWrapper<UserLikeGroup> qw = new QueryWrapper<>();
// qw.lambda().ne(UserLikeGroup::getAccountId, -1);
// List<UserLikeGroup> userLikeGroups = userLikeGroupMapper.selectList(qw);
@@ -1409,6 +1431,7 @@ public class MyTaskScheduler {
// if (!design.getSingleOverall().equals("overall")) {
// workspace.setPosition(design.getSwitchCategory());
// }
//
// workspace.setId(null);
// workspaceMapper.insert(workspace);
//
@@ -1426,10 +1449,52 @@ public class MyTaskScheduler {
// collectionElement.setIsCompositeImage(1);
// collectionElementMapper.updateById(collectionElement);
// }
//
// if (design.getModelType().equals("System")) {
// SysFile sysFile = sysFileMapper.selectById(design.getTemplateId());
//
// CollectionElement collectionElement = new CollectionElement();
// collectionElement.setAccountId(design.getAccountId());
// collectionElement.setProjectId(project.getId());
// collectionElement.setLevel1Type(CollectionLevel1TypeEnum.MODEL.getRealName());
//// collectionElement.setLevel2Type(board.getLevel2Type());
// collectionElement.setName(sysFile.getName());
// collectionElement.setUrl(sysFile.getUrl());
//// collectionElement.setHasPin(board.getIsPin());
// collectionElement.setMd5(sysFile.getMd5());
// collectionElement.setCreateDate(new Date());
// collectionElement.setHasPin((byte) 0);
// collectionElementMapper.insert(collectionElement);
// CollectionElementRelModel collectionElementRelModel = new CollectionElementRelModel();
// collectionElementRelModel.setCollectionElementId(collectionElement.getId());
// collectionElementRelModel.setRelationId(sysFile.getId());
// collectionElementRelModel.setRelationType("System");
// collectionElementRelModelMapper.insert(collectionElementRelModel);
// }else {
// Library library = libraryMapper.selectById(design.getTemplateId());
// CollectionElement collectionElement = new CollectionElement();
// collectionElement.setAccountId(design.getAccountId());
// collectionElement.setProjectId(project.getId());
// collectionElement.setLevel1Type(CollectionLevel1TypeEnum.MODEL.getRealName());
//// collectionElement.setLevel2Type(board.getLevel2Type());
// collectionElement.setName(library.getName());
// collectionElement.setUrl(library.getUrl());
//// collectionElement.setHasPin(board.getIsPin());
// collectionElement.setMd5(library.getMd5());
// collectionElement.setCreateDate(new Date());
// collectionElement.setHasPin((byte) 0);
// collectionElementMapper.insert(collectionElement);
// CollectionElementRelModel collectionElementRelModel = new CollectionElementRelModel();
// collectionElementRelModel.setCollectionElementId(collectionElement.getId());
// collectionElementRelModel.setRelationId(library.getId());
// collectionElementRelModel.setRelationType("Library");
// collectionElementRelModelMapper.insert(collectionElementRelModel);
// }
//
// userLikeGroup.setProjectId(project.getId());
// userLikeGroupMapper.updateById(userLikeGroup);
// }
// // toProductImage relight数据
// // 必须先完成project数据新增后再执行 toProductImage relight数据关联project
// QueryWrapper<Project> projectQueryWrapper = new QueryWrapper<>();
// List<Project> projects = projectMapper.selectList(projectQueryWrapper);
// for (Project project : projects) {
@@ -1455,8 +1520,8 @@ public class MyTaskScheduler {
// }
// // 画布数据
// QueryWrapper<ExportFile> exportFileQueryWrapper = new QueryWrapper<>();
// exportFileQueryWrapper.lambda().ge(ExportFile::getId, 10);
// exportFileQueryWrapper.lambda().le(ExportFile::getId, 86);
//// exportFileQueryWrapper.lambda().ge(ExportFile::getId, 10);
//// exportFileQueryWrapper.lambda().le(ExportFile::getId, 86);
// List<ExportFile> exportFiles = exportFileMapper.selectList(exportFileQueryWrapper);
// for (ExportFile exportFile : exportFiles) {
// Long userLikeGroupId = exportFile.getProjectId();
@@ -1467,7 +1532,23 @@ public class MyTaskScheduler {
// }
// }
// TODO:作品关联数据转json数据
// 作品关联数据转json数据
// 作品关联projectId
QueryWrapper<Portfolio> updateQueryWrapper = new QueryWrapper<>();
updateQueryWrapper.lambda().eq(Portfolio::getOpenSource, 1);
List<Portfolio> portfolioListUpdate = portfolioMapper.selectList(updateQueryWrapper);
for (Portfolio portfolio : portfolioListUpdate) {
Long userLikeGroupSourceId = portfolio.getUserLikeGroupSourceId();
UserLikeGroup userLikeGroup = userLikeGroupMapper.selectById(userLikeGroupSourceId);
if (Objects.nonNull(userLikeGroup)) {
portfolio.setProjectId(userLikeGroup.getProjectId());
portfolioMapper.updateById(portfolio);
}else {
// TODO:考虑关闭二创
portfolio.setOpenSource(0);
portfolioMapper.updateById(portfolio);
}
}
// 查询作品
QueryWrapper<Portfolio> portfolioQueryWrapper = new QueryWrapper<>();
portfolioQueryWrapper.lambda().eq(Portfolio::getOpenSource, 1);

View File

@@ -45,6 +45,8 @@ public class CloudTask implements Serializable {
private LocalDateTime createTime;
private LocalDateTime startTime;
private LocalDateTime updateTime;
private Long accountId;

View File

@@ -35,7 +35,7 @@ public class Project implements Serializable {
private Long originalPortfolioId;
private Long parentId;
// private Long parentId;
private LocalDateTime createTime;

View File

@@ -24,6 +24,7 @@ public class ToProductElement implements Serializable {
@ApiModelProperty(value = "url")
private String url;
private String type;
@ApiModelProperty(value = "createTime")
private LocalDateTime createTime;
}

View File

@@ -110,7 +110,7 @@ public interface UserLikeGroupService extends IService<UserLikeGroup> {
Boolean brandDNADelete(BrandDNADTO brandDNADTO);
void toProductBatch(String taskId, String url, String progress);
void toProductBatch(String taskId, String url, String progress) throws InterruptedException;
void relightBatch(String taskId, String url, String progress);
@@ -119,4 +119,8 @@ public interface UserLikeGroupService extends IService<UserLikeGroup> {
Boolean toProductImageElementDelete(Long id);
ToProductElementVO convertRelightElement(Long id);
void startTask(String batchTaskId);
void completeTask(String batchTaskId);
}

View File

@@ -1380,6 +1380,7 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
for (CollectionSort likeSort : userLikeSorts) {
if (Objects.equals(likeSort.getId(), userLikeSortId)) {
collectionSortMapper.deleteById(likeSort);
deleteByParentId(likeSort.getId());
break;
}else {
likeSort.setSort(likeSort.getSort() - 1);
@@ -1389,10 +1390,16 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
}
}
@Override
public CollectionSort getUserLikeSortByUserLikeId(Long userLikeId, String relationType, Long projectId) {
private void deleteByParentId(Long parentId) {
QueryWrapper<CollectionSort> qw = new QueryWrapper<>();
qw.lambda().eq(CollectionSort::getRelationId, userLikeId);
qw.lambda().eq(CollectionSort::getParentId, parentId);
collectionSortMapper.delete(qw);
}
@Override
public CollectionSort getUserLikeSortByUserLikeId(Long relationId, String relationType, Long projectId) {
QueryWrapper<CollectionSort> qw = new QueryWrapper<>();
qw.lambda().eq(CollectionSort::getRelationId, relationId);
qw.lambda().eq(CollectionSort::getRelationType, relationType);
qw.lambda().eq(CollectionSort::getProjectId, projectId);
CollectionSort userLikeSort = collectionSortMapper.selectOne(qw);
@@ -1915,6 +1922,15 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
}
}
}
CloudTask cloudTask = CopyUtil.copyObject(cloudTaskDTO, CloudTask.class);
cloudTask.setProjectId(projectId);
cloudTask.setTaskId(batchTaskId);
LocalDateTime now = LocalDateTime.now();
cloudTask.setCreateTime(now);
cloudTask.setUpdateTime(now);
cloudTask.setStatus(0);
cloudTask.setAccountId(userInfo.getId());
cloudTaskMapper.insert(cloudTask);
UserLikeGroup userLikeGroup = userLikeGroupService.getByProjectId(projectId);
Long userLikeGroupId = null;
ToProductImageRecord toProductImageRecord = new ToProductImageRecord();
@@ -2052,16 +2068,6 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
}
sb = new StringBuilder("The best quality, masterpiece, real image.");
}
CloudTask cloudTask = CopyUtil.copyObject(cloudTaskDTO, CloudTask.class);
cloudTask.setProjectId(projectId);
cloudTask.setTaskId(batchTaskId);
LocalDateTime now = LocalDateTime.now();
cloudTask.setCreateTime(now);
cloudTask.setUpdateTime(now);
cloudTask.setStatus(0);
cloudTask.setAccountId(userInfo.getId());
cloudTaskMapper.insert(cloudTask);
return batchTaskId;
}else if (cloudTaskDTO.getBuildType().equals(BuildType.RELIGHT.getValue())) {
ToProductImageDTO toProductImageDTO = cloudTaskDTO.getToProductImage();
@@ -2093,6 +2099,16 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
}
}
}
CloudTask cloudTask = CopyUtil.copyObject(cloudTaskDTO, CloudTask.class);
cloudTask.setProjectId(projectId);
cloudTask.setTaskId(batchTaskId);
LocalDateTime now = LocalDateTime.now();
cloudTask.setCreateTime(now);
cloudTask.setUpdateTime(now);
cloudTask.setStatus(0);
cloudTaskMapper.insert(cloudTask);
UserLikeGroup userLikeGroup = userLikeGroupService.getByProjectId(projectId);
Long userLikeGroupId = null;
@@ -2215,14 +2231,6 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
pythonService.relightBatch(batchTaskId, paramList, userHolder.getId().toString());
}
}
CloudTask cloudTask = CopyUtil.copyObject(cloudTaskDTO, CloudTask.class);
cloudTask.setProjectId(projectId);
cloudTask.setTaskId(batchTaskId);
LocalDateTime now = LocalDateTime.now();
cloudTask.setCreateTime(now);
cloudTask.setUpdateTime(now);
cloudTask.setStatus(0);
cloudTaskMapper.insert(cloudTask);
return batchTaskId;
} else if (cloudTaskDTO.getBuildType().equals(BuildType.POSE_TRANSFORM.getValue())) {
Long projectId = cloudTaskDTO.getProjectId();
@@ -2247,13 +2255,23 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
}
}
Long accountId = UserContext.getUserHolder().getId();
String taskBatchId = UUID.randomUUID().toString() + "-" + accountId;
CloudTask cloudTask = CopyUtil.copyObject(cloudTaskDTO, CloudTask.class);
cloudTask.setProjectId(cloudTask.getProjectId());
cloudTask.setTaskId(taskBatchId);
LocalDateTime now = LocalDateTime.now();
cloudTask.setCreateTime(now);
cloudTask.setUpdateTime(now);
cloudTask.setStatus(0);
cloudTaskMapper.insert(cloudTask);
Boolean preDeduction = creditsService.creditsPreDeduction(Integer.parseInt(CreditsEventsEnum.POSE_TRANSFORMATION.getValue()) * cloudTaskDTO.getNums());
if (!preDeduction) {
throw new BusinessException("Your remaining credits are insufficient for this generation. Please recharge.", ResultEnum.WARNING.getCode());
}
List<PoseTransformBatchDTO> poseTransformList = cloudTaskDTO.getPoseTransform();
if (CollectionUtil.isNotEmpty(poseTransformList)) {
String taskBatchId = UUID.randomUUID().toString() + "-" + accountId;
for (PoseTransformBatchDTO poseTransformBatchDTO : poseTransformList) {
// 1、判断用户当前积分是否够本次生成消耗
CreditsEventsEnum creditsEventsEnum = CreditsEventsEnum.POSE_TRANSFORMATION;
@@ -2282,14 +2300,6 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
throw new BusinessException("pose transformation error", ResultEnum.ERROR.getCode());
}
}
CloudTask cloudTask = CopyUtil.copyObject(cloudTaskDTO, CloudTask.class);
cloudTask.setProjectId(cloudTask.getProjectId());
cloudTask.setTaskId(taskBatchId);
LocalDateTime now = LocalDateTime.now();
cloudTask.setCreateTime(now);
cloudTask.setUpdateTime(now);
cloudTask.setStatus(0);
cloudTaskMapper.insert(cloudTask);
return taskBatchId;
}
}
@@ -2918,7 +2928,12 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
libraryService.processSketchBoards(url, collectionElement.getLevel2Type());
}else if (receiveCollectionElement.getLevel1Type().equals(CollectionLevel1TypeEnum.COLOR_BOARD.getRealName())) {
String color = receiveCollectionElement.getHsv();
int[] hsv = Arrays.stream(color.split("\\s+")).mapToInt(Integer::parseInt).toArray();
String[] parts = color.split("\\s+");
int h = Math.round(Float.parseFloat(parts[0]));
int s = Math.round(Float.parseFloat(parts[1])); // 关键修改
int v = Math.round(Float.parseFloat(parts[2]));
int[] hsv = {h, s, v};
// int[] hsv = Arrays.stream(color.split("\\s+")).mapToInt(Integer::parseInt).toArray();
int value = (hsv[0] * 101 * 101) + (hsv[1] * 101) + hsv[2];
ColorLookupTable colorLookupTable = colorLoopUpTableService.getByColorValue(value);
if (Objects.isNull(colorLookupTable)) {

View File

@@ -332,6 +332,7 @@ public class LLMServiceImpl implements LLMService {
ReceiveDesignParam receiveDesignParam = JSONObject.parseObject(JSONObject.toJSONString(toolsData), ReceiveDesignParam.class);
receiveDesignParam.setProjectId(projectId);
designService.receiveDesignParams(receiveDesignParam);
String contentSave = JSONObject.toJSONString(receiveDesignParam.getReceiveCollectionElementList());
for (ReceiveCollectionElement receiveCollectionElement : receiveDesignParam.getReceiveCollectionElementList()) {
if (!StringUtils.isEmpty(receiveCollectionElement.getUrl())) {
color = false;
@@ -350,7 +351,7 @@ public class LLMServiceImpl implements LLMService {
systemImage.setProjectId(projectId);
systemImage.setSeq(getNextSeq(projectId));
systemImage.setCreateTime(LocalDateTime.now());
systemImage.setContent(JSONObject.toJSONString(receiveDesignParam.getReceiveCollectionElementList()));
systemImage.setContent(contentSave);
systemImage.setAccountId(accountId);
chatMessageMapper.insert(systemImage);
}

View File

@@ -58,7 +58,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
@Override
public Set<Long> getChildProjectIdSet(Long projectId) {
QueryWrapper<Project> qw = new QueryWrapper<>();
qw.lambda().eq(Project::getParentId, projectId);
// qw.lambda().eq(Project::getParentId, projectId);
List<Project> projectList = projectMapper.selectList(qw);
if (CollectionUtil.isNotEmpty(projectList)) {
return projectList.stream().map(Project::getId).collect(Collectors.toSet());

View File

@@ -38,6 +38,7 @@ import io.netty.util.internal.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
@@ -2532,8 +2533,8 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
}
@Override
@Transactional
public void toProductBatch(String taskId, String url, String progress) {
@Transactional(isolation = Isolation.SERIALIZABLE)
public void toProductBatch(String taskId, String url, String progress) throws InterruptedException {
QueryWrapper<ToProductImageResult> qw = new QueryWrapper<>();
qw.lambda().eq(ToProductImageResult::getTaskId, taskId);
ToProductImageResult toProductImageResult = toProductImageResultMapper.selectOne(qw);
@@ -2544,7 +2545,9 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
log.info("toProductImage云生成 batchTaskId:" + taskIdBatch + " 完成数+1");
CloudTask task = cloudTaskMapper.selectForUpdate(taskIdBatch);
cloudTaskMapper.increaseCompletedNum(taskIdBatch);
log.info("排查完成数量" + task.getCompletedNum());
task.setCompletedNum(task.getCompletedNum() + 1);
cloudTaskMapper.updateById(task);
String key = toProductImageResultKey + ":" + taskId;
String imageName = url.substring(url.lastIndexOf("/") + 1);
@@ -2670,4 +2673,23 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
toProductElementVO.setUrl(minioUtil.getPreSignedUrl(toProductElementVO.getUrl(), 24 * 60));
return toProductElementVO;
}
@Override
public void startTask(String batchTaskId) {
QueryWrapper<CloudTask> qw = new QueryWrapper<>();
qw.lambda().eq(CloudTask::getTaskId, batchTaskId);
CloudTask cloudTask = cloudTaskMapper.selectOne(qw);
cloudTask.setStartTime(LocalDateTime.now());
cloudTaskMapper.updateById(cloudTask);
}
@Override
public void completeTask(String batchTaskId) {
QueryWrapper<CloudTask> qw = new QueryWrapper<>();
qw.lambda().eq(CloudTask::getTaskId, batchTaskId);
CloudTask cloudTask = cloudTaskMapper.selectOne(qw);
cloudTask.setStatus(1);
cloudTask.setCompletedNum(cloudTask.getNums());
cloudTaskMapper.updateById(cloudTask);
}
}