using System.ComponentModel.DataAnnotations; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Tiku.Api.Contracts; using Tiku.Api.OpenApi; using Tiku.Application.Auth; using Tiku.Application.PlatformAdmin; using Tiku.Application.Security; using Tiku.Domain.Platform; namespace Tiku.Api.Controllers; [ApiController] [Tags("平台端-平台管理")] [Authorize(Policy = BackendPermissions.PlatformDashboardView)] [Produces("application/json")] [Route("api/platform")] public sealed class PlatformTenantDomainController( IPlatformTenantDomainService service, PlatformAdminActorResolver actorResolver) : ControllerBase { [HttpGet("domains")] [Authorize(Policy = BackendPermissions.PlatformTenantManage)] [EndpointSummary("查询租户域名状态")] [ProducesResponseType(StatusCodes.Status200OK)] public async Task> Domains( [FromQuery] PlatformAdminQueryDto query, CancellationToken cancellationToken) { return Ok(await service.GetDomainsAsync(actorResolver.Resolve(), query.ToQuery(), cancellationToken)); } [HttpPost("domains/{domainId:guid}/recheck")] [Authorize(Policy = BackendPermissions.PlatformTenantManage)] [EndpointSummary("重新触发租户域名 DNS/TLS 验证")] [ProducesResponseType(StatusCodes.Status200OK)] public async Task> RecheckDomain( Guid domainId, CancellationToken cancellationToken) { return Ok(await service.RecheckDomainAsync(actorResolver.Resolve(), domainId, cancellationToken)); } }