using Attribute;
using Common;
using Dto;
using Vo;
using Enums;
using Filters;
using Infrastructure;
using Infrastructure.Model;
using Mapster;
using Microsoft.AspNetCore.Mvc;
using Middleware;
using Model;
using Services;
using Model.Base;
using Microsoft.AspNetCore.Authorization;
namespace Controllers
{
///
/// ApiInfo)Controller
///
// [Route("ApiInfo")]
// [ApiExplorerSettings(GroupName = "ApiInfo")]
public class ApiPubController : BaseController
{
///
/// api分组接口
///
private readonly IApiInfoService _ApiInfoService;
private readonly IApiGroupService _ApiGroupService;
public ApiPubController(IApiInfoService ApiInfoService, IApiGroupService ApiGroupService)
{
_ApiInfoService = ApiInfoService;
_ApiGroupService = ApiGroupService;
}
[AllowAnonymous]
[HttpPost]
[Route("/noauth/apiinfo/groupsforadmin")]
public IActionResult GroupsForAdmin(string value)
{
var response = _ApiGroupService.GroupsForAdmin(value);
return SUCCESS(response);
}
[AllowAnonymous]
[HttpPost]
[Route("/noauth/apiinfo/listforadmin")]
public IActionResult ListForAdmin(string value)
{
string jsonString = Dbconn.DesDecrypt(value, "&L^kg4N9");
Dictionary data = Newtonsoft.Json.JsonConvert.DeserializeObject>(jsonString);
Dictionary groupobj = new Dictionary();
Dictionary obj = new Dictionary();
if(jsonString.Contains("\"groups\""))
{
List> groupJson = Newtonsoft.Json.JsonConvert.DeserializeObject>>(data["groups"].ToString());
for(int i = 0; i < groupJson.Count; i ++)
{
string name = groupJson[i]["name"].ToString();
int version = int.Parse(groupJson[i]["version"].ToString());
groupobj.Add(name, version);
}
}
var groups = _ApiGroupService.GetList(m => m.groupKind == 1);
foreach(var group in groups)
{
int curVersion = int.Parse(Function.CheckInt(group.groupVersion));
if(groupobj.Any(m => m.Key == group.groupName && m.Value < curVersion))
{
Dictionary groupData = new Dictionary();
var apis = _ApiInfoService.GetList(m => m.groupId == group.id).ToList();
foreach(var api in apis)
{
Dictionary apiData = new Dictionary();
string url = api.apiHost;
if(api.apiPort != 80 && api.apiPort != 443)
{
url += ":" + api.apiPort;
}
url += api.apiRouter;
apiData.Add("name", api.apiName);
apiData.Add("url", url);
apiData.Add("method", api.apiMethod);
groupData.Add(api.apiKey, apiData);
}
groupData.Add("groupVersion", group.groupVersion);
groupData.Add("groupInfo", group.groupRemark);
obj.Add(group.groupName, groupData);
}
}
return SUCCESS(obj);
}
}
}