From d9a5b0f326e2e67215cfeaa476cd346167bc9727 Mon Sep 17 00:00:00 2001 From: xupei <1779019091@qq.com> Date: Wed, 22 Nov 2023 11:18:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=8Elibrary=E5=88=A0=E9=99=A4generate?= =?UTF-8?q?=E7=9A=84=E5=9B=BE=E7=89=87=E6=97=B6=E9=9C=80=E8=A6=81=E5=8F=96?= =?UTF-8?q?=E6=B6=88=E8=AF=A5=E5=9B=BE=E7=89=87=E7=9A=84like=E6=A0=87?= =?UTF-8?q?=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ai/da/model/dto/LibraryDeleteDTO.java | 5 +++- .../com/ai/da/service/GenerateService.java | 8 ++++++- .../service/impl/DesignItemServiceImpl.java | 3 +++ .../da/service/impl/GenerateServiceImpl.java | 23 ++++++++++++++++++ .../da/service/impl/LibraryServiceImpl.java | 24 ++++++++++++++----- src/main/resources/messages_en.properties | 2 +- 6 files changed, 56 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/ai/da/model/dto/LibraryDeleteDTO.java b/src/main/java/com/ai/da/model/dto/LibraryDeleteDTO.java index b8858709..04334700 100644 --- a/src/main/java/com/ai/da/model/dto/LibraryDeleteDTO.java +++ b/src/main/java/com/ai/da/model/dto/LibraryDeleteDTO.java @@ -5,7 +5,6 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import java.util.List; @@ -20,4 +19,8 @@ public class LibraryDeleteDTO { private List libraryIds; private Integer deleteModelConfirm; + + @NotEmpty(message = "timeZone.cannot.be.empty") + @ApiModelProperty("时区") + private String timeZone; } diff --git a/src/main/java/com/ai/da/service/GenerateService.java b/src/main/java/com/ai/da/service/GenerateService.java index 382ec8c8..0d92a07f 100644 --- a/src/main/java/com/ai/da/service/GenerateService.java +++ b/src/main/java/com/ai/da/service/GenerateService.java @@ -1,7 +1,7 @@ package com.ai.da.service; -import com.ai.da.mapper.entity.Design; import com.ai.da.mapper.entity.Generate; +import com.ai.da.mapper.entity.GenerateDetail; import com.ai.da.model.dto.GenerateLikeDTO; import com.ai.da.model.dto.GenerateThroughImageTextDTO; import com.ai.da.model.vo.GenerateCaptionVO; @@ -9,6 +9,8 @@ import com.ai.da.model.vo.GenerateCollectionVO; import com.ai.da.model.vo.GenerateLikeVO; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + public interface GenerateService extends IService { GenerateCaptionVO generateCaption(Long sketchElementId); @@ -18,4 +20,8 @@ public interface GenerateService extends IService { GenerateLikeVO generateLike(GenerateLikeDTO generateLikeDTO); Boolean generateDislike(Long generateDetailId, String timeZone); + + void updateLikeStatusBatch(List generateDetailIdList, Byte hasLike, Long libraryId, String timeZone); + + List selectBatchByLibraryId(List libraryId); } diff --git a/src/main/java/com/ai/da/service/impl/DesignItemServiceImpl.java b/src/main/java/com/ai/da/service/impl/DesignItemServiceImpl.java index 6b5f8345..4fb2e1fc 100644 --- a/src/main/java/com/ai/da/service/impl/DesignItemServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/DesignItemServiceImpl.java @@ -25,6 +25,7 @@ import com.google.common.collect.Lists; import io.netty.util.internal.StringUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.io.IOException; @@ -399,6 +400,7 @@ public class DesignItemServiceImpl extends ServiceImpl i } @Override + @Transactional(rollbackFor = Exception.class) public GenerateCollectionVO generateThroughImageText(GenerateThroughImageTextDTO generateThroughImageTextDTO) { // 1、获取用户信息 AuthPrincipalVo userHolder = UserContext.getUserHolder(); @@ -161,6 +163,7 @@ public class GenerateServiceImpl extends ServiceImpl i } @Override + @Transactional(rollbackFor = Exception.class) public GenerateLikeVO generateLike(GenerateLikeDTO generateLikeDTO) { // 1、判断参数是否正确 // 1.1 必须参数是否非空 @@ -207,6 +210,7 @@ public class GenerateServiceImpl extends ServiceImpl i } @Override + @Transactional(rollbackFor = Exception.class) public Boolean generateDislike(Long generateDetailId, String timeZone) { // 1、确定generateDetail中是否有这条记录 GenerateDetail generateDetail = generateDetailMapper.selectById(generateDetailId); @@ -259,4 +263,23 @@ public class GenerateServiceImpl extends ServiceImpl i generateDetail.setUpdateDate(DateUtil.getByTimeZone(timeZone)); generateDetailMapper.update(generateDetail, queryWrapper); } + + public void updateLikeStatusBatch(List generateDetailIdList, Byte hasLike, Long libraryId, String timeZone){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", generateDetailIdList); + + GenerateDetail generateDetail = new GenerateDetail(); + generateDetail.setIsLike(hasLike); + generateDetail.setLibraryId(libraryId); + generateDetail.setUpdateDate(DateUtil.getByTimeZone(timeZone)); + + generateDetailMapper.update(generateDetail, queryWrapper); + } + + public List selectBatchByLibraryId(List libraryId){ + QueryWrapper qw = new QueryWrapper<>(); + qw.in("library_id",libraryId); + + return generateDetailMapper.selectList(qw); + } } diff --git a/src/main/java/com/ai/da/service/impl/LibraryServiceImpl.java b/src/main/java/com/ai/da/service/impl/LibraryServiceImpl.java index b16a9dd0..bcfe020a 100644 --- a/src/main/java/com/ai/da/service/impl/LibraryServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/LibraryServiceImpl.java @@ -2,7 +2,6 @@ package com.ai.da.service.impl; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.exceptions.ExceptionUtil; -import cn.hutool.system.UserInfo; import com.ai.da.common.config.FileProperties; import com.ai.da.common.config.exception.BusinessException; import com.ai.da.common.context.UserContext; @@ -14,7 +13,6 @@ import com.ai.da.common.utils.DateUtil; import com.ai.da.common.utils.MinioUtil; import com.ai.da.mapper.LibraryMapper; import com.ai.da.mapper.SysFileMapper; -import com.ai.da.mapper.WorkspaceMapper; import com.ai.da.mapper.entity.*; import com.ai.da.model.dto.*; import com.ai.da.model.enums.MannequinType; @@ -22,10 +20,7 @@ import com.ai.da.model.enums.ModelType; import com.ai.da.model.enums.Sex; import com.ai.da.model.vo.*; import com.ai.da.python.vo.ModelPathObject; -import com.ai.da.service.ClassificationService; -import com.ai.da.service.LibraryModelPointService; -import com.ai.da.service.LibraryService; -import com.ai.da.service.WorkspaceService; +import com.ai.da.service.*; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONException; import com.alibaba.fastjson.JSONObject; @@ -39,6 +34,7 @@ import lombok.extern.slf4j.Slf4j; import okhttp3.*; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; @@ -73,6 +69,8 @@ public class LibraryServiceImpl extends ServiceImpl impl @Resource private ClassificationService classificationService; @Resource + private GenerateService generateService; + @Resource private MinioUtil minioUtil; @Value("${minio.bucketName.users}") @@ -339,6 +337,7 @@ public class LibraryServiceImpl extends ServiceImpl impl } @Override + @Transactional(rollbackFor = Exception.class) public void batchDeleteLibrary(LibraryDeleteDTO deleteDTO) { List librarys = libraryMapper.selectBatchIds(deleteDTO.getLibraryIds()); if (CollectionUtils.isEmpty(librarys)) { @@ -360,6 +359,19 @@ public class LibraryServiceImpl extends ServiceImpl impl checkModel(Sex.MALE.getValue(), maleModelIds, deleteDTO.getDeleteModelConfirm()); } libraryMapper.deleteBatchIds(deleteDTO.getLibraryIds()); + + // 1、确定该libraryId是否被generateDetail引用 + List generateDetails = generateService.selectBatchByLibraryId(deleteDTO.getLibraryIds()); + + // 2、有,则更新generateDetail表的is_like字段和library_id字段 + if (!generateDetails.isEmpty()){ + generateService.updateLikeStatusBatch( + generateDetails.stream().map(GenerateDetail::getId).collect(Collectors.toList()), + (byte)0, + 0L, + deleteDTO.getTimeZone() + ); + } // for (Library library : librarys) { // if (library.getUrl().startsWith(sysImage)) { // continue; diff --git a/src/main/resources/messages_en.properties b/src/main/resources/messages_en.properties index 22f3e78f..14e7225d 100644 --- a/src/main/resources/messages_en.properties +++ b/src/main/resources/messages_en.properties @@ -66,7 +66,7 @@ modelType.cannot.be.empty=modelType cannot be empty. modelSex.cannot.be.empty=modelSex cannot be empty. templateId.cannot.be.empty=templateId cannot be empty. processId.cannot.be.empty=processId cannot be empty. -timeZone.cannot.be.empty=timeZone cannot be empty. +timeZone.cannot.be.empty=TimeZone cannot be empty. userId.cannot.be.empty=userId cannot be empty. email.cannot.be.empty=email cannot be empty. operationType.cannot.be.empty=operationType cannot be empty.