From adac05521ae80183c2a95c0f94af9ea0ca9eb012 Mon Sep 17 00:00:00 2001 From: MSuMshk <2039814060@qq.com> Date: Fri, 20 Feb 2026 10:09:33 +0800 Subject: [PATCH] feat(store): add dedicated pickup mode save endpoint --- .../Contracts/Store/StorePickupContracts.cs | 15 ++++++++++ .../Controllers/StorePickupController.cs | 30 +++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/src/Api/TakeoutSaaS.TenantApi/Contracts/Store/StorePickupContracts.cs b/src/Api/TakeoutSaaS.TenantApi/Contracts/Store/StorePickupContracts.cs index ecc5758..03228cf 100644 --- a/src/Api/TakeoutSaaS.TenantApi/Contracts/Store/StorePickupContracts.cs +++ b/src/Api/TakeoutSaaS.TenantApi/Contracts/Store/StorePickupContracts.cs @@ -227,6 +227,21 @@ public sealed class SavePickupFineRuleRequest public PickupFineRuleDto FineRule { get; set; } = new(); } +/// +/// 保存自提模式请求。 +/// +public sealed class SavePickupModeRequest +{ + /// + /// StoreId。 + /// + public string StoreId { get; set; } = string.Empty; + /// + /// Mode。 + /// + public string Mode { get; set; } = string.Empty; +} + /// /// 复制自提设置请求。 /// diff --git a/src/Api/TakeoutSaaS.TenantApi/Controllers/StorePickupController.cs b/src/Api/TakeoutSaaS.TenantApi/Controllers/StorePickupController.cs index 0266981..36bdf6d 100644 --- a/src/Api/TakeoutSaaS.TenantApi/Controllers/StorePickupController.cs +++ b/src/Api/TakeoutSaaS.TenantApi/Controllers/StorePickupController.cs @@ -182,6 +182,26 @@ public sealed class StorePickupController( return ApiResponse.Ok(null); } + /// + /// 保存自提模式。 + /// + [HttpPost("pickup/mode/save")] + [ProducesResponseType(typeof(ApiResponse), StatusCodes.Status200OK)] + public async Task> SaveMode([FromBody] SavePickupModeRequest request, CancellationToken cancellationToken) + { + var parsedStoreId = StoreApiHelpers.ParseRequiredSnowflake(request.StoreId, "storeId"); + var mode = ParseRequiredPickupMode(request.Mode); + var (tenantId, merchantId) = StoreApiHelpers.GetTenantMerchantContext(storeContextService); + await StoreApiHelpers.EnsureStoreAccessibleAsync(dbContext, tenantId, merchantId, parsedStoreId, cancellationToken); + + var setting = await EnsurePickupSettingAsync(tenantId, parsedStoreId, cancellationToken); + setting.Mode = mode; + setting.RowVersion = CreateRowVersion(); + + await dbContext.SaveChangesAsync(cancellationToken); + return ApiResponse.Ok(null); + } + /// /// 复制自提设置。 /// @@ -305,6 +325,16 @@ public sealed class StorePickupController( return RandomNumberGenerator.GetBytes(16); } + private static StorePickupMode ParseRequiredPickupMode(string? mode) + { + return (mode ?? string.Empty).Trim().ToLowerInvariant() switch + { + "big" => StorePickupMode.Big, + "fine" => StorePickupMode.Fine, + _ => throw new BusinessException(ErrorCodes.BadRequest, "mode 非法") + }; + } + private static PickupFineRuleDto? ParseFineRule(string? raw) { if (string.IsNullOrWhiteSpace(raw))