forked from gongxuegit/tiku-backend.net
feat: complete phase six backoffice operations
This commit is contained in:
@@ -17,6 +17,15 @@ public sealed class TenantAdminDirectController(
|
||||
ICurrentUser currentUser,
|
||||
ITenantContext currentTenant) : ControllerBase
|
||||
{
|
||||
[HttpGet("overview")]
|
||||
[Authorize(Policy = BackendPermissions.TenantDashboardView)]
|
||||
[EndpointSummary("查询租户后台运营概览")]
|
||||
[ProducesResponseType<TenantAdminOverviewItem>(StatusCodes.Status200OK)]
|
||||
public async Task<ActionResult<TenantAdminOverviewItem>> GetOverview(CancellationToken cancellationToken)
|
||||
{
|
||||
return Ok(await tenantAdminService.GetOverviewAsync(ResolveActor(), cancellationToken));
|
||||
}
|
||||
|
||||
[HttpGet("classes")]
|
||||
[Authorize(Policy = BackendPermissions.TenantStudentManage)]
|
||||
[EndpointSummary("查询租户班级")]
|
||||
@@ -116,6 +125,117 @@ public sealed class TenantAdminDirectController(
|
||||
return Ok(await tenantAdminService.UpdateStudentStatusAsync(ResolveActor(), request.ToCommand(), cancellationToken));
|
||||
}
|
||||
|
||||
[HttpPost("students/import/preview")]
|
||||
[Authorize(Policy = BackendPermissions.TenantStudentManage)]
|
||||
[EndpointSummary("预览学生批量导入")]
|
||||
[ProducesResponseType<TenantAdminStudentImportPreview>(StatusCodes.Status200OK)]
|
||||
public async Task<ActionResult<TenantAdminStudentImportPreview>> PreviewStudentImport(
|
||||
TenantAdminStudentImportDto request,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
return Ok(await tenantAdminService.PreviewStudentImportAsync(ResolveActor(), request.ToCommand(), cancellationToken));
|
||||
}
|
||||
|
||||
[HttpPost("students/import")]
|
||||
[Authorize(Policy = BackendPermissions.TenantStudentManage)]
|
||||
[EndpointSummary("提交学生批量导入")]
|
||||
[ProducesResponseType<TenantAdminStudentImportResult>(StatusCodes.Status200OK)]
|
||||
public async Task<ActionResult<TenantAdminStudentImportResult>> ImportStudents(
|
||||
TenantAdminStudentImportDto request,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
return Ok(await tenantAdminService.ImportStudentsAsync(ResolveActor(), request.ToCommand(), cancellationToken));
|
||||
}
|
||||
|
||||
[HttpPost("students/bulk-assign-class")]
|
||||
[Authorize(Policy = BackendPermissions.TenantStudentManage)]
|
||||
[EndpointSummary("批量分班")]
|
||||
[ProducesResponseType<TenantAdminBulkOperationResult>(StatusCodes.Status200OK)]
|
||||
public async Task<ActionResult<TenantAdminBulkOperationResult>> BulkAssignClass(
|
||||
TenantAdminBulkAssignClassDto request,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
return Ok(await tenantAdminService.BulkAssignClassAsync(ResolveActor(), request.ToCommand(), cancellationToken));
|
||||
}
|
||||
|
||||
[HttpPost("students/bulk-status")]
|
||||
[Authorize(Policy = BackendPermissions.TenantStudentManage)]
|
||||
[EndpointSummary("批量调整学生状态")]
|
||||
[ProducesResponseType<TenantAdminBulkOperationResult>(StatusCodes.Status200OK)]
|
||||
public async Task<ActionResult<TenantAdminBulkOperationResult>> BulkStudentStatus(
|
||||
TenantAdminBulkStatusDto request,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
return Ok(await tenantAdminService.BulkUpdateStudentStatusAsync(ResolveActor(), request.ToCommand(), cancellationToken));
|
||||
}
|
||||
|
||||
[HttpGet("students/supervision/rules")]
|
||||
[Authorize(Policy = BackendPermissions.TenantStudentManage)]
|
||||
[EndpointSummary("查询学习督导规则")]
|
||||
[ProducesResponseType<CatalogList<TenantSupervisionRuleItem>>(StatusCodes.Status200OK)]
|
||||
public async Task<ActionResult<CatalogList<TenantSupervisionRuleItem>>> SupervisionRules(CancellationToken cancellationToken)
|
||||
{
|
||||
return Ok(await tenantAdminService.GetSupervisionRulesAsync(ResolveActor(), cancellationToken));
|
||||
}
|
||||
|
||||
[HttpPut("students/supervision/rules")]
|
||||
[Authorize(Policy = BackendPermissions.TenantStudentManage)]
|
||||
[EndpointSummary("新增或更新学习督导规则")]
|
||||
[ProducesResponseType<ContentManagementResult<TenantSupervisionRuleItem>>(StatusCodes.Status200OK)]
|
||||
public async Task<ActionResult<ContentManagementResult<TenantSupervisionRuleItem>>> UpsertSupervisionRule(
|
||||
UpsertTenantSupervisionRuleDto request,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
return Ok(await tenantAdminService.UpsertSupervisionRuleAsync(ResolveActor(), request.ToCommand(), cancellationToken));
|
||||
}
|
||||
|
||||
[HttpGet("students/supervision/preview")]
|
||||
[Authorize(Policy = BackendPermissions.TenantStudentManage)]
|
||||
[EndpointSummary("预览学习风险学生")]
|
||||
[ProducesResponseType<TenantSupervisionPreview>(StatusCodes.Status200OK)]
|
||||
public async Task<ActionResult<TenantSupervisionPreview>> PreviewSupervision(CancellationToken cancellationToken)
|
||||
{
|
||||
return Ok(await tenantAdminService.PreviewSupervisionAsync(ResolveActor(), cancellationToken));
|
||||
}
|
||||
|
||||
[HttpPost("students/supervision/generate")]
|
||||
[Authorize(Policy = BackendPermissions.TenantStudentManage)]
|
||||
[EndpointSummary("批量生成学习督导跟进任务")]
|
||||
[ProducesResponseType<TenantSupervisionGenerateResult>(StatusCodes.Status200OK)]
|
||||
public async Task<ActionResult<TenantSupervisionGenerateResult>> GenerateSupervision(
|
||||
TenantSupervisionGenerateDto request,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
return Ok(await tenantAdminService.GenerateSupervisionFollowupsAsync(ResolveActor(), request.ToCommand(), cancellationToken));
|
||||
}
|
||||
|
||||
[HttpGet("student-followups/report")]
|
||||
[Authorize(Policy = BackendPermissions.TenantStudentManage)]
|
||||
[EndpointSummary("查询学生跟进统计报表")]
|
||||
[ProducesResponseType<TenantFollowupReport>(StatusCodes.Status200OK)]
|
||||
public async Task<ActionResult<TenantFollowupReport>> FollowupReport(CancellationToken cancellationToken)
|
||||
{
|
||||
return Ok(await tenantAdminService.GetFollowupReportAsync(ResolveActor(), cancellationToken));
|
||||
}
|
||||
|
||||
[HttpGet("feedbacks/report")]
|
||||
[Authorize(Policy = BackendPermissions.TenantStudentManage)]
|
||||
[EndpointSummary("查询反馈处理统计报表")]
|
||||
[ProducesResponseType<TenantFeedbackReport>(StatusCodes.Status200OK)]
|
||||
public async Task<ActionResult<TenantFeedbackReport>> FeedbackReport(CancellationToken cancellationToken)
|
||||
{
|
||||
return Ok(await tenantAdminService.GetFeedbackReportAsync(ResolveActor(), cancellationToken));
|
||||
}
|
||||
|
||||
[HttpGet("points/risk-report")]
|
||||
[Authorize(Policy = BackendPermissions.TenantStudentManage)]
|
||||
[EndpointSummary("查询积分风险统计报表")]
|
||||
[ProducesResponseType<TenantPointRiskReport>(StatusCodes.Status200OK)]
|
||||
public async Task<ActionResult<TenantPointRiskReport>> PointRiskReport(CancellationToken cancellationToken)
|
||||
{
|
||||
return Ok(await tenantAdminService.GetPointRiskReportAsync(ResolveActor(), cancellationToken));
|
||||
}
|
||||
|
||||
[HttpGet("student-notes")]
|
||||
[Authorize(Policy = BackendPermissions.TenantStudentManage)]
|
||||
[EndpointSummary("查询学生备注")]
|
||||
|
||||
Reference in New Issue
Block a user