feat(project): 新增包装费模式切换接口
All checks were successful
Build and Deploy TenantApi / build-and-deploy (push) Successful in 44s
All checks were successful
Build and Deploy TenantApi / build-and-deploy (push) Successful in 44s
This commit is contained in:
@@ -104,6 +104,21 @@ public sealed class StoreFeesSettingsDto
|
|||||||
public StoreOtherFeesDto OtherFees { get; set; } = new();
|
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>
|
||||||
/// 复制费用请求。
|
/// 复制费用请求。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -87,6 +87,40 @@ public sealed class StoreFeesController(
|
|||||||
return ApiResponse<StoreFeesSettingsDto>.Ok(MapFeeSettings(parsedStoreId, result));
|
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>
|
||||||
/// 复制费用设置。
|
/// 复制费用设置。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user