using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using GxPress.Auth; using GxPress.Common.Page; using GxPress.Repository.Interface; using GxPress.Request.Article; using GxPress.Request.BlacklistArticle; using GxPress.Result.Article; using GxPress.Service.Interface; using GxPress.Service.Interface.Article; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using GxPress.Repository.Interface.WorkFlow; using GxPress.Request.App.Flow; using GxPress.Service.Interface.Visit; namespace GxPress.Api.AppControllers { /// /// 审批文章/通知 /// [Route("api/app/article")] [ApiController] [Authorize] public class ArticleController : ControllerBase { private readonly IArticleRepository _articleRepository; private readonly IBlacklistArticleRepository _blacklistArticleRepository; private readonly IArticleService _articleService; private readonly ILoginContext _loginContext; private readonly IFlowService _flowService; private readonly IUserRepository _userRepository; private readonly IFlowFieldValueRepository _flowFieldValueRepository; private readonly IVisitService _visitService; public ArticleController(IArticleRepository articleRepository, IBlacklistArticleRepository blacklistArticleRepository, ILoginContext loginContext, IArticleService articleService, IFlowService flowService, IUserRepository userRepository, IFlowFieldValueRepository flowFieldValueRepository, IVisitService visitService) { _articleRepository = articleRepository; _blacklistArticleRepository = blacklistArticleRepository; _loginContext = loginContext; _articleService = articleService; _flowService = flowService; _userRepository = userRepository; _flowFieldValueRepository = flowFieldValueRepository; _visitService = visitService; } /// /// 列表 /// /// [HttpPost("user-article-list")] public async Task> GetUserList([FromBody] ArticleSearchRequest request) { request.UserId = _loginContext.AccountId; //屏蔽文章查询文章 var blacklistArticleSearchRequest = new BlacklistArticleSearchRequest { UserId = request.UserId }; var blacklistArticles = await _blacklistArticleRepository.GetListAsync(blacklistArticleSearchRequest); var pagedList = await _articleRepository.GetUserListAsync(request, blacklistArticles); foreach (var item in pagedList.Items) item.ReadCount = await _visitService.GetCountAsync(1, item.Id); var resultList = new List(); if (!string.IsNullOrWhiteSpace(request.Keyword)) { //获取代办事项 var userId = _loginContext.AccountId; var flowListRequest = new FlowListRequest(); flowListRequest.Page = request.Page; flowListRequest.PerPage = request.PerPage; flowListRequest.Keyword = request.Keyword; var flowTodoList = await _flowService.ListMyCheckingAsync(userId, flowListRequest, nameof(GxPress.EnumConst.FlowListTypeConst.MyChecking)); foreach (var flowTodo in flowTodoList.Items) { var result = new Result.Article.ArticleResult { Id = flowTodo.Id, ProcessId = flowTodo.ProcessId, FlowId = flowTodo.Id, UserId = flowTodo.UserId, Type = nameof(GxPress.EnumConst.TodoTypeConst.ApproverCheck), State = flowTodo.State, IsDone = false, CreatedDate = flowTodo.CreatedDate }; result.Title = flowTodo.Title; result.AvatarUrl = flowTodo.AvatarUrl; result.Summaries = flowTodo.Summaries; result.SourceType = 1; resultList.Add(result); } } resultList.AddRange(pagedList.Items); pagedList.Total = resultList.Count(); pagedList.Items = resultList; return pagedList; } /// /// 文章详情 /// /// [HttpGet("detail/{id}")] public async Task Get(int id) { var article = await _articleService.GetAsync(id, _loginContext.AccountId); return article; } /// /// 文章详情 web页面 /// /// [HttpGet("web-detail/{id}")] [AllowAnonymous] public async Task GetWeb(int id) { var article = await _articleService.GetAsync(id, 0); return article; } } }