feat(project): 新增包装费模式切换接口
All checks were successful
Build and Deploy TenantApi / build-and-deploy (push) Successful in 44s

This commit is contained in:
2026-02-20 10:39:34 +08:00
parent adac05521a
commit 48cf852d46
2 changed files with 49 additions and 0 deletions

View File

@@ -104,6 +104,21 @@ public sealed class StoreFeesSettingsDto
public StoreOtherFeesDto OtherFees { get; set; } = new();
}
/// <summary>
/// 保存包装费模式请求。
/// </summary>
public sealed class SaveStoreFeesModeRequest
{
/// <summary>
/// StoreId。
/// </summary>
public string StoreId { get; set; } = string.Empty;
/// <summary>
/// PackagingFeeMode。
/// </summary>
public string PackagingFeeMode { get; set; } = "order";
}
/// <summary>
/// 复制费用请求。
/// </summary>

View File

@@ -87,6 +87,40 @@ public sealed class StoreFeesController(
return ApiResponse<StoreFeesSettingsDto>.Ok(MapFeeSettings(parsedStoreId, result));
}
/// <summary>
/// 保存包装费收取方式。
/// </summary>
[HttpPost("fees/mode/save")]
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status200OK)]
public async Task<ApiResponse<object>> 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<object>.Ok(null);
}
/// <summary>
/// 复制费用设置。
/// </summary>