ql_apimanager_backend/Apimanager_backend/Controllers/ApisController.cs

199 lines
6.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Apimanager_backend.Dtos;
using Apimanager_backend.Exceptions;
using Apimanager_backend.Models;
using Apimanager_backend.Services;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using StackExchange.Redis;
namespace Apimanager_backend.Controllers
{
[Route("api/[controller]/[action]")]
[ApiController]
public class ApisController : ControllerBase
{
private readonly IApiService apiService;
private readonly ILogger<ApisController> logger;
public ApisController(IApiService apiService,ILogger<ApisController> logger)
{
this.apiService = apiService;
this.logger = logger;
}
#region API信息
[HttpGet]
[Authorize(Roles = "User")]
public async Task<ActionResult<ResponseBase<ApiInfoDto>>> ApiInfo(int apiId)
{
try
{
var apiInfo = await apiService.GetApiInfoAsync(apiId);
var res = new ResponseBase<ApiInfoDto>(
code: 1000,
message: "Success",
data: apiInfo
);
return Ok(res);
}catch(BaseException e)
{
var res = new ResponseBase<ApiInfoDto>(
code: e.code,
message: e.message,
data: null
);
return NotFound(res);
}
}
#endregion
#region API列表
[HttpGet]
[Authorize(Roles = "User")]
public async Task<ActionResult<ResponseBase<List<ApiInfoDto>>>> ApiList(int pageIndex,int pageSize,bool desc)
{
var list = await apiService.GetApisAsync(pageIndex, pageSize, desc);
var res = new ResponseBase<List<ApiInfoDto>>(
code:1000,
message:"Success",
data:list
);
return Ok(res);
}
#endregion
#region
[HttpPost]
[Authorize(Roles = "Admin")]
public async Task<ActionResult<ResponseBase<ApiInfoDto>>> AddApi([FromBody]CreateApiInfo createApiInfo)
{
var apiInfo = await apiService.AddApiAsync(createApiInfo);
var res = new ResponseBase<ApiInfoDto>(
code:1000,
message:"Success",
data: apiInfo
);
return Ok(res);
}
#endregion
#region
[HttpDelete]
[Authorize(Roles = "Admin")]
public async Task<ActionResult<ResponseBase<object?>>> DeleteApi(int apiId)
{
try
{
await apiService.DeleteApiAsync(apiId);
var res = new ResponseBase<object?>(
code: 1000,
message: "Success",
data: null
);
return Ok(res);
}catch(BaseException e)
{
var res = new ResponseBase<object?>(
code: e.code,
message: e.message,
data: null
);
return NotFound(res);
}
}
#endregion
#region api信息
[HttpPost]
[Authorize(Roles = "Admin")]
public async Task<ActionResult<ResponseBase<ApiInfoDto>>> UpdateApi(int apiId,UpdateApiDto updateApiDto)
{
try
{
//更新
var apiInfo = await apiService.UpdateApiAsync(apiId, updateApiDto);
var res = new ResponseBase<ApiInfoDto>(
code: 1000,
message: "Success",
data: apiInfo
);
return Ok(res);
}catch(BaseException e)
{
var res = new ResponseBase<ApiInfoDto>(
code: e.code,
message: e.message,
data: null
);
return NotFound(res);
}
}
#endregion
#region APi
[HttpPost]
[Authorize(Roles = "Admin")]
public async Task<ActionResult<ResponseBase<object?>>> BanApi(int userId)
{
try
{
await apiService.OffApiAsync(userId);
var res = new ResponseBase<object?>(
code: 1000,
message: "Success",
data: null
);
return Ok(res);
}catch(BaseException e)
{
var res = new ResponseBase<object?>(
code: e.code,
message: e.message,
data: null
);
return NotFound(res);
}
}
#endregion
#region API
[HttpPost]
[Authorize(Roles = "Admin")]
public async Task<ActionResult<ResponseBase<object?>>> UnBanApi(int userId)
{
try
{
await apiService.OnApiAsync(userId);
var res = new ResponseBase<object?>(
code: 1000,
message: "Success",
data: null
);
return Ok(res);
}catch(BaseException e)
{
var res = new ResponseBase<object?>(
code: e.code,
message: e.message,
data: null
);
return NotFound(res);
}
}
#endregion
#region API列表
[HttpGet]
public async Task<IActionResult> GetApisPublic(int pageIndex,int pageSize,bool desc)
{
var list = await apiService.GetUserApisAsync(pageIndex, pageSize, desc);
var res = new ResponseBase<List<ApiInfoDto>>(1000,"查询成功",list);
return Ok(res);
}
#endregion
#region API所属套餐
[HttpGet]
public async Task<IActionResult> GetApiPackages(int[] apiId)
{
var list = await apiService.GetApipackageAsync(apiId);
var res = new ResponseBase<List<Apipackage>>(1000,"查询成功",list);
return Ok(res);
}
#endregion
}
}