From d7821fa1af9dfb3309c4d5cc48ca2f8a08666ae5 Mon Sep 17 00:00:00 2001
From: MSuMshk <2039814060@qq.com>
Date: Thu, 29 Jan 2026 04:53:37 +0000
Subject: [PATCH] =?UTF-8?q?refactor:=20=E7=A7=BB=E9=99=A4=E7=A7=9F?=
=?UTF-8?q?=E6=88=B7=E5=85=BC=E5=AE=B9=E5=B9=B6=E7=BB=9F=E4=B8=80=E8=B7=AF?=
=?UTF-8?q?=E7=94=B1=E7=A7=9F=E6=88=B7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
TakeoutSaaS.Docs | 2 +-
.../DictionaryLabelOverridesController.cs | 53 +++------
.../DictionaryOverridesController.cs | 81 +++++--------
.../TenantAnnouncementsController.cs | 110 +++++++-----------
.../Controllers/TenantRolesController.cs | 84 +++----------
.../Controllers/TenantsController.cs | 2 +-
.../Filters/TenantRouteContextFilter.cs | 66 +++++++++++
src/Api/TakeoutSaaS.AdminApi/Program.cs | 9 ++
8 files changed, 186 insertions(+), 221 deletions(-)
create mode 100644 src/Api/TakeoutSaaS.AdminApi/Filters/TenantRouteContextFilter.cs
diff --git a/TakeoutSaaS.Docs b/TakeoutSaaS.Docs
index 88ad710..318aded 160000
--- a/TakeoutSaaS.Docs
+++ b/TakeoutSaaS.Docs
@@ -1 +1 @@
-Subproject commit 88ad71041bcec59715274c9ca568b0ca434408a1
+Subproject commit 318aded4bf7a3b05d8012b5199eaba26bdbb36b0
diff --git a/src/Api/TakeoutSaaS.AdminApi/Controllers/DictionaryLabelOverridesController.cs b/src/Api/TakeoutSaaS.AdminApi/Controllers/DictionaryLabelOverridesController.cs
index d031058..2f50743 100644
--- a/src/Api/TakeoutSaaS.AdminApi/Controllers/DictionaryLabelOverridesController.cs
+++ b/src/Api/TakeoutSaaS.AdminApi/Controllers/DictionaryLabelOverridesController.cs
@@ -7,7 +7,6 @@ using TakeoutSaaS.Module.Authorization.Attributes;
using TakeoutSaaS.Shared.Abstractions.Constants;
using TakeoutSaaS.Shared.Abstractions.Results;
using TakeoutSaaS.Shared.Abstractions.Security;
-using TakeoutSaaS.Shared.Abstractions.Tenancy;
using TakeoutSaaS.Shared.Web.Api;
namespace TakeoutSaaS.AdminApi.Controllers;
@@ -20,31 +19,29 @@ namespace TakeoutSaaS.AdminApi.Controllers;
[Route("api/admin/v{version:apiVersion}/dictionary/label-overrides")]
public sealed class DictionaryLabelOverridesController(
DictionaryLabelOverrideService labelOverrideService,
- ITenantProvider tenantProvider,
ICurrentUserAccessor currentUserAccessor)
: BaseApiController
{
- private const string TenantIdHeaderName = "X-Tenant-Id";
-
#region 租户端 API(租户覆盖系统字典)
///
/// 获取当前租户的标签覆盖列表。
///
- [HttpGet("tenant")]
+ [HttpGet("~/api/admin/v{version:apiVersion}/tenants/{tenantId:long}/dictionary/label-overrides")]
[PermissionAuthorize("dictionary:override:read")]
[ProducesResponseType(typeof(ApiResponse>), StatusCodes.Status200OK)]
public async Task>> ListTenantOverrides(
+ long tenantId,
[FromQuery] OverrideType? overrideType,
CancellationToken cancellationToken)
{
- var headerError = EnsureTenantHeader>();
- if (headerError != null)
+ // 1. 校验租户标识
+ if (tenantId <= 0)
{
- return headerError;
+ return ApiResponse>.Error(StatusCodes.Status400BadRequest, "租户标识无效");
}
- var tenantId = tenantProvider.GetCurrentTenantId();
+ // 2. (空行后) 查询租户覆盖列表
var result = await labelOverrideService.GetOverridesAsync(tenantId, overrideType, cancellationToken);
return ApiResponse>.Ok(result);
}
@@ -52,20 +49,21 @@ public sealed class DictionaryLabelOverridesController(
///
/// 租户覆盖系统字典项的标签。
///
- [HttpPost("tenant")]
+ [HttpPost("~/api/admin/v{version:apiVersion}/tenants/{tenantId:long}/dictionary/label-overrides")]
[PermissionAuthorize("dictionary:override:update")]
[ProducesResponseType(typeof(ApiResponse), StatusCodes.Status200OK)]
public async Task> CreateTenantOverride(
+ long tenantId,
[FromBody] UpsertLabelOverrideRequest request,
CancellationToken cancellationToken)
{
- var headerError = EnsureTenantHeader();
- if (headerError != null)
+ // 1. 校验租户标识
+ if (tenantId <= 0)
{
- return headerError;
+ return ApiResponse.Error(StatusCodes.Status400BadRequest, "租户标识无效");
}
- var tenantId = tenantProvider.GetCurrentTenantId();
+ // 2. (空行后) 执行租户覆盖
var operatorId = currentUserAccessor.UserId;
var result = await labelOverrideService.UpsertTenantOverrideAsync(tenantId, request, operatorId, cancellationToken);
return ApiResponse.Ok(result);
@@ -74,19 +72,19 @@ public sealed class DictionaryLabelOverridesController(
///
/// 租户删除自己的标签覆盖。
///
- [HttpDelete("tenant/{dictionaryItemId:long}")]
+ [HttpDelete("~/api/admin/v{version:apiVersion}/tenants/{tenantId:long}/dictionary/label-overrides/{dictionaryItemId:long}")]
[PermissionAuthorize("dictionary:override:delete")]
[ProducesResponseType(typeof(ApiResponse