feat(store): add dedicated pickup mode save endpoint
All checks were successful
Build and Deploy TenantApi / build-and-deploy (push) Successful in 46s

This commit is contained in:
2026-02-20 10:09:33 +08:00
parent 8a6fc867c2
commit adac05521a
2 changed files with 45 additions and 0 deletions

View File

@@ -227,6 +227,21 @@ public sealed class SavePickupFineRuleRequest
public PickupFineRuleDto FineRule { get; set; } = new();
}
/// <summary>
/// 保存自提模式请求。
/// </summary>
public sealed class SavePickupModeRequest
{
/// <summary>
/// StoreId。
/// </summary>
public string StoreId { get; set; } = string.Empty;
/// <summary>
/// Mode。
/// </summary>
public string Mode { get; set; } = string.Empty;
}
/// <summary>
/// 复制自提设置请求。
/// </summary>

View File

@@ -182,6 +182,26 @@ public sealed class StorePickupController(
return ApiResponse<object>.Ok(null);
}
/// <summary>
/// 保存自提模式。
/// </summary>
[HttpPost("pickup/mode/save")]
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status200OK)]
public async Task<ApiResponse<object>> 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<object>.Ok(null);
}
/// <summary>
/// 复制自提设置。
/// </summary>
@@ -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))