feat(store): add dedicated pickup mode save endpoint
All checks were successful
Build and Deploy TenantApi / build-and-deploy (push) Successful in 46s
All checks were successful
Build and Deploy TenantApi / build-and-deploy (push) Successful in 46s
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user