diff --git a/src/main/java/com/ai/da/controller/GenerateController.java b/src/main/java/com/ai/da/controller/GenerateController.java index c4ed674c..2e6a2700 100644 --- a/src/main/java/com/ai/da/controller/GenerateController.java +++ b/src/main/java/com/ai/da/controller/GenerateController.java @@ -46,4 +46,10 @@ public class GenerateController { return Response.success(generateService.generateLike(generateLikeDTO)); } + @ApiOperation(value = "取消喜欢") + @PostMapping("/dislike") + public Response dislike(@RequestParam Long generateDetailId,String timeZone) { + return Response.success(generateService.generateDislike(generateDetailId,timeZone)); + } + } diff --git a/src/main/java/com/ai/da/mapper/entity/GenerateDetail.java b/src/main/java/com/ai/da/mapper/entity/GenerateDetail.java index 224ef2bf..dcdf3a58 100644 --- a/src/main/java/com/ai/da/mapper/entity/GenerateDetail.java +++ b/src/main/java/com/ai/da/mapper/entity/GenerateDetail.java @@ -37,6 +37,11 @@ public class GenerateDetail { */ private Byte isLike; + /** + * 喜欢的图片添加到library对应的id + */ + private Long libraryId; + /** * 创建时间 */ diff --git a/src/main/java/com/ai/da/service/GenerateService.java b/src/main/java/com/ai/da/service/GenerateService.java index 454f5df8..11958e1f 100644 --- a/src/main/java/com/ai/da/service/GenerateService.java +++ b/src/main/java/com/ai/da/service/GenerateService.java @@ -13,4 +13,6 @@ public interface GenerateService { GenerateCollectionVO generateThroughImageText(GenerateThroughImageTextDTO generateThroughImageTextDTO); GenerateLikeVO generateLike(GenerateLikeDTO generateLikeDTO); + + Boolean generateDislike(Long generateDetailId,String timeZone); } diff --git a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java index 73022b0a..27f2dfb2 100644 --- a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java @@ -153,17 +153,44 @@ public class GenerateServiceImpl extends ServiceImpl im Assert.isTrue(generateLikeDTO.getLevel1Type().equals(generate.getLevel1Type()),"level1Type does not match"); // 2、将like的图片信息存入library + // 2.1、不能重复喜欢 + Library libraryDetail = libraryService.getById(generateDetail.getLibraryId()); + Assert.isTrue(Objects.isNull(generateDetail.getLibraryId()) || Objects.isNull(libraryDetail), + "Duplicate likes are not allowed"); + // 2.2、添加到library AuthPrincipalVo userInfo = UserContext.getUserHolder(); Long accountId = userInfo.getId(); Library library = setLibrary(accountId, generateLikeDTO, generateDetail.getUrl()); libraryService.save(library); - // 3、更新generateDetail表的isLike列 - updateLikeStatus(generateLikeDTO.getGenerateDetailId(),(byte)1); + // 3、更新generateDetail表的isLike列和libraryId列 + updateLikeStatus(generateLikeDTO.getGenerateDetailId(),(byte)1,library.getId(),generateLikeDTO.getTimeZone()); return new GenerateLikeVO(library.getId()); } + @Override + public Boolean generateDislike(Long generateDetailId, String timeZone) { + // 1、确定generateDetail中是否有这条记录 + GenerateDetail generateDetail = generateDetailMapper.selectById(generateDetailId); + Assert.notNull(generateDetail,"generateItem does not exist"); + + // 2、修改generateDetail表中的isLike、libraryId字段 + updateLikeStatus(generateDetailId,(byte)0,0L,timeZone); + + // 3、确定library中是否添加该条记录 + Library libraryDetail = libraryService.getById(generateDetail.getLibraryId()); + if (Objects.isNull(libraryDetail)){ + return Boolean.TRUE; + } + + // 4、删除library相关记录 + libraryService.removeById(libraryDetail.getId()); + + // 5、返回成功 + return Boolean.TRUE; + } + public Library setLibrary(Long accountId,GenerateLikeDTO generateLikeDTO,String imageUrl){ Library library = new Library(); library.setAccountId(accountId); @@ -176,12 +203,14 @@ public class GenerateServiceImpl extends ServiceImpl im return library; } - public void updateLikeStatus(Long generateDetailId,Byte hasLike){ + public void updateLikeStatus(Long generateDetailId,Byte hasLike,Long libraryId,String timeZone){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("id", generateDetailId); GenerateDetail generateDetail = new GenerateDetail(); generateDetail.setIsLike(hasLike); + generateDetail.setLibraryId(libraryId); + generateDetail.setUpdateDate(DateUtil.getByTimeZone(timeZone)); generateDetailMapper.update(generateDetail,queryWrapper); } } 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 9672e3c4..8b28ae9c 100644 --- a/src/main/java/com/ai/da/service/impl/LibraryServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/LibraryServiceImpl.java @@ -5,25 +5,21 @@ import com.ai.da.common.config.exception.BusinessException; import com.ai.da.common.context.UserContext; import com.ai.da.common.enums.*; import com.ai.da.common.response.PageBaseResponse; -import com.ai.da.common.response.Response; import com.ai.da.common.utils.CopyUtil; import com.ai.da.common.utils.DateUtil; import com.ai.da.common.utils.FileUtil; -import com.ai.da.mapper.CollectionElementMapper; +import com.ai.da.common.utils.MinioUtil; import com.ai.da.mapper.LibraryMapper; -import com.ai.da.mapper.UserLikeMapper; import com.ai.da.mapper.entity.*; import com.ai.da.model.dto.*; import com.ai.da.model.vo.*; import com.ai.da.service.LibraryModelPointService; import com.ai.da.service.LibraryService; -import com.ai.da.service.UserLikeService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.base.Function; -import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.util.Assert; @@ -50,6 +46,8 @@ public class LibraryServiceImpl extends ServiceImpl impl private FileProperties fileProperties; @Resource private LibraryModelPointService libraryModelPointService; + @Resource + private MinioUtil minioUtil; private static List top = Arrays.asList(CollectionLevel2TypeEnum.DRESS.getRealName(), CollectionLevel2TypeEnum.OUTWEAR.getRealName(),CollectionLevel2TypeEnum.BLOUSE.getRealName()); @@ -122,6 +120,9 @@ public class LibraryServiceImpl extends ServiceImpl impl IPage convert = page.convert((Function) library -> { QueryLibraryPageVO libraryPageVO = CopyUtil.copyObject(library,QueryLibraryPageVO.class); libraryPageVO.setDesignType(DesignTypeEnum.LIBRARY.getRealName()); + if (library.getUrl().startsWith("aida")){ + libraryPageVO.setUrl(minioUtil.splitThenGetPreviewUrl(library.getUrl(),480)); + } if(finalMap != null && finalMap.containsKey(library.getId())){ libraryPageVO.setLibraryModelPoint(finalMap.get(library.getId())); }