using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Tiku.Api.Contracts; using Tiku.Api.Security; using Tiku.Application.Learning; using Tiku.Application.Security; namespace Tiku.Api.Controllers; [ApiController] [Tags("学生端-学习授权")] [Authorize(Policy = TikuPolicies.CurrentTenantMember)] [RequireSaasFeature(SaasFeatureCatalog.Practice)] [Produces("application/json")] [Route("api/student/learning/access")] public sealed class LearningAccessController( ILearningAccessService accessService, ILearningAccessAdministrationService administrationService, LearningActorResolver actorResolver) : ControllerBase { [HttpGet] [EndpointSummary("查询当前学习授权快照")] public Task Get(CancellationToken cancellationToken) { return accessService.GetSnapshotAsync(actorResolver.Resolve(), cancellationToken); } [HttpGet("target-region")] [EndpointSummary("查询当前个人目标地区")] public Task GetTargetRegion(CancellationToken cancellationToken) { return administrationService.GetTargetRegionAsync(actorResolver.Resolve(), cancellationToken); } [HttpPut("target-region")] [EndpointSummary("变更个人目标地区")] public Task ChangeTargetRegion( ChangeStudentTargetRegionDto request, CancellationToken cancellationToken) { return administrationService.ChangeTargetRegionAsync( actorResolver.Resolve(), request.ToCommand(), cancellationToken); } }