|
@@ -31,16 +31,23 @@ public class ArticleInfoService extends ServiceImpl<ArticleInfoMapper, ArticleIn
|
|
|
|
|
|
public List<Integer> addArticles(List<ArticleInfoDTO> articleInfoDTOS) {
|
|
public List<Integer> addArticles(List<ArticleInfoDTO> articleInfoDTOS) {
|
|
List<Integer> ids = new ArrayList<>();
|
|
List<Integer> ids = new ArrayList<>();
|
|
|
|
+
|
|
if (articleInfoDTOS != null && !articleInfoDTOS.isEmpty()) {
|
|
if (articleInfoDTOS != null && !articleInfoDTOS.isEmpty()) {
|
|
- List<ArticleInfo> articleInfos = new ArrayList<>();
|
|
|
|
- for (ArticleInfoDTO articleInfoDTO : articleInfoDTOS) {
|
|
|
|
- String title = articleInfoDTO.getTitle();
|
|
|
|
- if (!isArticleExists(title)) {
|
|
|
|
- ArticleInfo articleInfo = new ArticleInfo();
|
|
|
|
- BeanUtils.copyProperties(articleInfoDTO, articleInfo);
|
|
|
|
- articleInfos.add(articleInfo);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ List<String> titles = articleInfoDTOS.stream()
|
|
|
|
+ .map(ArticleInfoDTO::getTitle)
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ List<ArticleInfo> existingArticles = getExistingArticles(titles);
|
|
|
|
+
|
|
|
|
+ List<ArticleInfo> articleInfos = articleInfoDTOS.stream()
|
|
|
|
+ .filter(dto -> !isArticleExists(existingArticles, dto.getTitle()))
|
|
|
|
+ .map(articleInfoDTO -> {
|
|
|
|
+ ArticleInfo articleInfo = new ArticleInfo();
|
|
|
|
+ BeanUtils.copyProperties(articleInfoDTO, articleInfo);
|
|
|
|
+ return articleInfo;
|
|
|
|
+ })
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+
|
|
if (!articleInfos.isEmpty()) {
|
|
if (!articleInfos.isEmpty()) {
|
|
this.saveBatch(articleInfos);
|
|
this.saveBatch(articleInfos);
|
|
ids = articleInfos.stream().map(ArticleInfo::getId).collect(Collectors.toList());
|
|
ids = articleInfos.stream().map(ArticleInfo::getId).collect(Collectors.toList());
|
|
@@ -67,24 +74,36 @@ public class ArticleInfoService extends ServiceImpl<ArticleInfoMapper, ArticleIn
|
|
// return articleInfos.stream().map(ArticleInfo::getId).collect(Collectors.toList());
|
|
// return articleInfos.stream().map(ArticleInfo::getId).collect(Collectors.toList());
|
|
// }
|
|
// }
|
|
|
|
|
|
- private boolean isArticleExists(String title) {
|
|
|
|
- // 添加查询数据库检查是否已存在相同数据的逻辑,返回 true 表示已存在,false 表示不存在
|
|
|
|
- // 这里假设是 ArticleService 中的一个方法来检查文章是否已经存在
|
|
|
|
- if (title == null || title.isEmpty()) {
|
|
|
|
- // 可以抛出异常或者返回 false,视情况而定
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
- try {
|
|
|
|
- LambdaQueryWrapper<ArticleInfo> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
- queryWrapper.eq(ArticleInfo::getTitle, title);
|
|
|
|
- // 使用 selectOne 进行查询,只关心是否存在记录
|
|
|
|
- ArticleInfo article = this.getOne(queryWrapper, false);
|
|
|
|
- return article != null;
|
|
|
|
- } catch (Exception e) {
|
|
|
|
- // 日志记录或其他处理方式
|
|
|
|
- e.printStackTrace();
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
|
|
+// private boolean isArticleExists(String title) {
|
|
|
|
+// // 添加查询数据库检查是否已存在相同数据的逻辑,返回 true 表示已存在,false 表示不存在
|
|
|
|
+// // 这里假设是 ArticleService 中的一个方法来检查文章是否已经存在
|
|
|
|
+// if (title == null || title.isEmpty()) {
|
|
|
|
+// // 可以抛出异常或者返回 false,视情况而定
|
|
|
|
+// return false;
|
|
|
|
+// }
|
|
|
|
+// try {
|
|
|
|
+// LambdaQueryWrapper<ArticleInfo> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
+// queryWrapper.eq(ArticleInfo::getTitle, title);
|
|
|
|
+// // 使用 selectOne 进行查询,只关心是否存在记录
|
|
|
|
+// ArticleInfo article = this.getOne(queryWrapper, false);
|
|
|
|
+// return article != null;
|
|
|
|
+// } catch (Exception e) {
|
|
|
|
+// // 日志记录或其他处理方式
|
|
|
|
+// e.printStackTrace();
|
|
|
|
+// return false;
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+
|
|
|
|
+ private List<ArticleInfo> getExistingArticles(List<String> titles) {
|
|
|
|
+ // 批量查询数据库中是否已存在对应标题的文章,并返回列表
|
|
|
|
+ LambdaQueryWrapper<ArticleInfo> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
+ queryWrapper.in(ArticleInfo::getTitle, titles);
|
|
|
|
+ return this.list(queryWrapper);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private boolean isArticleExists(List<ArticleInfo> existingArticles, String title) {
|
|
|
|
+ // 判断标题是否在已有文章列表中存在
|
|
|
|
+ return existingArticles.stream().anyMatch(article -> article.getTitle().equals(title));
|
|
}
|
|
}
|
|
|
|
|
|
public List<ArticleDataVO> getArticles() {
|
|
public List<ArticleDataVO> getArticles() {
|