Explorar o código

质检合同段节点取消收藏,取消该节点下的同收藏夹里的所有收藏节点

lvy hai 1 semana
pai
achega
6f386b5a69

+ 19 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractCollectFolderServiceImpl.java

@@ -19,10 +19,12 @@ import org.springblade.manager.vo.ContractCollectFolderVO;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
+import java.util.concurrent.CompletableFuture;
 import java.util.stream.Collectors;
 
 @Service
@@ -53,10 +55,10 @@ public class ContractCollectFolderServiceImpl extends ServiceImpl<ContractCollec
     public Boolean deleteFolder(Long id) {
         ContractCollectFolder entity = this.getById(id);
         if (entity != null) {
+            deletedCache(entity.getContractId());
             boolean b = this.removeById(id);
             if (b) {
                 this.remove(Wrappers.<ContractCollectFolder>lambdaQuery().eq(ContractCollectFolder::getParentId, id).eq(ContractCollectFolder::getType, 1).eq(ContractCollectFolder::getContractId, entity.getContractId()));
-                redisTemplate.delete("blade-manager::contract:collectFolder:" + entity.getContractId());
             }
             return b;
         }
@@ -73,7 +75,7 @@ public class ContractCollectFolderServiceImpl extends ServiceImpl<ContractCollec
         if (count > 0) {
             throw new ServiceException("收藏夹名称重复");
         }
-        redisTemplate.delete("blade-manager::contract:collectFolder:" + vo.getContractId());
+        deletedCache(vo.getContractId());
         if (vo.getId() == null) {
             ContractCollectFolder entity = new ContractCollectFolder();
             entity.setContractId(vo.getContractId());
@@ -97,12 +99,14 @@ public class ContractCollectFolderServiceImpl extends ServiceImpl<ContractCollec
             throw new ServiceException("节点不存在或者已被删除");
         }
         ContractCollectFolder node = this.getOne(Wrappers.<ContractCollectFolder>lambdaQuery().eq(ContractCollectFolder::getNodeId, vo.getNodeId()).eq(ContractCollectFolder::getType, 1).eq(ContractCollectFolder::getContractId, vo.getContractId()));
+        deletedCache(vo.getContractId());
         if (vo.getType() == 0) {
             // 取消
             if (node == null) {
                 return true;
             }
-            this.removeById(node.getId());
+            this.remove(Wrappers.<ContractCollectFolder>lambdaQuery().eq(ContractCollectFolder::getParentId, node.getParentId())
+                    .eq(ContractCollectFolder::getType, 1).eq(ContractCollectFolder::getContractId, vo.getContractId()).likeRight(ContractCollectFolder::getNodeAncestors, node.getNodeAncestors()));
         } else if (vo.getType() == 1) {
             ContractCollectFolder collectFolder = this.getById(vo.getId());
             if (collectFolder == null) {
@@ -133,14 +137,12 @@ public class ContractCollectFolderServiceImpl extends ServiceImpl<ContractCollec
                     node1.setParentId(vo.getId());
                     nodes.add(node1);
                 }
-                redisTemplate.delete("blade-manager::contract:collectFolder:" + vo.getContractId());
                 return this.saveBatch(nodes);
             }
             ContractCollectFolder folder = this.getById(node.getParentId());
             if (folder != null) {
                 throw new ServiceException("该节点已被【 "+ folder.getFolderName() +" 】收藏");
             }
-            redisTemplate.delete("blade-manager::contract:collectFolder:" + vo.getContractId());
             return this.update(Wrappers.<ContractCollectFolder>lambdaUpdate().set(ContractCollectFolder::getParentId, vo.getId())
                     .eq(ContractCollectFolder::getId, node.getId()));
         }
@@ -184,4 +186,16 @@ public class ContractCollectFolderServiceImpl extends ServiceImpl<ContractCollec
         Set<Long> ids = list.stream().map(WbsTreeContract::getPKeyId).collect(Collectors.toSet());
         getAllChildren(ids, childrenList);
     }
+    public void deletedCache(Long contractId) {
+        CompletableFuture.runAsync(() -> {
+            redisTemplate.delete("blade-manager::contract:collectFolder:" + contractId);
+            try {
+                Thread.sleep(5000);
+                redisTemplate.delete("blade-manager::contract:collectFolder:" + contractId);
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+                redisTemplate.delete("blade-manager::contract:collectFolder:" + contractId);
+            }
+        });
+    }
 }