提交 575fe717 作者: zgz

编辑专家删除关联关系标签

上级 9f8e25bd
...@@ -300,11 +300,18 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf ...@@ -300,11 +300,18 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
QueryWrapper queryWrapper = new QueryWrapper(); QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("character_uid",characterBasicInfo.getUid()); queryWrapper.eq("character_uid",characterBasicInfo.getUid());
List<CharacterTagMap> targetList = characterTagMapService.list(queryWrapper); List<CharacterTagMap> targetList = characterTagMapService.list(queryWrapper);
syncCharacterTagMaps(sourceList,targetList); List<CharacterTagMap> recordsToDelete = new ArrayList<>();
log.info("编辑专家===开始====targetList数量:{}}",targetList.size()); syncCharacterTagMaps(sourceList,targetList,recordsToDelete);
log.info("编辑专家===开始====targetList数量:{},recordsToDelete数量:{}",targetList.size(),recordsToDelete.size());
if(targetList!=null && targetList.size()>0){ if(targetList!=null && targetList.size()>0){
characterTagMapService.saveOrUpdateBatch(targetList); characterTagMapService.saveOrUpdateBatch(targetList);
} }
if(recordsToDelete!=null && recordsToDelete.size()>0){
List<Long> deletedIds = recordsToDelete.stream()
.map(CharacterTagMap::getId)
.collect(Collectors.toList());
characterTagMapService.removeByIds(deletedIds);
}
} }
}catch (Exception e){ }catch (Exception e){
log.error("编辑专家===主题标签、领域标签关联character_tag_map表失败,异常:{}",e.toString()); log.error("编辑专家===主题标签、领域标签关联character_tag_map表失败,异常:{}",e.toString());
...@@ -357,12 +364,18 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf ...@@ -357,12 +364,18 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
} }
public static void syncCharacterTagMaps(List<CharacterTagMap> source, List<CharacterTagMap> target) { public static void syncCharacterTagMaps(List<CharacterTagMap> source, List<CharacterTagMap> target,List<CharacterTagMap> recordsToDelete) {
// 1. 将source集合转换为以tagId为键的Map,便于快速查找 // 1. 将source集合转换为以tagId为键的Map,便于快速查找
Map<String, CharacterTagMap> sourceMap = source.stream() Map<String, CharacterTagMap> sourceMap = source.stream()
.collect(Collectors.toMap(CharacterTagMap::getTagId, item -> item)); .collect(Collectors.toMap(CharacterTagMap::getTagId, item -> item));
// 2. 遍历target集合,删除source中不存在的记录 // 2. 遍历target集合,删除source中不存在的记录
target.removeIf(item -> !sourceMap.containsKey(item.getTagId())); target.removeIf(item -> !sourceMap.containsKey(item.getTagId()));
// 找出target中source不存在的记录(即需要删除的记录)
for (CharacterTagMap item : target) {
if (!sourceMap.containsKey(item.getTagId())) {
recordsToDelete.add(item);
}
}
// 3. 遍历source集合,将target中不存在的记录添加进去 // 3. 遍历source集合,将target中不存在的记录添加进去
for (CharacterTagMap item : source) { for (CharacterTagMap item : source) {
boolean exists = target.stream() boolean exists = target.stream()
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论