forked from xiongyuxing/tiku-backend.net
feat(saas): implement marketplace and tenant onboarding
This commit is contained in:
@@ -146,6 +146,7 @@ public sealed class CatalogController(
|
||||
}
|
||||
|
||||
[HttpGet("question-collections")]
|
||||
[Tiku.Api.Security.RequireSaasFeature(SaasFeatureCatalog.Practice)]
|
||||
[EndpointSummary("查询可用题集")]
|
||||
[ProducesResponseType<CatalogList<QuestionCollectionCatalogItem>>(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType<ProblemDetails>(StatusCodes.Status404NotFound)]
|
||||
@@ -159,6 +160,7 @@ public sealed class CatalogController(
|
||||
}
|
||||
|
||||
[HttpGet("question-collections/questions")]
|
||||
[Tiku.Api.Security.RequireSaasFeature(SaasFeatureCatalog.Practice)]
|
||||
[EndpointSummary("查询题集内题目")]
|
||||
[ProducesResponseType<CatalogList<CollectionQuestionCatalogItem>>(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType<ProblemDetails>(StatusCodes.Status400BadRequest)]
|
||||
@@ -173,6 +175,7 @@ public sealed class CatalogController(
|
||||
}
|
||||
|
||||
[HttpGet("practice-blueprints")]
|
||||
[Tiku.Api.Security.RequireSaasFeature(SaasFeatureCatalog.Practice)]
|
||||
[EndpointSummary("查询练习蓝图")]
|
||||
[ProducesResponseType<CatalogList<PracticeBlueprintCatalogItem>>(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType<ProblemDetails>(StatusCodes.Status404NotFound)]
|
||||
@@ -186,6 +189,7 @@ public sealed class CatalogController(
|
||||
}
|
||||
|
||||
[HttpGet("question-banks")]
|
||||
[Tiku.Api.Security.RequireSaasFeature(SaasFeatureCatalog.Practice)]
|
||||
[EndpointSummary("查询题库列表")]
|
||||
[ProducesResponseType<CatalogList<QuestionBankCatalogItem>>(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType<ProblemDetails>(StatusCodes.Status404NotFound)]
|
||||
@@ -199,6 +203,7 @@ public sealed class CatalogController(
|
||||
}
|
||||
|
||||
[HttpGet("questions")]
|
||||
[Tiku.Api.Security.RequireSaasFeature(SaasFeatureCatalog.Practice)]
|
||||
[EndpointSummary("查询已发布题目")]
|
||||
[EndpointDescription("支持按题库、科目、分类、模块节点、内容入口、内容节点、题集或题目 ID 列表筛选。")]
|
||||
[ProducesResponseType<CatalogList<QuestionCatalogItem>>(StatusCodes.Status200OK)]
|
||||
@@ -213,6 +218,7 @@ public sealed class CatalogController(
|
||||
}
|
||||
|
||||
[HttpGet("questions/{questionId:guid}")]
|
||||
[Tiku.Api.Security.RequireSaasFeature(SaasFeatureCatalog.Practice)]
|
||||
[EndpointSummary("查询题目详情")]
|
||||
[ProducesResponseType<QuestionCatalogItem>(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType<ProblemDetails>(StatusCodes.Status404NotFound)]
|
||||
@@ -227,6 +233,7 @@ public sealed class CatalogController(
|
||||
}
|
||||
|
||||
[HttpGet("questions/{questionId:guid}/versions")]
|
||||
[Tiku.Api.Security.RequireSaasFeature(SaasFeatureCatalog.Practice)]
|
||||
[EndpointSummary("查询题目版本")]
|
||||
[ProducesResponseType<CatalogList<QuestionVersionCatalogItem>>(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType<ProblemDetails>(StatusCodes.Status404NotFound)]
|
||||
@@ -241,6 +248,7 @@ public sealed class CatalogController(
|
||||
}
|
||||
|
||||
[HttpGet("vocabulary-units")]
|
||||
[Tiku.Api.Security.RequireSaasFeature(SaasFeatureCatalog.Vocabulary)]
|
||||
[EndpointSummary("查询词汇单元")]
|
||||
[ProducesResponseType<CatalogList<VocabularyUnitCatalogItem>>(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType<ProblemDetails>(StatusCodes.Status404NotFound)]
|
||||
@@ -254,6 +262,7 @@ public sealed class CatalogController(
|
||||
}
|
||||
|
||||
[HttpGet("vocabulary-words")]
|
||||
[Tiku.Api.Security.RequireSaasFeature(SaasFeatureCatalog.Vocabulary)]
|
||||
[EndpointSummary("查询词汇单词")]
|
||||
[ProducesResponseType<CatalogList<VocabularyWordCatalogItem>>(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType<ProblemDetails>(StatusCodes.Status404NotFound)]
|
||||
@@ -267,6 +276,7 @@ public sealed class CatalogController(
|
||||
}
|
||||
|
||||
[HttpGet("handbook-subjects")]
|
||||
[Tiku.Api.Security.RequireSaasFeature(SaasFeatureCatalog.Handbook)]
|
||||
[EndpointSummary("查询知识手册科目")]
|
||||
[ProducesResponseType<CatalogList<HandbookSubjectCatalogItem>>(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType<ProblemDetails>(StatusCodes.Status404NotFound)]
|
||||
@@ -280,6 +290,7 @@ public sealed class CatalogController(
|
||||
}
|
||||
|
||||
[HttpGet("handbook-chapters")]
|
||||
[Tiku.Api.Security.RequireSaasFeature(SaasFeatureCatalog.Handbook)]
|
||||
[EndpointSummary("查询知识手册章节")]
|
||||
[ProducesResponseType<CatalogList<HandbookChapterCatalogItem>>(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType<ProblemDetails>(StatusCodes.Status404NotFound)]
|
||||
@@ -293,6 +304,7 @@ public sealed class CatalogController(
|
||||
}
|
||||
|
||||
[HttpGet("handbook-entries")]
|
||||
[Tiku.Api.Security.RequireSaasFeature(SaasFeatureCatalog.Handbook)]
|
||||
[EndpointSummary("查询知识手册条目")]
|
||||
[ProducesResponseType<CatalogList<HandbookEntryCatalogItem>>(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType<ProblemDetails>(StatusCodes.Status404NotFound)]
|
||||
@@ -345,6 +357,7 @@ public sealed class CatalogController(
|
||||
}
|
||||
|
||||
[HttpGet("video-explanations")]
|
||||
[Tiku.Api.Security.RequireSaasFeature(SaasFeatureCatalog.Video)]
|
||||
[EndpointSummary("查询视频讲解")]
|
||||
[ProducesResponseType<CatalogList<VideoExplanationCatalogItem>>(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType<ProblemDetails>(StatusCodes.Status404NotFound)]
|
||||
@@ -358,6 +371,7 @@ public sealed class CatalogController(
|
||||
}
|
||||
|
||||
[HttpGet("question-videos")]
|
||||
[Tiku.Api.Security.RequireSaasFeature(SaasFeatureCatalog.Video)]
|
||||
[EndpointSummary("查询题目关联视频")]
|
||||
[ProducesResponseType<CatalogList<QuestionVideoCatalogItem>>(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType<ProblemDetails>(StatusCodes.Status404NotFound)]
|
||||
@@ -371,6 +385,7 @@ public sealed class CatalogController(
|
||||
}
|
||||
|
||||
[HttpGet("banners")]
|
||||
[Tiku.Api.Security.RequireSaasFeature(SaasFeatureCatalog.SiteContent)]
|
||||
[EndpointSummary("查询首页横幅")]
|
||||
[ProducesResponseType<CatalogList<BannerCatalogItem>>(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType<ProblemDetails>(StatusCodes.Status404NotFound)]
|
||||
@@ -384,6 +399,7 @@ public sealed class CatalogController(
|
||||
}
|
||||
|
||||
[HttpGet("faqs")]
|
||||
[Tiku.Api.Security.RequireSaasFeature(SaasFeatureCatalog.SiteContent)]
|
||||
[EndpointSummary("查询常见问题")]
|
||||
[ProducesResponseType<CatalogList<FaqCatalogItem>>(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType<ProblemDetails>(StatusCodes.Status404NotFound)]
|
||||
@@ -397,6 +413,7 @@ public sealed class CatalogController(
|
||||
}
|
||||
|
||||
[HttpGet("announcements")]
|
||||
[Tiku.Api.Security.RequireSaasFeature(SaasFeatureCatalog.SiteContent)]
|
||||
[EndpointSummary("查询公告")]
|
||||
[ProducesResponseType<CatalogList<AnnouncementCatalogItem>>(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType<ProblemDetails>(StatusCodes.Status404NotFound)]
|
||||
@@ -410,6 +427,7 @@ public sealed class CatalogController(
|
||||
}
|
||||
|
||||
[HttpGet("exam-dates")]
|
||||
[Tiku.Api.Security.RequireSaasFeature(SaasFeatureCatalog.SiteContent)]
|
||||
[EndpointSummary("查询考试日期")]
|
||||
[ProducesResponseType<CatalogList<ExamDateCatalogItem>>(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType<ProblemDetails>(StatusCodes.Status404NotFound)]
|
||||
@@ -423,6 +441,7 @@ public sealed class CatalogController(
|
||||
}
|
||||
|
||||
[HttpGet("products")]
|
||||
[Tiku.Api.Security.RequireSaasFeature(SaasFeatureCatalog.StudentStore)]
|
||||
[EndpointSummary("查询可购买产品")]
|
||||
[ProducesResponseType<CatalogList<ProductCatalogItem>>(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType<ProblemDetails>(StatusCodes.Status404NotFound)]
|
||||
@@ -436,6 +455,7 @@ public sealed class CatalogController(
|
||||
}
|
||||
|
||||
[HttpGet("svip-plans")]
|
||||
[Tiku.Api.Security.RequireSaasFeature(SaasFeatureCatalog.StudentStore)]
|
||||
[EndpointSummary("查询 SVIP 套餐")]
|
||||
[ProducesResponseType<CatalogList<SvipPlanCatalogItem>>(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType<ProblemDetails>(StatusCodes.Status404NotFound)]
|
||||
|
||||
Reference in New Issue
Block a user