using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using New_College.IServices;
using New_College.Model;
using New_College.Model.Request;
using New_College.Model.ViewModels;
namespace New_College.Api.Controllers.Front
{
[Route("api/front/[controller]/[action]")]
[ApiController]
public class NewsInfoController : ControllerBase
{
private readonly ID_NewsCategoryServices iD_NewsCategory;
private readonly ID_NewsInfoServices d_NewsInfo;
public NewsInfoController(ID_NewsCategoryServices d_NewsCategoryServices, ID_NewsInfoServices d_NewsInfoServices)
{
this.iD_NewsCategory = d_NewsCategoryServices;
this.d_NewsInfo = d_NewsInfoServices;
}
///
/// 获取新闻分类
///
///
[HttpGet]
public async Task>> GetNewsCategory()
{
return new MessageModel>()
{
msg = "ok",
success = true,
response = (await iD_NewsCategory.Query(c => c.IsDelete == false)).Select(c => new NewsClassCategoryResponse()
{
Sort = c.OrderSort,
CategoryName = c.CategoryName,
Id = c.Id
}).OrderBy(c => c.Sort).ToList(),
};
}
///
/// 获取top多少的新闻
///
///
///
[HttpGet]
public async Task>> GetTopNews([FromQuery] NewsRequest request)
{
try
{
var list = new List();
var query = (await d_NewsInfo.Query(e => e.IsDelete == false && e.CategoryId == request.CategoryId, " CreateTime desc")).Take(request.Top).OrderByDescending(s => s.Id);
list = query.Select(s => new NewsInfoResponse
{
CoverImg = s.CoverImg,
CreateTime = s.CreateTime.Value,
Id = s.Id,
Title = s.Title,
Summary = s.Summary,
}).ToList();
return new MessageModel>()
{
msg = "success",
success = true,
response = list
};
}
catch (Exception ex)
{
return new MessageModel>()
{
msg = ex.Message
};
}
}
///
/// 所有新闻列表带分页
///
///
///
[HttpGet]
public async Task>> GetPageNews([FromQuery] NewsPageRequest request)
{
var pageresponse = new PageModel();
try
{
var pageinfo = await d_NewsInfo.QueryPage(w => w.CategoryId == request.CategoryId, request.PageIndex, request.PageSize, "CreateTime desc");
if (pageinfo.data.Any())
{
pageresponse.data = pageinfo.data.Select(s => new NewsInfoResponse()
{
CoverImg = s.CoverImg,
CreateTime = s.CreateTime.Value,
Id = s.Id,
Summary = !string.IsNullOrWhiteSpace(s.Summary) ? s.Summary : s.Detail.Substring(0, 200) + "...",
Title = s.Title
}).ToList();
pageresponse.pageCount = pageinfo.data.Count;
pageresponse.page = pageinfo.data.Count;
pageresponse.dataCount = pageinfo.data.Count;
pageresponse.PageSize = pageinfo.PageSize;
pageresponse.pageCount = pageinfo.pageCount;
}
return new MessageModel>()
{
msg = "success",
response = pageresponse,
success = true
};
}
catch (Exception ex)
{
return new MessageModel>()
{
msg = "fail",
success = false
};
}
}
///
/// 根据Id 获取新闻详情
///
///
///
[HttpGet]
public async Task> GetDetail([FromQuery] NewsDetailRequest request)
{
try
{
var result = new NewsDetailInfoResponse();
var single = await d_NewsInfo.QueryById(request.Id);
result.Author = single.Author;
result.Click = single.Click;
result.CoverImg = single.CoverImg;
result.CreateTime = single.CreateTime.Value;
result.Id = single.Id;
result.Summary = single.Summary;
result.Title = single.Title;
result.Detail = single.Detail;
return new MessageModel()
{
msg = "success",
response = result,
success = true
};
}
catch (Exception ex)
{
return new MessageModel()
{
msg = ex.Message
};
}
}
}
}