From 48cf852d46f5e21fcc8c27d9d8a765e73a4be0d3 Mon Sep 17 00:00:00 2001 From: MSuMshk <2039814060@qq.com> Date: Fri, 20 Feb 2026 10:39:34 +0800 Subject: [PATCH] =?UTF-8?q?feat(project):=20=E6=96=B0=E5=A2=9E=E5=8C=85?= =?UTF-8?q?=E8=A3=85=E8=B4=B9=E6=A8=A1=E5=BC=8F=E5=88=87=E6=8D=A2=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Contracts/Store/StoreFeesContracts.cs | 15 ++++++++ .../Controllers/StoreFeesController.cs | 34 +++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/src/Api/TakeoutSaaS.TenantApi/Contracts/Store/StoreFeesContracts.cs b/src/Api/TakeoutSaaS.TenantApi/Contracts/Store/StoreFeesContracts.cs index c6a279d..94f6a34 100644 --- a/src/Api/TakeoutSaaS.TenantApi/Contracts/Store/StoreFeesContracts.cs +++ b/src/Api/TakeoutSaaS.TenantApi/Contracts/Store/StoreFeesContracts.cs @@ -104,6 +104,21 @@ public sealed class StoreFeesSettingsDto public StoreOtherFeesDto OtherFees { get; set; } = new(); } +/// +/// 保存包装费模式请求。 +/// +public sealed class SaveStoreFeesModeRequest +{ + /// + /// StoreId。 + /// + public string StoreId { get; set; } = string.Empty; + /// + /// PackagingFeeMode。 + /// + public string PackagingFeeMode { get; set; } = "order"; +} + /// /// 复制费用请求。 /// diff --git a/src/Api/TakeoutSaaS.TenantApi/Controllers/StoreFeesController.cs b/src/Api/TakeoutSaaS.TenantApi/Controllers/StoreFeesController.cs index 07eeb28..3ee5f09 100644 --- a/src/Api/TakeoutSaaS.TenantApi/Controllers/StoreFeesController.cs +++ b/src/Api/TakeoutSaaS.TenantApi/Controllers/StoreFeesController.cs @@ -87,6 +87,40 @@ public sealed class StoreFeesController( return ApiResponse.Ok(MapFeeSettings(parsedStoreId, result)); } + /// + /// 保存包装费收取方式。 + /// + [HttpPost("fees/mode/save")] + [ProducesResponseType(typeof(ApiResponse), StatusCodes.Status200OK)] + public async Task> SaveMode([FromBody] SaveStoreFeesModeRequest request, CancellationToken cancellationToken) + { + var parsedStoreId = StoreApiHelpers.ParseRequiredSnowflake(request.StoreId, "storeId"); + var packagingFeeMode = ParsePackagingFeeMode(request.PackagingFeeMode); + var (tenantId, merchantId) = StoreApiHelpers.GetTenantMerchantContext(storeContextService); + var store = await StoreApiHelpers.EnsureStoreAccessibleAsync(dbContext, tenantId, merchantId, parsedStoreId, cancellationToken); + + var fee = await dbContext.StoreFees + .FirstOrDefaultAsync(x => x.TenantId == tenantId && x.StoreId == parsedStoreId, cancellationToken); + if (fee is null) + { + fee = new StoreFee + { + StoreId = parsedStoreId, + TenantId = store.TenantId + }; + await dbContext.StoreFees.AddAsync(fee, cancellationToken); + } + + fee.PackagingFeeMode = packagingFeeMode; + if (packagingFeeMode == PackagingFeeMode.PerItem) + { + fee.OrderPackagingFeeMode = OrderPackagingFeeMode.Fixed; + } + + await dbContext.SaveChangesAsync(cancellationToken); + return ApiResponse.Ok(null); + } + /// /// 复制费用设置。 ///