diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileFavorite.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileFavorite.java index 4ac9077..db67506 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileFavorite.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileFavorite.java @@ -4,11 +4,17 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.electromagnetic.industry.software.common.enums.EffectFlagEnum; +import com.electromagnetic.industry.software.common.util.EleCommonUtil; +import com.electromagnetic.industry.software.common.util.IdWorker; +import com.electromagnetic.industry.software.common.util.UserThreadLocal; import lombok.Data; +import java.util.Date; + @Data @TableName("ed_file_favorite") -public class EdFileFavorite { +public class EdFileFavorite extends BaseModel{ @TableId(type = IdType.ASSIGN_UUID) private String id; @@ -19,4 +25,15 @@ public class EdFileFavorite { @TableField("file_id") private String fileId; + public void newInit() { + String userId = UserThreadLocal.getUserId(); + String newId = IdWorker.getSnowFlakeIdString(); + Date now = new Date(); + this.setId(newId); + this.setCreatedTime(now); + this.setCreatedBy(userId); + this.setUpdatedTime(now); + this.setUpdatedBy(userId); + this.setEffectFlag(EffectFlagEnum.EFFECT.code); + } } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileFavoriteService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileFavoriteService.java index 95d3310..80069c5 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileFavoriteService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileFavoriteService.java @@ -4,4 +4,13 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.electromagnetic.industry.software.manage.pojo.models.EdFileFavorite; public interface EdFileFavoriteService extends IService { + + /** + * 逻辑删除 + * @param userId + * @param fileId + * @return + */ + public boolean logicRemove (String userId, String fileId); + } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileFavoriteServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileFavoriteServiceImpl.java index 3ebae53..f47b9ae 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileFavoriteServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileFavoriteServiceImpl.java @@ -1,6 +1,10 @@ package com.electromagnetic.industry.software.manage.service.serviceimpl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.electromagnetic.industry.software.common.enums.EffectFlagEnum; import com.electromagnetic.industry.software.manage.mapper.EdFileFavoriteMapper; import com.electromagnetic.industry.software.manage.pojo.models.EdFileFavorite; import com.electromagnetic.industry.software.manage.service.EdFileFavoriteService; @@ -8,4 +12,19 @@ import org.springframework.stereotype.Service; @Service public class EdFileFavoriteServiceImpl extends ServiceImpl implements EdFileFavoriteService { + + /** + * 逻辑删除 + * @param userId + * @param fileId + * @return + */ + public boolean logicRemove (String userId, String fileId) { + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(EdFileFavorite.class) + .eq(EdFileFavorite::getUserId, userId) + .eq(EdFileFavorite::getFileId, fileId) + .set(EdFileFavorite::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code); + return update(updateWrapper); + } + } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java index b70e9a4..d58a287 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java @@ -1615,24 +1615,37 @@ public class EdFileInfoServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(EdFileFavorite::getUserId, userId) - .eq(EdFileFavorite::getFileId, fileId); - if (fileFavoriteService.getOne(queryWrapper) != null) { + EdFileInfo fileInfo = this.baseMapper.selectById(fileId); + // 文件是否有效 + Assert.isTrue(fileInfo != null && fileInfo.getEffectFlag().equals(EffectFlagEnum.EFFECT.code), StrFormatter.format("文件已删除,无法收藏!")); + + EdFileFavorite favorite = fileFavoriteService.getOne( + Wrappers.lambdaQuery() + .eq(EdFileFavorite::getUserId, userId) + .eq(EdFileFavorite::getFileId, fileId) + ); + // 检查是否已存在有效收藏 + if (favorite != null && EffectFlagEnum.EFFECT.code.equals(favorite.getEffectFlag())) { throw new BizException("文件已收藏,无法重复收藏!"); } - // 插入收藏记录 - EdFileFavorite favorite = new EdFileFavorite(); - favorite.setUserId(userId); - favorite.setFileId(fileId); - boolean isSaved = fileFavoriteService.save(favorite); + boolean isSaved; + if (favorite != null) { + favorite.setEffectFlag(EffectFlagEnum.EFFECT.code); + isSaved = fileFavoriteService.updateById(favorite); + } else { + EdFileFavorite fileFavorite = new EdFileFavorite(); + fileFavorite.newInit(); + fileFavorite.setUserId(userId); + fileFavorite.setFileId(fileId); + isSaved = fileFavoriteService.save(fileFavorite); + } + if (isSaved) { - EdFileInfo fileInfo = this.baseMapper.selectById(fileId); - UserThreadLocal.setSuccessInfo(Optional.ofNullable(fileInfo).map(EdFileInfo::getParentId).orElse(""), fileId, StrFormatter.format("收藏了文件")); + UserThreadLocal.setSuccessInfo("", fileId, StrFormatter.format("收藏了文件")); } return isSaved; } @@ -1648,7 +1661,8 @@ public class EdFileInfoServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(EdFileFavorite::getUserId, userId) - .eq(EdFileFavorite::getFileId, fileId); + .eq(EdFileFavorite::getFileId, fileId) + .eq(EdFileFavorite::getEffectFlag, EffectFlagEnum.EFFECT.code); return fileFavoriteService.getOne(queryWrapper) != null; } @@ -1661,10 +1675,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(EdFileFavorite::getUserId, userId) - .eq(EdFileFavorite::getFileId, fileId); - boolean isRemoved = fileFavoriteService.remove(queryWrapper); + boolean isRemoved = fileFavoriteService.logicRemove(userId, fileId); if (isRemoved) { UserThreadLocal.setSuccessInfo("", fileId, StrFormatter.format("取消了收藏")); } @@ -1693,7 +1704,9 @@ public class EdFileInfoServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.select(EdFileFavorite::getFileId).eq(EdFileFavorite::getUserId, userId); + queryWrapper.select(EdFileFavorite::getFileId) + .eq(EdFileFavorite::getUserId, userId) + .eq(EdFileFavorite::getEffectFlag, EffectFlagEnum.EFFECT.code); fileIds = fileFavoriteService.listObjs(queryWrapper, Object::toString); } diff --git a/electromagnetic-common/pom.xml b/electromagnetic-common/pom.xml index bc6e346..39d1e96 100644 --- a/electromagnetic-common/pom.xml +++ b/electromagnetic-common/pom.xml @@ -31,8 +31,8 @@ org.bouncycastle - bcprov-jdk16 - 1.46 + bcprov-jdk18on + 1.77 cn.hutool