懒得勤快 4 years ago
parent
commit
d7fca357ef

+ 1 - 1
src/Masuit.MyBlogs.Core/Configs/MappingProfile.cs

@@ -18,7 +18,7 @@ namespace Masuit.MyBlogs.Core.Configs
         public MappingProfile()
         public MappingProfile()
         {
         {
             CreateMap<Category, CategoryCommand>().ReverseMap();
             CreateMap<Category, CategoryCommand>().ReverseMap();
-            CreateMap<Category, CategoryDto>().ForMember(c => c.TotalPostCount, e => e.MapFrom(c => c.Post.Count)).ForMember(c => c.PendedPostCount, e => e.MapFrom(c => c.Post.Count)).ReverseMap();
+            CreateMap<Category, CategoryDto>().ForMember(c => c.TotalPostCount, e => e.MapFrom(c => c.Post.Count)).ForMember(c => c.PendedPostCount, e => e.MapFrom(c => c.Post.Count(p => p.Status == Status.Published))).ReverseMap();
             CreateMap<CategoryCommand, CategoryDto>().ReverseMap();
             CreateMap<CategoryCommand, CategoryDto>().ReverseMap();
 
 
             CreateMap<CommentCommand, Comment>().ForMember(c => c.Status, e => e.MapFrom(c => Status.Pending)).ReverseMap();
             CreateMap<CommentCommand, Comment>().ForMember(c => c.Status, e => e.MapFrom(c => Status.Pending)).ReverseMap();

+ 3 - 0
src/Masuit.MyBlogs.Core/Controllers/CategoryController.cs

@@ -49,6 +49,7 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// </summary>
         /// </summary>
         /// <param name="model"></param>
         /// <param name="model"></param>
         /// <returns></returns>
         /// <returns></returns>
+        [MyAuthorize]
         public async Task<ActionResult> Add(Category model)
         public async Task<ActionResult> Add(Category model)
         {
         {
             bool exist = CategoryService.Any(c => c.Name.Equals(model.Name));
             bool exist = CategoryService.Any(c => c.Name.Equals(model.Name));
@@ -70,6 +71,7 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// </summary>
         /// </summary>
         /// <param name="dto"></param>
         /// <param name="dto"></param>
         /// <returns></returns>
         /// <returns></returns>
+        [MyAuthorize]
         public async Task<ActionResult> Edit(CategoryCommand dto)
         public async Task<ActionResult> Edit(CategoryCommand dto)
         {
         {
             var cat = await CategoryService.GetByIdAsync(dto.Id) ?? throw new NotFoundException("分类不存在!");
             var cat = await CategoryService.GetByIdAsync(dto.Id) ?? throw new NotFoundException("分类不存在!");
@@ -85,6 +87,7 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// <param name="id"></param>
         /// <param name="id"></param>
         /// <param name="cid"></param>
         /// <param name="cid"></param>
         /// <returns></returns>
         /// <returns></returns>
+        [MyAuthorize]
         public async Task<ActionResult> Delete(int id, int cid = 1)
         public async Task<ActionResult> Delete(int id, int cid = 1)
         {
         {
             bool b = await CategoryService.Delete(id, cid);
             bool b = await CategoryService.Delete(id, cid);

+ 7 - 7
src/Masuit.MyBlogs.Core/Controllers/HomeController.cs

@@ -61,7 +61,7 @@ namespace Masuit.MyBlogs.Core.Controllers
         {
         {
             var banners = AdsService.GetsByWeightedPrice(8, AdvertiseType.Banner).OrderBy(a => Guid.NewGuid()).ToList();
             var banners = AdsService.GetsByWeightedPrice(8, AdvertiseType.Banner).OrderBy(a => Guid.NewGuid()).ToList();
             var fastShares = await FastShareService.GetAllFromCacheAsync(s => s.Sort);
             var fastShares = await FastShareService.GetAllFromCacheAsync(s => s.Sort);
-            var postsQuery = PostService.GetQuery<PostDto>(p => (p.Status == Status.Published || CurrentUser.IsAdmin)); //准备文章的查询
+            var postsQuery = PostService.GetQuery<PostDto>(p => p.Status == Status.Published); //准备文章的查询
             var posts = await postsQuery.Where(p => !p.IsFixedTop).OrderBy(OrderBy.ModifyDate.GetDisplay() + " desc").ToCachedPagedListAsync(1, 15);
             var posts = await postsQuery.Where(p => !p.IsFixedTop).OrderBy(OrderBy.ModifyDate.GetDisplay() + " desc").ToCachedPagedListAsync(1, 15);
             posts.Data.InsertRange(0, postsQuery.Where(p => p.IsFixedTop).OrderByDescending(p => p.ModifyDate).ToList());
             posts.Data.InsertRange(0, postsQuery.Where(p => p.IsFixedTop).OrderByDescending(p => p.ModifyDate).ToList());
             CheckPermission(posts);
             CheckPermission(posts);
@@ -86,7 +86,7 @@ namespace Masuit.MyBlogs.Core.Controllers
         public async Task<ActionResult> Post([Optional] OrderBy? orderBy, [Range(1, int.MaxValue, ErrorMessage = "页码必须大于0")] int page = 1, [Range(1, 50, ErrorMessage = "页大小必须在0到50之间")] int size = 15)
         public async Task<ActionResult> Post([Optional] OrderBy? orderBy, [Range(1, int.MaxValue, ErrorMessage = "页码必须大于0")] int page = 1, [Range(1, 50, ErrorMessage = "页大小必须在0到50之间")] int size = 15)
         {
         {
             var viewModel = await GetIndexPageViewModel();
             var viewModel = await GetIndexPageViewModel();
-            var postsQuery = PostService.GetQuery<PostDto>(p => (p.Status == Status.Published || CurrentUser.IsAdmin)); //准备文章的查询
+            var postsQuery = PostService.GetQuery<PostDto>(p => p.Status == Status.Published); //准备文章的查询
             var posts = await postsQuery.Where(p => !p.IsFixedTop).OrderBy((orderBy ?? OrderBy.ModifyDate).GetDisplay() + " desc").ToCachedPagedListAsync(page, size);
             var posts = await postsQuery.Where(p => !p.IsFixedTop).OrderBy((orderBy ?? OrderBy.ModifyDate).GetDisplay() + " desc").ToCachedPagedListAsync(page, size);
             if (page == 1)
             if (page == 1)
             {
             {
@@ -112,7 +112,7 @@ namespace Masuit.MyBlogs.Core.Controllers
         [Route("tag/{id}"), ResponseCache(Duration = 600, VaryByQueryKeys = new[] { "page", "size", "orderBy" }, VaryByHeader = "Cookie")]
         [Route("tag/{id}"), ResponseCache(Duration = 600, VaryByQueryKeys = new[] { "page", "size", "orderBy" }, VaryByHeader = "Cookie")]
         public async Task<ActionResult> Tag(string id, [Optional] OrderBy? orderBy, [Range(1, int.MaxValue, ErrorMessage = "页码必须大于0")] int page = 1, [Range(1, 50, ErrorMessage = "页大小必须在0到50之间")] int size = 15)
         public async Task<ActionResult> Tag(string id, [Optional] OrderBy? orderBy, [Range(1, int.MaxValue, ErrorMessage = "页码必须大于0")] int page = 1, [Range(1, 50, ErrorMessage = "页大小必须在0到50之间")] int size = 15)
         {
         {
-            var posts = await PostService.GetQuery<PostDto>(p => p.Label.Contains(id) && (p.Status == Status.Published || CurrentUser.IsAdmin)).OrderBy($"{nameof(PostDto.IsFixedTop)} desc,{(orderBy ?? OrderBy.ModifyDate).GetDisplay()} desc").ToCachedPagedListAsync(page, size);
+            var posts = await PostService.GetQuery<PostDto>(p => p.Label.Contains(id) && p.Status == Status.Published).OrderBy($"{nameof(PostDto.IsFixedTop)} desc,{(orderBy ?? OrderBy.ModifyDate).GetDisplay()} desc").ToCachedPagedListAsync(page, size);
             CheckPermission(posts);
             CheckPermission(posts);
             var viewModel = await GetIndexPageViewModel();
             var viewModel = await GetIndexPageViewModel();
             ViewBag.Tag = id;
             ViewBag.Tag = id;
@@ -135,7 +135,7 @@ namespace Masuit.MyBlogs.Core.Controllers
         public async Task<ActionResult> Author(string author, [Optional] OrderBy? orderBy, [Range(1, int.MaxValue, ErrorMessage = "页码必须大于0")] int page = 1, [Range(1, 50, ErrorMessage = "页大小必须在0到50之间")] int size = 15)
         public async Task<ActionResult> Author(string author, [Optional] OrderBy? orderBy, [Range(1, int.MaxValue, ErrorMessage = "页码必须大于0")] int page = 1, [Range(1, 50, ErrorMessage = "页大小必须在0到50之间")] int size = 15)
         {
         {
             Expression<Func<Post, bool>> where = p => p.Author.Equals(author) || p.Modifier.Equals(author) || p.Email.Equals(author) || p.PostHistoryVersion.Any(v => v.Modifier.Equals(author) || v.ModifierEmail.Equals(author));
             Expression<Func<Post, bool>> where = p => p.Author.Equals(author) || p.Modifier.Equals(author) || p.Email.Equals(author) || p.PostHistoryVersion.Any(v => v.Modifier.Equals(author) || v.ModifierEmail.Equals(author));
-            where = where.And(p => p.Status == Status.Published || CurrentUser.IsAdmin);
+            where = where.And(p => p.Status == Status.Published);
             var posts = PostService.GetQuery<PostDto>(where).OrderBy($"{nameof(PostDto.IsFixedTop)} desc,{(orderBy ?? OrderBy.ModifyDate).GetDisplay()} desc").ToCachedPagedList(page, size);
             var posts = PostService.GetQuery<PostDto>(where).OrderBy($"{nameof(PostDto.IsFixedTop)} desc,{(orderBy ?? OrderBy.ModifyDate).GetDisplay()} desc").ToCachedPagedList(page, size);
             CheckPermission(posts);
             CheckPermission(posts);
             var viewModel = await GetIndexPageViewModel();
             var viewModel = await GetIndexPageViewModel();
@@ -160,7 +160,7 @@ namespace Masuit.MyBlogs.Core.Controllers
         public async Task<ActionResult> Category(int id, [Optional] OrderBy? orderBy, [Range(1, int.MaxValue, ErrorMessage = "页码必须大于0")] int page = 1, [Range(1, 50, ErrorMessage = "页大小必须在0到50之间")] int size = 15)
         public async Task<ActionResult> Category(int id, [Optional] OrderBy? orderBy, [Range(1, int.MaxValue, ErrorMessage = "页码必须大于0")] int page = 1, [Range(1, 50, ErrorMessage = "页大小必须在0到50之间")] int size = 15)
         {
         {
             var cat = await CategoryService.GetByIdAsync(id) ?? throw new NotFoundException("文章分类未找到");
             var cat = await CategoryService.GetByIdAsync(id) ?? throw new NotFoundException("文章分类未找到");
-            var posts = PostService.GetQuery<PostDto>(p => p.CategoryId == cat.Id && (p.Status == Status.Published || CurrentUser.IsAdmin)).OrderBy($"{nameof(PostDto.IsFixedTop)} desc,{(orderBy ?? OrderBy.ModifyDate).GetDisplay()} desc").ToCachedPagedList(page, size);
+            var posts = PostService.GetQuery<PostDto>(p => p.CategoryId == cat.Id && p.Status == Status.Published).OrderBy($"{nameof(PostDto.IsFixedTop)} desc,{(orderBy ?? OrderBy.ModifyDate).GetDisplay()} desc").ToCachedPagedList(page, size);
             CheckPermission(posts);
             CheckPermission(posts);
             var viewModel = await GetIndexPageViewModel();
             var viewModel = await GetIndexPageViewModel();
             viewModel.Posts = posts;
             viewModel.Posts = posts;
@@ -224,8 +224,8 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// <returns></returns>
         /// <returns></returns>
         private async Task<HomePageViewModel> GetIndexPageViewModel()
         private async Task<HomePageViewModel> GetIndexPageViewModel()
         {
         {
-            var postsQuery = PostService.GetQuery<PostDto>(p => (p.Status == Status.Published || CurrentUser.IsAdmin)); //准备文章的查询
-            var notices = await NoticeService.GetPagesFromCacheAsync<DateTime, NoticeDto>(1, 5, n => (n.Status == Status.Display || CurrentUser.IsAdmin), n => n.ModifyDate, false); //加载前5条公告
+            var postsQuery = PostService.GetQuery<PostDto>(p => p.Status == Status.Published); //准备文章的查询
+            var notices = await NoticeService.GetPagesFromCacheAsync<DateTime, NoticeDto>(1, 5, n => n.Status == Status.Display, n => n.ModifyDate, false); //加载前5条公告
             var cats = await CategoryService.GetQueryFromCacheAsync<string, CategoryDto>(c => c.Status == Status.Available, c => c.Name); //加载分类目录
             var cats = await CategoryService.GetQueryFromCacheAsync<string, CategoryDto>(c => c.Status == Status.Available, c => c.Name); //加载分类目录
             var hotSearches = RedisHelper.Get<List<KeywordsRank>>("SearchRank:Week").Take(10).ToList(); //热词统计
             var hotSearches = RedisHelper.Get<List<KeywordsRank>>("SearchRank:Week").Take(10).ToList(); //热词统计
             var hot6Post = await postsQuery.OrderBy((new Random().Next() % 3) switch
             var hot6Post = await postsQuery.OrderBy((new Random().Next() % 3) switch

+ 2 - 2
src/Masuit.MyBlogs.Core/Controllers/SeminarController.cs

@@ -44,11 +44,11 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// <param name="size"></param>
         /// <param name="size"></param>
         /// <param name="orderBy"></param>
         /// <param name="orderBy"></param>
         /// <returns></returns>
         /// <returns></returns>
-        [Route("c/{id:int}/{page:int?}/{size:int?}"), ResponseCache(Duration = 600, VaryByQueryKeys = new[] { "id", "page", "size", "orderBy" }, VaryByHeader = "Cookie")]
+        [Route("c/{id:int}"), ResponseCache(Duration = 600, VaryByQueryKeys = new[] { "page", "size", "orderBy" }, VaryByHeader = "Cookie")]
         public async Task<ActionResult> Index(int id, [Optional] OrderBy? orderBy, [Range(1, int.MaxValue, ErrorMessage = "页码必须大于0")] int page = 1, [Range(1, 50, ErrorMessage = "页大小必须在0到50之间")] int size = 15)
         public async Task<ActionResult> Index(int id, [Optional] OrderBy? orderBy, [Range(1, int.MaxValue, ErrorMessage = "页码必须大于0")] int page = 1, [Range(1, 50, ErrorMessage = "页大小必须在0到50之间")] int size = 15)
         {
         {
             var s = await SeminarService.GetByIdAsync(id) ?? throw new NotFoundException("文章未找到");
             var s = await SeminarService.GetByIdAsync(id) ?? throw new NotFoundException("文章未找到");
-            var posts = await PostService.GetQuery<PostDto>(p => p.Seminar.Any(x => x.SeminarId == id) && (p.Status == Status.Published || CurrentUser.IsAdmin)).OrderBy($"{nameof(Post.IsFixedTop)} desc,{(orderBy ?? OrderBy.ModifyDate).GetDisplay()} desc").ToCachedPagedListAsync(page, size);
+            var posts = await PostService.GetQuery<PostDto>(p => p.Seminar.Any(x => x.SeminarId == id) && p.Status == Status.Published).OrderBy($"{nameof(Post.IsFixedTop)} desc,{(orderBy ?? OrderBy.ModifyDate).GetDisplay()} desc").ToCachedPagedListAsync(page, size);
             ViewBag.Title = s.Title;
             ViewBag.Title = s.Title;
             ViewBag.Desc = s.Description;
             ViewBag.Desc = s.Description;
             ViewBag.SubTitle = s.SubTitle;
             ViewBag.SubTitle = s.SubTitle;