using Admin.NET.Core.Service.ZYNews.DTO;
using Flurl;
using Flurl.Http;
using Microsoft.Extensions.Caching.Distributed;
using MongoDB.Bson;
using NewLife;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
namespace Admin.NET.Core.Service;
///
/// 新闻资讯
///
[AllowAnonymous]
[ApiDescriptionSettings(ApplicationConst.ZYGroupName, Order = 900)]
[Route("api/ZyNews")]
public class ZyNewsService : IDynamicApiController, ITransient
{
private readonly IDistributedCache _distributed;
private const string _cachekey = "news_";
public ZyNewsService(IDistributedCache distributedCache)
{
_distributed = distributedCache;
}
///
/// 资讯列表
///
///
///
[HttpGet]
public async Task NewsPage([FromQuery] NewsPageRequest request)
{
try
{
var baseurl = App.GetConfig("OutExApi", true).BaseUrl;
var dyresult = await string.Format("{0}api/front/NewsInfo/GetPageNews", baseurl)
.SetQueryParams(request).GetStringAsync();
var result= JsonConvert.DeserializeObject>(dyresult);
return result.response;
}
catch (Exception ex) {
throw Oops.Oh("网络开小差了~");
}
}
///
/// 获取新闻分类列表
///
///
[HttpGet]
public async Task NewsCategory()
{
var key = _cachekey + "categorylist";
var result = await _distributed.GetAsync(key);
if (result == null)
{
try
{
var baseurl = App.GetConfig("OutExApi", true).BaseUrl;
var _option = new DistributedCacheEntryOptions()
.SetSlidingExpiration(TimeSpan.FromHours(4));
var dyresult = await string.Format("{0}api/front/NewsInfo/GetNewsCategory", baseurl).GetStringAsync();
var nresult = JsonConvert.DeserializeObject>>(dyresult);
byte[] byresult = Encoding.UTF8.GetBytes(nresult.response.ToJson());
await _distributed.SetAsync(key, byresult, _option);
result = byresult;
}
catch (Exception ex)
{
throw Oops.Oh("网络开小差了~");
}
}
return JsonConvert.DeserializeObject(Encoding.UTF8.GetString(result).ToLowerInvariant());
}
///
/// 首页top新闻列表
///
///
///
[HttpGet]
public async Task Top([FromQuery] NewsRequest request)
{
try
{
var baseurl = App.GetConfig("OutExApi", true).BaseUrl;
var _option = new DistributedCacheEntryOptions()
.SetSlidingExpiration(TimeSpan.FromHours(4));
var dyresult = await string.Format("{0}api/front/NewsInfo/GetTopNews", baseurl)
.SetQueryParams(request).GetStringAsync();
var result = JsonConvert.DeserializeObject>>(dyresult);
return result.response;
}
catch (Exception ex)
{
throw Oops.Oh("网络开小差了~");
}
}
///
/// 新闻详情
///
///
///
[HttpGet]
public async Task Detail([FromQuery] int Id)
{
try
{
var baseurl = App.GetConfig("OutExApi", true).BaseUrl;
var _option = new DistributedCacheEntryOptions()
.SetSlidingExpiration(TimeSpan.FromHours(4));
var dyresult = await string.Format("{0}api/front/NewsInfo/GetDetail?id={1}", baseurl, Id)
.GetStringAsync();
var result = JsonConvert.DeserializeObject>(dyresult);
return result.response;
}
catch (Exception ex)
{
throw Oops.Oh("网络开小差了~");
}
}
}