|
@@ -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);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|