148 lines
4.4 KiB
C#
148 lines
4.4 KiB
C#
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;
|
|
|
|
|
|
/// <summary>
|
|
/// 新闻资讯
|
|
/// </summary>
|
|
[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;
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 资讯列表
|
|
/// </summary>
|
|
/// <param name="request"></param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
public async Task<dynamic> NewsPage([FromQuery] NewsPageRequest request)
|
|
{
|
|
try
|
|
{
|
|
var baseurl = App.GetConfig<OutExApi>("OutExApi", true).BaseUrl;
|
|
var dyresult = await string.Format("{0}api/front/NewsInfo/GetPageNews", baseurl)
|
|
.SetQueryParams(request).GetStringAsync();
|
|
var result= JsonConvert.DeserializeObject<CustomPropertyResult<NewsPageResponse>>(dyresult);
|
|
return result.response;
|
|
}
|
|
catch (Exception ex) {
|
|
|
|
throw Oops.Oh("网络开小差了~");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 获取新闻分类列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
public async Task<dynamic> NewsCategory()
|
|
{
|
|
var key = _cachekey + "categorylist";
|
|
var result = await _distributed.GetAsync(key);
|
|
if (result == null)
|
|
{
|
|
try
|
|
{
|
|
var baseurl = App.GetConfig<OutExApi>("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<CustomPropertyResult<List<NewsClassCategoryResponse>>>(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<dynamic>(Encoding.UTF8.GetString(result).ToLowerInvariant());
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 首页top新闻列表
|
|
/// </summary>
|
|
/// <param name="request"></param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
public async Task<dynamic> Top([FromQuery] NewsRequest request)
|
|
{
|
|
try
|
|
{
|
|
var baseurl = App.GetConfig<OutExApi>("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<CustomPropertyResult<List<NewsInfoResponse>>>(dyresult);
|
|
return result.response;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
throw Oops.Oh("网络开小差了~");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 新闻详情
|
|
/// </summary>
|
|
/// <param name="Id"></param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
public async Task<dynamic> Detail([FromQuery] int Id)
|
|
{
|
|
try
|
|
{
|
|
var baseurl = App.GetConfig<OutExApi>("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<CustomPropertyResult<NewsDetailInfoResponse>>(dyresult);
|
|
return result.response;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
throw Oops.Oh("网络开小差了~");
|
|
}
|
|
}
|
|
|
|
|
|
}
|