public ResultDto Post([FromBody] CreateUpdateArticleDto createArticle)
        {
            bool exist = _articleRepository.Select.Any(r => r.Title == createArticle.Title && r.CreateUserId == _currentUser.Id);

            if (exist)
            {
                throw new LinCmsException("您有一个同样标题的随笔");
            }

            Article article = _mapper.Map <Article>(createArticle);

            article.Archive = DateTime.Now.ToString("yyy年MM月");
            article.Author  = _currentUser.UserName;
            article.Tags    = new List <Tag>();
            foreach (var articleTagId in createArticle.TagIds)
            {
                article.Tags.Add(new Tag()
                {
                    Id = articleTagId,
                });
            }
            _articleRepository.Insert(article);

            return(ResultDto.Success("新建随笔成功"));
        }
        public async Task <Article> UpdateAsync(Guid id, CreateUpdateArticleDto updateArticleDto)
        {
            Article article = _articleRepository.Select.Where(r => r.Id == id).ToOne();

            if (article.CreateUserId != _currentUser.Id)
            {
                throw new LinCmsException("您无权修改他人的随笔");
            }

            if (article == null)
            {
                throw new LinCmsException("没有找到相关随笔");
            }

            _mapper.Map(updateArticleDto, article);
            article.WordNumber  = article.Content.Length;
            article.ReadingTime = article.Content.Length / 400;

            await _articleRepository.UpdateAsync(article);

            ArticleDraft articleDraft = _mapper.Map <ArticleDraft>(article);

            bool exist = await _articleDraftRepository.Select.AnyAsync(r => r.Id == article.Id);

            if (exist)
            {
                await _articleDraftRepository.UpdateAsync(articleDraft);
            }
            else
            {
                await _articleDraftRepository.InsertAsync(articleDraft);
            }

            return(article);
        }
        public async Task <Guid> CreateAsync(CreateUpdateArticleDto createArticle)
        {
            Article article = _mapper.Map <Article>(createArticle);

            article.Archive     = DateTime.Now.ToString("yyy年MM月");
            article.WordNumber  = createArticle.Content.Length;
            article.ReadingTime = createArticle.Content.Length / 800;

            article.Tags = new List <Tag>();
            foreach (var articleTagId in createArticle.TagIds)
            {
                article.Tags.Add(new Tag()
                {
                    Id = articleTagId,
                });
                _tagService.UpdateArticleCount(articleTagId, 1);
            }

            ArticleDraft articleDraft = new ArticleDraft()
            {
                Content = createArticle.Content,
                Editor  = createArticle.Editor,
                Title   = createArticle.Title
            };

            await _articleRepository.InsertAsync(article);

            articleDraft.Id = article.Id;
            await _articleDraftRepository.InsertAsync(articleDraft);

            await _classifyService.UpdateArticleCountAsync(createArticle.ClassifyId, 1);

            return(article.Id);
        }
        public async Task <UnifyResponseDto> CreateAsync([FromBody] CreateUpdateArticleDto createArticle)
        {
            await _articleService.CreateAsync(createArticle);

            _capBus.Publish("NotificationController.Post", new CreateNotificationDto()
            {
            });

            return(UnifyResponseDto.Success("新建随笔成功"));
        }
        public async Task <Guid> CreateAsync([FromBody] CreateUpdateArticleDto createArticle)
        {
            Guid id = await _articleService.CreateAsync(createArticle);

            _capBus.Publish("NotificationController.Post", new CreateNotificationDto()
            {
            });

            return(id);
        }
Exemple #6
0
        public ResultDto Post([FromBody] CreateUpdateArticleDto createArticle)
        {
            _articleService.CreateArticle(createArticle);

            _capBus.Publish("NotificationController.Post", new CreateNotificationDto()
            {
            });

            return(ResultDto.Success("新建随笔成功"));
        }
        public async Task <UnifyResponseDto> UpdateAsync(Guid id, [FromBody] CreateUpdateArticleDto updateArticleDto)
        {
            Article article = await _articleService.UpdateAsync(id, updateArticleDto);

            await _articleService.UpdateTagAsync(id, updateArticleDto);

            if (article.ClassifyId != updateArticleDto.ClassifyId)
            {
                await _classifyService.UpdateArticleCountAsync(article.ClassifyId, -1);

                await _classifyService.UpdateArticleCountAsync(updateArticleDto.ClassifyId, 1);
            }

            return(UnifyResponseDto.Success("更新随笔成功"));
        }
        public async Task <UnifyResponseDto> UpdateAsync(Guid id, [FromBody] CreateUpdateArticleDto updateArticle)
        {
            Article article = _articleRepository.Select.Where(r => r.Id == id).ToOne();

            if (article.CreateUserId != _currentUser.Id)
            {
                throw new LinCmsException("您无权修改他人的随笔");
            }
            if (article == null)
            {
                throw new LinCmsException("没有找到相关随笔");
            }

            _mapper.Map(updateArticle, article);
            await _articleService.UpdateAsync(updateArticle, article);

            return(UnifyResponseDto.Success("更新随笔成功"));
        }
Exemple #9
0
        public ResultDto Post([FromBody] CreateUpdateArticleDto createArticle)
        {
            bool exist = _articleRepository.Select.Any(r => r.Title == createArticle.Title && r.CreateUserId == _currentUser.Id);

            if (exist)
            {
                throw new LinCmsException("随笔标题不能重复");
            }

            Article article = _mapper.Map <Article>(createArticle);

            article.Archive = DateTime.Now.ToString("yyy年MM月");
            if (article.Author.IsNullOrEmpty())
            {
                article.Author = _currentUser.UserName;
            }
            _articleRepository.Insert(article);
            return(ResultDto.Success("新建随笔成功"));
        }
Exemple #10
0
        public void CreateArticle(CreateUpdateArticleDto createArticle)
        {
            Article article = _mapper.Map <Article>(createArticle);

            article.Archive     = DateTime.Now.ToString("yyy年MM月");
            article.WordNumber  = createArticle.Content.Length;
            article.ReadingTime = createArticle.Content.Length / 800;

            article.Tags = new List <Tag>();
            foreach (var articleTagId in createArticle.TagIds)
            {
                article.Tags.Add(new Tag()
                {
                    Id = articleTagId,
                });
                tagService.UpdateArticleCount(articleTagId, 1);
            }
            _articleRepository.Insert(article);

            _classifyService.UpdateArticleCount(createArticle.ClassifyId, 1);
        }
        public ResultDto Put(Guid id, [FromBody] CreateUpdateArticleDto updateArticle)
        {
            Article article = _articleRepository.Select.Where(r => r.Id == id).ToOne();

            if (article.CreateUserId != _currentUser.Id)
            {
                throw new LinCmsException("您无权修改他人的随笔");
            }
            if (article == null)
            {
                throw new LinCmsException("没有找到相关随笔");
            }

            bool exist = _articleRepository.Select.Any(r => r.Title == updateArticle.Title && r.Id != id && r.CreateUserId == _currentUser.Id);

            if (exist)
            {
                throw new LinCmsException("您有一个同样标题的随笔");
            }

            //使用AutoMapper方法简化类与类之间的转换过程
            _mapper.Map(updateArticle, article);


            _articleRepository.Update(article);

            _tagArticleRepository.Delete(r => r.ArticleId == id);

            List <TagArticle> tagArticles = new List <TagArticle>();

            updateArticle.TagIds.ForEach(r => tagArticles.Add(new TagArticle()
            {
                ArticleId = id,
                TagId     = r
            }));

            _tagArticleRepository.Insert(tagArticles);

            return(ResultDto.Success("更新随笔成功"));
        }
        public async Task UpdateTagAsync(Guid id, CreateUpdateArticleDto updateArticleDto)
        {
            List <Guid> tagIds =
                await _tagArticleRepository.Select.Where(r => r.ArticleId == id).ToListAsync(r => r.TagId);

            tagIds.ForEach(tagId => { _tagService.UpdateArticleCount(tagId, -1); });

            _tagArticleRepository.Delete(r => r.ArticleId == id);

            List <TagArticle> tagArticles = new List <TagArticle>();

            updateArticleDto.TagIds.ForEach(tagId =>
            {
                tagArticles.Add(new TagArticle()
                {
                    ArticleId = id,
                    TagId     = tagId
                });
                _tagService.UpdateArticleCount(tagId, 1);
            });
            await _tagArticleRepository.InsertAsync(tagArticles);
        }
Exemple #13
0
        public void UpdateArticle(CreateUpdateArticleDto updateArticleDto, Article article)
        {
            //使用AutoMapper方法简化类与类之间的转换过程
            article.WordNumber  = article.Content.Length;
            article.ReadingTime = article.Content.Length / 800;

            _articleRepository.Update(article);

            Article oldArticle = _articleRepository.Select.Where(r => r.Id == article.Id)
                                 .IncludeMany(r => r.Tags).ToOne();

            oldArticle.Tags.ToList()
            .ForEach(u =>
            {
                tagService.UpdateArticleCount(u.Id, -1);
            });

            _tagArticleRepository.Delete(r => r.ArticleId == article.Id);

            List <TagArticle> tagArticles = new List <TagArticle>();

            updateArticleDto.TagIds.ForEach(tagId =>
            {
                tagArticles.Add(new TagArticle()
                {
                    ArticleId = article.Id,
                    TagId     = tagId
                });
                tagService.UpdateArticleCount(tagId, 1);
            });

            _tagArticleRepository.Insert(tagArticles);
            if (article.ClassifyId != updateArticleDto.ClassifyId)
            {
                _classifyService.UpdateArticleCount(article.ClassifyId, -1);
                _classifyService.UpdateArticleCount(updateArticleDto.ClassifyId, 1);
            }
        }
Exemple #14
0
        public ResultDto Put(int id, [FromBody] CreateUpdateArticleDto updateArticle)
        {
            Article article = _articleRepository.Select.Where(r => r.Id == id).ToOne();

            if (article == null)
            {
                throw new LinCmsException("没有找到相关随笔");
            }

            bool exist = _articleRepository.Select.Any(r => r.Title == updateArticle.Title && r.Id != id && r.CreateUserId == _currentUser.Id);

            if (exist)
            {
                throw new LinCmsException("随笔已存在");
            }

            //使用AutoMapper方法简化类与类之间的转换过程
            _mapper.Map(updateArticle, article);

            _articleRepository.Update(article);

            return(ResultDto.Success("更新随笔成功"));
        }
Exemple #15
0
        public async Task UpdateAsync(CreateUpdateArticleDto updateArticleDto, Article article)
        {
            article.WordNumber  = article.Content.Length;
            article.ReadingTime = article.Content.Length / 800;

            await _articleRepository.UpdateAsync(article);

            List <Guid> tagIds = await _tagArticleRepository.Select
                                 .Where(r => r.ArticleId == article.Id)
                                 .ToListAsync(r => r.TagId);

            tagIds.ForEach(tagId =>
            {
                _tagService.UpdateArticleCount(tagId, -1);
            });
            _tagArticleRepository.Delete(r => r.ArticleId == article.Id);

            List <TagArticle> tagArticles = new List <TagArticle>();

            updateArticleDto.TagIds.ForEach(tagId =>
            {
                tagArticles.Add(new TagArticle()
                {
                    ArticleId = article.Id,
                    TagId     = tagId
                });
                _tagService.UpdateArticleCount(tagId, 1);
            });
            await _tagArticleRepository.InsertAsync(tagArticles);

            if (article.ClassifyId != updateArticleDto.ClassifyId)
            {
                _classifyService.UpdateArticleCount(article.ClassifyId, -1);
                _classifyService.UpdateArticleCount(updateArticleDto.ClassifyId, 1);
            }
        }
 public async Task CreateAsync()
 {
     CreateUpdateArticleDto createArticle = new CreateUpdateArticleDto();
     await _articleController.CreateAsync(createArticle);
 }
        public async Task OnGetAsync()
        {
            var dto = await _service.GetAsync(Id);

            Article = ObjectMapper.Map <ArticleDto, CreateUpdateArticleDto>(dto);
        }
Exemple #18
0
        public void Post()
        {
            CreateUpdateArticleDto createArticle = new CreateUpdateArticleDto();

            _articleController.Post(createArticle);
        }
Exemple #19
0
        public async Task <UnifyResponseDto> UpdateAsync([FromServices] IClassifyService _classifyService, Guid id, [FromBody] CreateUpdateArticleDto updateArticleDto)
        {
            await _articleService.UpdateAsync(id, updateArticleDto);

            await _articleService.UpdateTagAsync(id, updateArticleDto);

            return(UnifyResponseDto.Success("更新随笔成功"));
        }
Exemple #20
0
        public async Task <Guid> CreateAsync([FromBody] CreateUpdateArticleDto createArticle)
        {
            Guid id = await _articleService.CreateAsync(createArticle);

            return(id);
        }
Exemple #21
0
        public ResultDto Post([FromBody] CreateUpdateArticleDto createArticle)
        {
            _articleService.CreateArticle(createArticle);

            return(ResultDto.Success("新建随笔成功"));
        }