using Apimanager_backend.Dtos; using Apimanager_backend.Exceptions; 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 logger; public ApisController(IApiService apiService,ILogger logger) { this.apiService = apiService; this.logger = logger; } #region 查询API信息 [HttpGet] [Authorize(Roles = "User")] public async Task>> ApiInfo(int apiId) { try { var apiInfo = await apiService.GetApiInfoAsync(apiId); var res = new ResponseBase( code: 1000, message: "Success", data: apiInfo ); return Ok(res); }catch(BaseException e) { var res = new ResponseBase( code: e.code, message: e.message, data: null ); return NotFound(res); } } #endregion #region 查询API列表 [HttpGet] [Authorize(Roles = "User")] public async Task>>> ApiList(int pageIndex,int pageSize,bool desc) { var list = await apiService.GetApisAsync(pageIndex, pageSize, desc); var res = new ResponseBase>( code:1000, message:"Success", data:list ); return Ok(res); } #endregion #region 添加接口 [HttpPost] [Authorize(Roles = "Admin")] public async Task>> AddApi([FromBody]CreateApiInfo createApiInfo) { var apiInfo = await apiService.AddApiAsync(createApiInfo); var res = new ResponseBase( code:1000, message:"Success", data: apiInfo ); return Ok(res); } #endregion #region 删除接口 [HttpDelete] [Authorize(Roles = "Admin")] public async Task>> DeleteApi(int apiId) { try { await apiService.DeleteApiAsync(apiId); var res = new ResponseBase( code: 1000, message: "Success", data: null ); return Ok(res); }catch(BaseException e) { var res = new ResponseBase( code: e.code, message: e.message, data: null ); return NotFound(res); } } #endregion #region 更新api信息 [HttpPost] [Authorize(Roles = "Admin")] public async Task>> UpdateApi(int apiId,UpdateApiDto updateApiDto) { try { //更新 var apiInfo = await apiService.UpdateApiAsync(apiId, updateApiDto); var res = new ResponseBase( code: 1000, message: "Success", data: apiInfo ); return Ok(res); }catch(BaseException e) { var res = new ResponseBase( code: e.code, message: e.message, data: null ); return NotFound(res); } } #endregion #region 禁用APi [HttpPost] [Authorize(Roles = "Admin")] public async Task>> BanApi(int userId) { try { await apiService.OffApiAsync(userId); var res = new ResponseBase( code: 1000, message: "Success", data: null ); return Ok(res); }catch(BaseException e) { var res = new ResponseBase( code: e.code, message: e.message, data: null ); return NotFound(res); } } #endregion #region 启用API [HttpPost] [Authorize(Roles = "Admin")] public async Task>> UnBanApi(int userId) { try { await apiService.OnApiAsync(userId); var res = new ResponseBase( code: 1000, message: "Success", data: null ); return Ok(res); }catch(BaseException e) { var res = new ResponseBase( code: e.code, message: e.message, data: null ); return NotFound(res); } } #endregion } }