feat: 增加分页排序与FluentValidation

This commit is contained in:
2025-12-02 10:50:43 +08:00
parent 93141fbf0c
commit 97bf6cacb0
63 changed files with 904 additions and 49 deletions

View File

@@ -28,9 +28,27 @@ public sealed class SearchStoresQueryHandler(
stores = stores.Where(x => x.MerchantId == request.MerchantId.Value).ToList();
}
return stores
.Select(MapToDto)
var sorted = ApplySorting(stores, request.SortBy, request.SortDescending);
var paged = sorted
.Skip((request.Page - 1) * request.PageSize)
.Take(request.PageSize)
.ToList();
return paged.Select(MapToDto).ToList();
}
private static IOrderedEnumerable<Domain.Stores.Entities.Store> ApplySorting(
IReadOnlyCollection<Domain.Stores.Entities.Store> stores,
string? sortBy,
bool sortDescending)
{
return sortBy?.ToLowerInvariant() switch
{
"name" => sortDescending ? stores.OrderByDescending(x => x.Name) : stores.OrderBy(x => x.Name),
"code" => sortDescending ? stores.OrderByDescending(x => x.Code) : stores.OrderBy(x => x.Code),
"status" => sortDescending ? stores.OrderByDescending(x => x.Status) : stores.OrderBy(x => x.Status),
_ => sortDescending ? stores.OrderByDescending(x => x.CreatedAt) : stores.OrderBy(x => x.CreatedAt)
};
}
private static StoreDto MapToDto(Domain.Stores.Entities.Store store) => new()
@@ -54,6 +72,7 @@ public sealed class SearchStoresQueryHandler(
DeliveryRadiusKm = store.DeliveryRadiusKm,
SupportsDineIn = store.SupportsDineIn,
SupportsPickup = store.SupportsPickup,
SupportsDelivery = store.SupportsDelivery
SupportsDelivery = store.SupportsDelivery,
CreatedAt = store.CreatedAt
};
}