feat: Add tiered packaging fee support for stores
Introduces tiered packaging fee configuration for stores by adding OrderPackagingFeeMode and PackagingFeeTiers fields to StoreFee. Updates DTOs, validators, handlers, and mapping logic to support both fixed and tiered packaging fee modes. Adds StoreFeeTierHelper for tier normalization and serialization, and includes a database migration to persist the new fields.
This commit is contained in:
@@ -57,9 +57,22 @@ public sealed class UpdateStoreFeeCommandHandler(
|
||||
fee.MinimumOrderAmount = request.MinimumOrderAmount;
|
||||
fee.BaseDeliveryFee = request.DeliveryFee;
|
||||
fee.PackagingFeeMode = request.PackagingFeeMode;
|
||||
fee.FixedPackagingFee = request.PackagingFeeMode == PackagingFeeMode.Fixed
|
||||
? request.FixedPackagingFee ?? 0m
|
||||
: 0m;
|
||||
fee.OrderPackagingFeeMode = request.PackagingFeeMode == PackagingFeeMode.Fixed
|
||||
? request.OrderPackagingFeeMode
|
||||
: OrderPackagingFeeMode.Fixed;
|
||||
if (request.PackagingFeeMode == PackagingFeeMode.Fixed && request.OrderPackagingFeeMode == OrderPackagingFeeMode.Tiered)
|
||||
{
|
||||
var normalizedTiers = StoreFeeTierHelper.Normalize(request.PackagingFeeTiers);
|
||||
fee.FixedPackagingFee = 0m;
|
||||
fee.PackagingFeeTiersJson = StoreFeeTierHelper.Serialize(normalizedTiers);
|
||||
}
|
||||
else
|
||||
{
|
||||
fee.FixedPackagingFee = request.PackagingFeeMode == PackagingFeeMode.Fixed
|
||||
? request.FixedPackagingFee ?? 0m
|
||||
: 0m;
|
||||
fee.PackagingFeeTiersJson = null;
|
||||
}
|
||||
fee.FreeDeliveryThreshold = request.FreeDeliveryThreshold;
|
||||
|
||||
// 4. (空行后) 保存并返回
|
||||
|
||||
Reference in New Issue
Block a user