using Apimanager_backend.Data; using Apimanager_backend.Dtos; using Apimanager_backend.Exceptions; using Apimanager_backend.Models; using AutoMapper; using Microsoft.EntityFrameworkCore; namespace Apimanager_backend.Services { public class ApiService:IApiService { private readonly ApiContext context; private readonly ILogger logger; private readonly IMapper mapper; public ApiService(ApiContext context, ILogger logger,IMapper mapper) { this.context = context; this.logger = logger; this.mapper = mapper; } #region 添加接口 public async Task AddApiAsync(CreateApiInfo dto) { var api = mapper.Map(dto); context.Apis.Add(api); await context.SaveChangesAsync(); return mapper.Map(api); } #endregion #region 删除api public async Task DeleteApiAsync(int apiId) { var api = await context.Apis.FirstOrDefaultAsync(x => x.Id == apiId); if (api == null) { throw new BaseException(3002, "API不存在"); } api.IsDelete = true; context.Apis.Update(api); await context.SaveChangesAsync(); } #endregion #region 查询api信息 public async Task GetApiInfoAsync(int apiId) { var apiInfo = await context.Apis.FirstOrDefaultAsync(x => x.Id == apiId); if (apiInfo == null) { throw new BaseException(3002,"API不存在"); } return mapper.Map(apiInfo); } #endregion #region 禁用api public async Task OffApiAsync(int apiId) { var api = await context.Apis.FirstOrDefaultAsync(x => x.Id == apiId); if (api == null) { throw new BaseException(3002, "API不存在"); } api.IsActive = false; context.Apis.Update(api); await context.SaveChangesAsync(); } #endregion #region 启用API public async Task OnApiAsync(int apiId) { var api = await context.Apis.FirstOrDefaultAsync(x => x.Id == apiId); if (api == null) { throw new BaseException(3002, "API不存在"); } api.IsActive = true; context.Apis.Update(api); await context.SaveChangesAsync(); } #endregion #region 更新接口信息 public async Task UpdateApiAsync(int apiId, UpdateApiDto dto) { var api = await context.Apis.FirstOrDefaultAsync(x => x.Id == apiId); if(api == null) { throw new BaseException(3002, "API不存在"); } api.Name = dto.Name ?? api.Name; api.Description = dto.Description ?? api.Description; api.Endpoint = dto.Endpoint ?? api.Endpoint; api.Method = dto.Method ?? api.Method; api.PackageId = dto.PackageId ?? api.PackageId; context.Apis.Update(api); await context.SaveChangesAsync(); return mapper.Map(api); } #endregion #region 获取API列表 public async Task> GetApisAsync(int pageIndex, int pageSize, bool desc) { IQueryable query = context.Apis.Where(x => true).OrderBy(x => x.Id); //倒序 if (desc) { query.OrderDescending(); } //分页 query = query.Skip((pageIndex - 1) * pageSize).Take(pageSize); var list = await query.ToListAsync(); return mapper.Map>(list); } #endregion #region 获取Api总数 public async Task ApiCountAsync() { return await context.Apis.CountAsync(); } #endregion } }