Skip to content

Commit 4e02da2

Browse files
committed
扩展文章搜索功能
1 parent c305019 commit 4e02da2

File tree

4 files changed

+30
-17
lines changed

4 files changed

+30
-17
lines changed

src/LinCms.Application.Contracts/Blog/Articles/ArticleSearchDto.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public class ArticleSearchDto : PageDto
1212
public Guid? ChannelId { get; set; }
1313
public Guid? TagId { get; set; }
1414
public string Title { get; set; }
15+
public Guid? ArticleId { get; set; }
1516
public long? UserId { get; set; }
1617

1718
/// <summary>

src/LinCms.Application.Contracts/Blog/Articles/IArticleService.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ public interface IArticleService
1919
Task<ArticleDto> GetAsync(Guid id);
2020
#endregion
2121

22+
23+
Task<PagedResultDto<ArticleListDto>> GetAllArticleAsync(ArticleSearchDto searchDto);
24+
2225
/// <summary>
2326
/// 得到我关注的人发布的随笔
2427
/// </summary>

src/LinCms.Application/Blog/Articles/ArticleService.cs

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using IGeekFan.FreeKit.Extras.Dto;
1+
using AutoMapper;
2+
using IGeekFan.FreeKit.Extras.Dto;
23
using IGeekFan.FreeKit.Extras.FreeSql;
34
using LinCms.Blog.Classifys;
45
using LinCms.Blog.UserSubscribes;
@@ -10,6 +11,7 @@
1011
using LinCms.Extensions;
1112
using LinCms.IRepositories;
1213
using LinCms.Security;
14+
using Microsoft.AspNetCore.Mvc;
1315
using System;
1416
using System.Collections.Generic;
1517
using System.Linq;
@@ -126,7 +128,7 @@ public async Task DeleteAsync(Guid id)
126128
}
127129
}
128130

129-
await articleRepository.DeleteAsync(new Article {Id = id});
131+
await articleRepository.DeleteAsync(new Article { Id = id });
130132
await tagArticleRepository.DeleteAsync(r => r.ArticleId == id);
131133
await commentRepository.DeleteAsync(r => r.SubjectId == id);
132134
await userLikeRepository.DeleteAsync(r => r.SubjectId == id);
@@ -175,7 +177,7 @@ public async Task<Guid> CreateAsync(CreateUpdateArticleDto createArticle)
175177
Article article = Mapper.Map<Article>(createArticle);
176178
article.Archive = DateTime.Now.ToString("yyy年MM月");
177179
article.WordNumber = createArticle.Content.Length;
178-
article.ReadingTime = (long) TextAnalysisUtil.GetReadingTime(createArticle.Content).Minutes;
180+
article.ReadingTime = (long)TextAnalysisUtil.GetReadingTime(createArticle.Content).Minutes;
179181

180182
article.Tags = new List<Tag>();
181183
foreach (var articleTagId in createArticle.TagIds)
@@ -224,7 +226,7 @@ public async Task UpdateAsync(Guid id, CreateUpdateArticleDto updateArticleDto)
224226

225227
Mapper.Map(updateArticleDto, article);
226228
article.WordNumber = article.Content.Length;
227-
article.ReadingTime = (long) TextAnalysisUtil.GetReadingTime(article.Content).Minutes;
229+
article.ReadingTime = (long)TextAnalysisUtil.GetReadingTime(article.Content).Minutes;
228230
await articleRepository.UpdateAsync(article);
229231

230232
ArticleDraft articleDraft = Mapper.Map<ArticleDraft>(article);
@@ -243,6 +245,22 @@ public async Task UpdateAsync(Guid id, CreateUpdateArticleDto updateArticleDto)
243245

244246
#endregion
245247

248+
249+
public async Task<PagedResultDto<ArticleListDto>> GetAllArticleAsync(ArticleSearchDto searchDto)
250+
{
251+
var articles = (await articleRepository
252+
.Select
253+
.WhereCascade(r => r.IsDeleted == false)
254+
.WhereIf(searchDto.ArticleId.HasValue, r => r.Id == searchDto.ArticleId)
255+
.WhereIf(searchDto.Title.IsNotNullOrEmpty(), r => r.Title.Contains(searchDto.Title))
256+
.OrderByDescending(r => r.CreateTime)
257+
.ToPagerListAsync(searchDto, out long totalCount))
258+
.Select(a => Mapper.Map<ArticleListDto>(a))
259+
.ToList();
260+
261+
return new PagedResultDto<ArticleListDto>(articles, totalCount);
262+
}
263+
246264
/// <summary>
247265
/// 随笔选择多个标签
248266
/// </summary>

src/LinCms.Web/Controllers/Blog/ArticleController.cs

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@ namespace LinCms.Controllers.Blog;
2929
[ApiController]
3030
[Authorize]
3131
public class ArticleController(
32-
IAuditBaseRepository<Article> articleRepository,
32+
IAuditBaseRepository<Article> articleRepository,
3333
IMapper mapper,
3434
ICurrentUser currentUser,
35-
IArticleService articleService,
35+
IArticleService articleService,
3636
IRedisClient redisClient)
3737
: ControllerBase
3838
{
@@ -159,18 +159,9 @@ public async Task<UnifyResponseDto> UpdateAsync(Guid id, [FromBody] CreateUpdate
159159
/// <returns></returns>
160160
[HttpGet("all")]
161161
[LinCmsAuthorize("所有随笔", "随笔")]
162-
public PagedResultDto<ArticleListDto> GetAllArticles([FromQuery] ArticleSearchDto searchDto)
162+
public async Task<PagedResultDto<ArticleListDto>> GetAllArticleAsync([FromQuery] ArticleSearchDto searchDto)
163163
{
164-
var articles = articleRepository
165-
.Select
166-
.WhereCascade(r => r.IsDeleted == false)
167-
.WhereIf(searchDto.Title.IsNotNullOrEmpty(), r => r.Title.Contains(searchDto.Title))
168-
.OrderByDescending(r => r.CreateTime)
169-
.ToPagerList(searchDto, out long totalCount)
170-
.Select(a => mapper.Map<ArticleListDto>(a))
171-
.ToList();
172-
173-
return new PagedResultDto<ArticleListDto>(articles, totalCount);
164+
return await articleService.GetAllArticleAsync(searchDto);
174165
}
175166

176167
/// <summary>

0 commit comments

Comments
 (0)