public async Task <AjaxResult> Apply(BlogInputDto dto)
        {
            Check.NotNull(dto, nameof(dto));
            OperationResult result = await BlogsContract.ApplyForBlog(dto);

            return(result.ToAjaxResult());
        }
Пример #2
0
        public async Task <IPagedEntities <BlogDto> > GetBlogsAdminAsync(BlogInputDto input)
        {
            IQueryable <Blog> query = _context.Blogs.Include(x => x.Categories)
                                      .Where(p => p.CreatedBy == input.UserName);
            var totalSize = await query.AsNoTracking().CountAsync();

            var orderQuery = query.Select(p => new BlogDto
            {
                Id             = p.Id,
                Title          = p.Title,
                Summary        = p.Summary,
                NormalizeTitle = p.NormalizeTitle,
                Content        = p.Content,
                UserName       = p.CreatedBy,
                CreatedDate    = p.CreatedDate,
                Categories     = p.Categories.Select(y => new CategoryDto
                {
                    CategoryId = y.Id,
                    Name       = y.Category.Name
                }).ToList()
            }).OrderBy(p => p.CreatedDate);


            return(await Method.EntityWithPaging <BlogDto>(orderQuery, totalSize, input.page - 1, Constant.PageSize));
        }
        /// <summary>
        /// 申请博客信息
        /// </summary>
        /// <param name="dto">申请博客信息DTO信息</param>
        /// <returns>业务操作结果</returns>
        public virtual async Task <OperationResult> ApplyForBlog(BlogInputDto dto)
        {
            Check.Validate(dto, nameof(dto));

            // 博客是以当前用户的身份来申请的
            ClaimsPrincipal principal = _serviceProvider.GetCurrentUser();

            if (principal == null || !principal.Identity.IsAuthenticated)
            {
                return(new OperationResult(OperationResultType.Error, "用户未登录或登录已失效"));
            }

            int  userId = principal.Identity.GetUserId <int>();
            User user   = await UserRepository.GetAsync(userId);

            if (user == null)
            {
                return(new OperationResult(OperationResultType.QueryNull, $"编号为“{userId}”的用户信息不存在"));
            }
            Blog blog = BlogRepository.TrackQuery(m => m.UserId == userId).FirstOrDefault();

            if (blog != null)
            {
                return(new OperationResult(OperationResultType.Error, "当前用户已开通博客,不能重复申请"));
            }

            if (await CheckBlogExists(m => m.Url == dto.Url))
            {
                return(new OperationResult(OperationResultType.Error, $"Url 为“{dto.Url}”的博客已存在,不能重复添加"));
            }
            blog        = dto.MapTo <Blog>();
            blog.UserId = userId;
            int count = await BlogRepository.InsertAsync(blog);

            return(count > 0
                ? new OperationResult(OperationResultType.Success, "博客申请成功")
                : OperationResult.NoChanged);
        }