Files
it/TestAPI/Program.cs
2025-11-03 17:03:57 +08:00

472 lines
26 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Microsoft.AspNetCore.ResponseCompression;
using System.IO.Compression;
using System.Text.Json;
using System.Linq;
var builder = WebApplication.CreateBuilder(args);
// 添加响应压缩服务
builder.Services.AddResponseCompression(options =>
{
options.EnableForHttps = true;
options.Providers.Add<BrotliCompressionProvider>();
options.Providers.Add<GzipCompressionProvider>();
options.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(new[] { "application/json" });
});
// 配置压缩级别
builder.Services.Configure<BrotliCompressionProviderOptions>(options =>
{
options.Level = CompressionLevel.Fastest;
});
builder.Services.Configure<GzipCompressionProviderOptions>(options =>
{
options.Level = CompressionLevel.Fastest;
});
var app = builder.Build();
// 使用响应压缩中间件
app.UseResponseCompression();
// 添加一个返回大量数据的API端点以便测试压缩效果
app.MapGet("/api/data", () => new
{
Message = "这是一个用于测试响应压缩的API端点",
Data = Enumerable.Range(1, 1000).Select(i => new { Id = i, Name = $"Item {i}", Description = $"这是第{i}个项目的描述,包含更多文本内容以便测试压缩效果。" }).ToArray(),
Timestamp = DateTime.UtcNow
});
// 添加类别API端点供前端测试使用
app.MapGet("/api/categories", () => new[]
{
new { Id = 1, Name = "手机CPU", Description = "移动设备处理器性能排名", ProductCount = 25 },
new { Id = 2, Name = "手机GPU", Description = "移动设备图形处理器性能排名", ProductCount = 18 },
new { Id = 3, Name = "电脑CPU", Description = "桌面处理器性能排名", ProductCount = 32 },
new { Id = 4, Name = "电脑GPU", Description = "桌面显卡性能排名", ProductCount = 28 }
});
// 添加产品API端点供前端测试使用
app.MapGet("/api/products", (int? categoryId, int page = 1, int pageSize = 20, string sortBy = "PerformanceScore", string order = "desc") =>
{
// 模拟产品数据
var allProducts = new[]
{
new { Id = 1, Name = "Snapdragon 8 Gen 2", Model = "SM8550-AB", Manufacturer = "Qualcomm", ReleaseYear = 2022, PerformanceScore = 3879, CurrentRank = 1, ImageUrl = "/images/placeholder.svg", CategoryId = 1 },
new { Id = 2, Name = "A16 Bionic", Model = "A16 Bionic", Manufacturer = "Apple", ReleaseYear = 2022, PerformanceScore = 3756, CurrentRank = 2, ImageUrl = "/images/placeholder.svg", CategoryId = 1 },
new { Id = 3, Name = "Dimensity 9200", Model = "MT6985", Manufacturer = "MediaTek", ReleaseYear = 2022, PerformanceScore = 3512, CurrentRank = 3, ImageUrl = "/images/placeholder.svg", CategoryId = 1 },
new { Id = 4, Name = "Snapdragon 8+ Gen 1", Model = "SM8475", Manufacturer = "Qualcomm", ReleaseYear = 2022, PerformanceScore = 3341, CurrentRank = 4, ImageUrl = "/images/placeholder.svg", CategoryId = 1 },
new { Id = 5, Name = "A15 Bionic", Model = "A15 Bionic", Manufacturer = "Apple", ReleaseYear = 2021, PerformanceScore = 3215, CurrentRank = 5, ImageUrl = "/images/placeholder.svg", CategoryId = 1 },
new { Id = 6, Name = "Adreno 740", Model = "Adreno 740", Manufacturer = "Qualcomm", ReleaseYear = 2022, PerformanceScore = 14350, CurrentRank = 1, ImageUrl = "/images/placeholder.svg", CategoryId = 2 },
new { Id = 7, Name = "Apple A16 GPU", Model = "A16 GPU", Manufacturer = "Apple", ReleaseYear = 2022, PerformanceScore = 13980, CurrentRank = 2, ImageUrl = "/images/placeholder.svg", CategoryId = 2 },
new { Id = 8, Name = "Mali-G715 MC10", Model = "Mali-G715", Manufacturer = "ARM", ReleaseYear = 2022, PerformanceScore = 12150, CurrentRank = 3, ImageUrl = "/images/placeholder.svg", CategoryId = 2 },
new { Id = 9, Name = "Adreno 730", Model = "Adreno 730", Manufacturer = "Qualcomm", ReleaseYear = 2022, PerformanceScore = 11020, CurrentRank = 4, ImageUrl = "/images/placeholder.svg", CategoryId = 2 },
new { Id = 10, Name = "Apple A15 GPU", Model = "A15 GPU", Manufacturer = "Apple", ReleaseYear = 2021, PerformanceScore = 10560, CurrentRank = 5, ImageUrl = "/images/placeholder.svg", CategoryId = 2 },
new { Id = 11, Name = "Intel Core i9-13900K", Model = "i9-13900K", Manufacturer = "Intel", ReleaseYear = 2022, PerformanceScore = 3176, CurrentRank = 1, ImageUrl = "/images/placeholder.svg", CategoryId = 3 },
new { Id = 12, Name = "AMD Ryzen 9 7950X", Model = "Ryzen 9 7950X", Manufacturer = "AMD", ReleaseYear = 2022, PerformanceScore = 3095, CurrentRank = 2, ImageUrl = "/images/placeholder.svg", CategoryId = 3 },
new { Id = 13, Name = "Intel Core i7-13700K", Model = "i7-13700K", Manufacturer = "Intel", ReleaseYear = 2022, PerformanceScore = 2956, CurrentRank = 3, ImageUrl = "/images/placeholder.svg", CategoryId = 3 },
new { Id = 14, Name = "AMD Ryzen 9 5900X", Model = "Ryzen 9 5900X", Manufacturer = "AMD", ReleaseYear = 2020, PerformanceScore = 2835, CurrentRank = 4, ImageUrl = "/images/placeholder.svg", CategoryId = 3 },
new { Id = 15, Name = "Intel Core i5-13600K", Model = "i5-13600K", Manufacturer = "Intel", ReleaseYear = 2022, PerformanceScore = 2742, CurrentRank = 5, ImageUrl = "/images/placeholder.svg", CategoryId = 3 },
new { Id = 16, Name = "NVIDIA GeForce RTX 4090", Model = "RTX 4090", Manufacturer = "NVIDIA", ReleaseYear = 2022, PerformanceScore = 38928, CurrentRank = 1, ImageUrl = "/images/placeholder.svg", CategoryId = 4 },
new { Id = 17, Name = "NVIDIA GeForce RTX 4080", Model = "RTX 4080", Manufacturer = "NVIDIA", ReleaseYear = 2022, PerformanceScore = 32168, CurrentRank = 2, ImageUrl = "/images/placeholder.svg", CategoryId = 4 },
new { Id = 18, Name = "NVIDIA GeForce RTX 3090 Ti", Model = "RTX 3090 Ti", Manufacturer = "NVIDIA", ReleaseYear = 2022, PerformanceScore = 28595, CurrentRank = 3, ImageUrl = "/images/placeholder.svg", CategoryId = 4 },
new { Id = 19, Name = "AMD Radeon RX 7900 XTX", Model = "RX 7900 XTX", Manufacturer = "AMD", ReleaseYear = 2022, PerformanceScore = 27850, CurrentRank = 4, ImageUrl = "/images/placeholder.svg", CategoryId = 4 },
new { Id = 20, Name = "NVIDIA GeForce RTX 3090", Model = "RTX 3090", Manufacturer = "NVIDIA", ReleaseYear = 2020, PerformanceScore = 26420, CurrentRank = 5, ImageUrl = "/images/placeholder.svg", CategoryId = 4 }
};
// 根据类别ID筛选
var filteredProducts = categoryId.HasValue
? allProducts.Where(p => p.CategoryId == categoryId.Value).ToArray()
: allProducts;
// 排序
filteredProducts = sortBy.ToLower() switch
{
"name" => order.ToLower() == "desc"
? filteredProducts.OrderByDescending(p => p.Name).ToArray()
: filteredProducts.OrderBy(p => p.Name).ToArray(),
"manufacturer" => order.ToLower() == "desc"
? filteredProducts.OrderByDescending(p => p.Manufacturer).ToArray()
: filteredProducts.OrderBy(p => p.Manufacturer).ToArray(),
"releaseyear" => order.ToLower() == "desc"
? filteredProducts.OrderByDescending(p => p.ReleaseYear).ToArray()
: filteredProducts.OrderBy(p => p.ReleaseYear).ToArray(),
_ => order.ToLower() == "desc"
? filteredProducts.OrderByDescending(p => p.PerformanceScore).ToArray()
: filteredProducts.OrderBy(p => p.PerformanceScore).ToArray()
};
var totalItems = filteredProducts.Length;
var totalPages = (int)Math.Ceiling((double)totalItems / pageSize);
// 分页
var pagedProducts = filteredProducts
.Skip((page - 1) * pageSize)
.Take(pageSize)
.ToArray();
return new {
Items = pagedProducts,
Total = totalItems,
CurrentPage = page,
PageSize = pageSize,
TotalPages = totalPages
};
});
// 添加产品详情API端点
app.MapGet("/api/products/{id}", (int id) =>
{
// 模拟产品详情数据
var allProducts = new[]
{
new {
Id = 1,
Name = "Snapdragon 8 Gen 2",
Model = "SM8550-AB",
Manufacturer = "Qualcomm",
ReleaseYear = 2022,
PerformanceScore = 3879,
CurrentRank = 1,
ImageUrl = "/images/placeholder.svg",
CategoryId = 1,
Description = "高通骁龙8 Gen 2是2022年推出的旗舰移动处理器采用4nm工艺制程。",
Specifications = new[] {
new { Name = "工艺", Value = "4nm" },
new { Name = "核心数", Value = "8" },
new { Name = "主频", Value = "3.2GHz" },
new { Name = "GPU", Value = "Adreno 740" }
},
PerformanceScores = new[] {
new { Benchmark = "Geekbench 5 Single-Core", Score = 1524 },
new { Benchmark = "Geekbench 5 Multi-Core", Score = 5352 },
new { Benchmark = "AnTuTu 9", Score = 1314582 }
}
},
new {
Id = 2,
Name = "A16 Bionic",
Model = "A16 Bionic",
Manufacturer = "Apple",
ReleaseYear = 2022,
PerformanceScore = 3756,
CurrentRank = 2,
ImageUrl = "/images/placeholder.svg",
CategoryId = 1,
Description = "苹果A16 Bionic是2022年推出的移动处理器采用4nm工艺制程。",
Specifications = new[] {
new { Name = "工艺", Value = "4nm" },
new { Name = "核心数", Value = "6" },
new { Name = "主频", Value = "3.46GHz" },
new { Name = "GPU", Value = "Apple A16 GPU" }
},
PerformanceScores = new[] {
new { Benchmark = "Geekbench 5 Single-Core", Score = 1874 },
new { Benchmark = "Geekbench 5 Multi-Core", Score = 5372 },
new { Benchmark = "AnTuTu 9", Score = 1425876 }
}
},
new {
Id = 3,
Name = "Dimensity 9200",
Model = "MT6985",
Manufacturer = "MediaTek",
ReleaseYear = 2022,
PerformanceScore = 3512,
CurrentRank = 3,
ImageUrl = "/images/placeholder.svg",
CategoryId = 1,
Description = "联发科天玑9200是2022年推出的旗舰移动处理器采用4nm工艺制程。",
Specifications = new[] {
new { Name = "工艺", Value = "4nm" },
new { Name = "核心数", Value = "8" },
new { Name = "主频", Value = "3.05GHz" },
new { Name = "GPU", Value = "Mali-G715 MC10" }
},
PerformanceScores = new[] {
new { Benchmark = "Geekbench 5 Single-Core", Score = 1424 },
new { Benchmark = "Geekbench 5 Multi-Core", Score = 4485 },
new { Benchmark = "AnTuTu 9", Score = 1245876 }
}
},
new {
Id = 4,
Name = "Snapdragon 8+ Gen 1",
Model = "SM8475",
Manufacturer = "Qualcomm",
ReleaseYear = 2022,
PerformanceScore = 3341,
CurrentRank = 4,
ImageUrl = "/images/placeholder.svg",
CategoryId = 1,
Description = "高通骁龙8+ Gen 1是2022年推出的旗舰移动处理器采用4nm工艺制程。",
Specifications = new[] {
new { Name = "工艺", Value = "4nm" },
new { Name = "核心数", Value = "8" },
new { Name = "主频", Value = "3.2GHz" },
new { Name = "GPU", Value = "Adreno 730" }
},
PerformanceScores = new[] {
new { Benchmark = "Geekbench 5 Single-Core", Score = 1314 },
new { Benchmark = "Geekbench 5 Multi-Core", Score = 4185 },
new { Benchmark = "AnTuTu 9", Score = 1145876 }
}
}
};
var product = allProducts.FirstOrDefault(p => p.Id == id);
if (product == null)
{
return Results.NotFound(new { Message = "产品不存在" });
}
return Results.Ok(product);
});
// 添加产品搜索API端点
app.MapGet("/api/products/search", (string q, int? categoryId) =>
{
// 模拟产品数据
var allProducts = new[]
{
new { Id = 1, Name = "Snapdragon 8 Gen 2", Model = "SM8550-AB", Manufacturer = "Qualcomm", ReleaseYear = 2022, PerformanceScore = 3879, CurrentRank = 1, ImageUrl = "/images/placeholder.svg", CategoryId = 1 },
new { Id = 2, Name = "A16 Bionic", Model = "A16 Bionic", Manufacturer = "Apple", ReleaseYear = 2022, PerformanceScore = 3756, CurrentRank = 2, ImageUrl = "/images/placeholder.svg", CategoryId = 1 },
new { Id = 3, Name = "Dimensity 9200", Model = "MT6985", Manufacturer = "MediaTek", ReleaseYear = 2022, PerformanceScore = 3512, CurrentRank = 3, ImageUrl = "/images/placeholder.svg", CategoryId = 1 },
new { Id = 4, Name = "Snapdragon 8+ Gen 1", Model = "SM8475", Manufacturer = "Qualcomm", ReleaseYear = 2022, PerformanceScore = 3341, CurrentRank = 4, ImageUrl = "/images/placeholder.svg", CategoryId = 1 },
new { Id = 5, Name = "A15 Bionic", Model = "A15 Bionic", Manufacturer = "Apple", ReleaseYear = 2021, PerformanceScore = 3215, CurrentRank = 5, ImageUrl = "/images/placeholder.svg", CategoryId = 1 },
new { Id = 6, Name = "Adreno 740", Model = "Adreno 740", Manufacturer = "Qualcomm", ReleaseYear = 2022, PerformanceScore = 14350, CurrentRank = 1, ImageUrl = "/images/placeholder.svg", CategoryId = 2 },
new { Id = 7, Name = "Apple A16 GPU", Model = "A16 GPU", Manufacturer = "Apple", ReleaseYear = 2022, PerformanceScore = 13980, CurrentRank = 2, ImageUrl = "/images/placeholder.svg", CategoryId = 2 },
new { Id = 8, Name = "Mali-G715 MC10", Model = "Mali-G715", Manufacturer = "ARM", ReleaseYear = 2022, PerformanceScore = 12150, CurrentRank = 3, ImageUrl = "/images/placeholder.svg", CategoryId = 2 },
new { Id = 9, Name = "Adreno 730", Model = "Adreno 730", Manufacturer = "Qualcomm", ReleaseYear = 2022, PerformanceScore = 11020, CurrentRank = 4, ImageUrl = "/images/placeholder.svg", CategoryId = 2 },
new { Id = 10, Name = "Apple A15 GPU", Model = "A15 GPU", Manufacturer = "Apple", ReleaseYear = 2021, PerformanceScore = 10560, CurrentRank = 5, ImageUrl = "/images/placeholder.svg", CategoryId = 2 },
new { Id = 11, Name = "Intel Core i9-13900K", Model = "i9-13900K", Manufacturer = "Intel", ReleaseYear = 2022, PerformanceScore = 3176, CurrentRank = 1, ImageUrl = "/images/placeholder.svg", CategoryId = 3 },
new { Id = 12, Name = "AMD Ryzen 9 7950X", Model = "Ryzen 9 7950X", Manufacturer = "AMD", ReleaseYear = 2022, PerformanceScore = 3095, CurrentRank = 2, ImageUrl = "/images/placeholder.svg", CategoryId = 3 },
new { Id = 13, Name = "Intel Core i7-13700K", Model = "i7-13700K", Manufacturer = "Intel", ReleaseYear = 2022, PerformanceScore = 2956, CurrentRank = 3, ImageUrl = "/images/placeholder.svg", CategoryId = 3 },
new { Id = 14, Name = "AMD Ryzen 9 5900X", Model = "Ryzen 9 5900X", Manufacturer = "AMD", ReleaseYear = 2020, PerformanceScore = 2835, CurrentRank = 4, ImageUrl = "/images/placeholder.svg", CategoryId = 3 },
new { Id = 15, Name = "Intel Core i5-13600K", Model = "i5-13600K", Manufacturer = "Intel", ReleaseYear = 2022, PerformanceScore = 2742, CurrentRank = 5, ImageUrl = "/images/placeholder.svg", CategoryId = 3 },
new { Id = 16, Name = "NVIDIA GeForce RTX 4090", Model = "RTX 4090", Manufacturer = "NVIDIA", ReleaseYear = 2022, PerformanceScore = 38928, CurrentRank = 1, ImageUrl = "/images/placeholder.svg", CategoryId = 4 },
new { Id = 17, Name = "NVIDIA GeForce RTX 4080", Model = "RTX 4080", Manufacturer = "NVIDIA", ReleaseYear = 2022, PerformanceScore = 32168, CurrentRank = 2, ImageUrl = "/images/placeholder.svg", CategoryId = 4 },
new { Id = 18, Name = "NVIDIA GeForce RTX 3090 Ti", Model = "RTX 3090 Ti", Manufacturer = "NVIDIA", ReleaseYear = 2022, PerformanceScore = 28595, CurrentRank = 3, ImageUrl = "/images/placeholder.svg", CategoryId = 4 },
new { Id = 19, Name = "AMD Radeon RX 7900 XTX", Model = "RX 7900 XTX", Manufacturer = "AMD", ReleaseYear = 2022, PerformanceScore = 27850, CurrentRank = 4, ImageUrl = "/images/placeholder.svg", CategoryId = 4 },
new { Id = 20, Name = "NVIDIA GeForce RTX 3090", Model = "RTX 3090", Manufacturer = "NVIDIA", ReleaseYear = 2020, PerformanceScore = 26420, CurrentRank = 5, ImageUrl = "/images/placeholder.svg", CategoryId = 4 }
};
// 根据类别ID筛选
var filteredProducts = categoryId.HasValue
? allProducts.Where(p => p.CategoryId == categoryId.Value).ToArray()
: allProducts;
// 根据搜索关键词筛选
if (!string.IsNullOrWhiteSpace(q))
{
filteredProducts = filteredProducts.Where(p =>
p.Name.Contains(q, StringComparison.OrdinalIgnoreCase) ||
p.Model.Contains(q, StringComparison.OrdinalIgnoreCase) ||
p.Manufacturer.Contains(q, StringComparison.OrdinalIgnoreCase)
).ToArray();
}
return filteredProducts;
});
// 添加产品对比API端点
app.MapPost("/api/comparison", async (HttpRequest request) =>
{
try
{
// 读取请求体
var requestBody = await new StreamReader(request.Body).ReadToEndAsync();
// 尝试解析为JSON对象
dynamic jsonBody = JsonSerializer.Deserialize<Dictionary<string, object>>(requestBody);
// 提取productIds数组
if (jsonBody == null || !jsonBody.ContainsKey("productIds"))
{
return Results.BadRequest(new { Message = "请求体必须包含productIds字段" });
}
// 获取productIds数组
var productIdsJson = jsonBody["productIds"].ToString();
var productIds = JsonSerializer.Deserialize<int[]>(productIdsJson);
// 验证产品ID数量
if (productIds == null || productIds.Length < 2 || productIds.Length > 4)
{
return Results.BadRequest(new { Message = "产品对比需要2-4个产品ID" });
}
// 模拟产品详情数据
var allProducts = new[]
{
new {
Id = 1,
Name = "Snapdragon 8 Gen 2",
Model = "SM8550-AB",
Manufacturer = "Qualcomm",
ReleaseYear = 2022,
PerformanceScore = 3879,
CurrentRank = 1,
ImageUrl = "/images/placeholder.svg",
CategoryId = 1,
Description = "高通骁龙8 Gen 2是2022年推出的旗舰移动处理器采用4nm工艺制程。",
Specifications = new[] {
new { Name = "工艺", Value = "4nm" },
new { Name = "核心数", Value = "8" },
new { Name = "主频", Value = "3.2GHz" },
new { Name = "GPU", Value = "Adreno 740" }
},
PerformanceScores = new[] {
new { Benchmark = "Geekbench 5 Single-Core", Score = 1524 },
new { Benchmark = "Geekbench 5 Multi-Core", Score = 5352 },
new { Benchmark = "AnTuTu 9", Score = 1314582 }
}
},
new {
Id = 2,
Name = "A16 Bionic",
Model = "A16 Bionic",
Manufacturer = "Apple",
ReleaseYear = 2022,
PerformanceScore = 3756,
CurrentRank = 2,
ImageUrl = "/images/placeholder.svg",
CategoryId = 1,
Description = "苹果A16 Bionic是2022年推出的移动处理器采用4nm工艺制程。",
Specifications = new[] {
new { Name = "工艺", Value = "4nm" },
new { Name = "核心数", Value = "6" },
new { Name = "主频", Value = "3.46GHz" },
new { Name = "GPU", Value = "Apple A16 GPU" }
},
PerformanceScores = new[] {
new { Benchmark = "Geekbench 5 Single-Core", Score = 1874 },
new { Benchmark = "Geekbench 5 Multi-Core", Score = 5372 },
new { Benchmark = "AnTuTu 9", Score = 1425876 }
}
},
new {
Id = 3,
Name = "Dimensity 9200",
Model = "MT6985",
Manufacturer = "MediaTek",
ReleaseYear = 2022,
PerformanceScore = 3512,
CurrentRank = 3,
ImageUrl = "/images/placeholder.svg",
CategoryId = 1,
Description = "联发科天玑9200是2022年推出的旗舰移动处理器采用4nm工艺制程。",
Specifications = new[] {
new { Name = "工艺", Value = "4nm" },
new { Name = "核心数", Value = "8" },
new { Name = "主频", Value = "3.05GHz" },
new { Name = "GPU", Value = "Mali-G715 MC10" }
},
PerformanceScores = new[] {
new { Benchmark = "Geekbench 5 Single-Core", Score = 1424 },
new { Benchmark = "Geekbench 5 Multi-Core", Score = 4485 },
new { Benchmark = "AnTuTu 9", Score = 1245876 }
}
},
new {
Id = 4,
Name = "Snapdragon 8+ Gen 1",
Model = "SM8475",
Manufacturer = "Qualcomm",
ReleaseYear = 2022,
PerformanceScore = 3341,
CurrentRank = 4,
ImageUrl = "/images/placeholder.svg",
CategoryId = 1,
Description = "高通骁龙8+ Gen 1是2022年推出的旗舰移动处理器采用4nm工艺制程。",
Specifications = new[] {
new { Name = "工艺", Value = "4nm" },
new { Name = "核心数", Value = "8" },
new { Name = "主频", Value = "3.2GHz" },
new { Name = "GPU", Value = "Adreno 730" }
},
PerformanceScores = new[] {
new { Benchmark = "Geekbench 5 Single-Core", Score = 1314 },
new { Benchmark = "Geekbench 5 Multi-Core", Score = 4185 },
new { Benchmark = "AnTuTu 9", Score = 1145876 }
}
}
};
// 获取请求的产品
var selectedProducts = allProducts.Where(p => productIds.Contains(p.Id)).ToArray();
// 检查是否找到了所有请求的产品
if (selectedProducts.Length != productIds.Length)
{
return Results.NotFound(new { Message = "一个或多个产品不存在" });
}
// 创建对比数据
var comparisonData = new {
Products = selectedProducts,
ComparisonMatrix = new {
PerformanceScore = selectedProducts.Select(p => new {
ProductId = p.Id,
ProductName = p.Name,
Value = p.PerformanceScore,
IsBest = p.PerformanceScore == selectedProducts.Max(x => x.PerformanceScore),
IsWorst = p.PerformanceScore == selectedProducts.Min(x => x.PerformanceScore)
}).ToArray(),
ReleaseYear = selectedProducts.Select(p => new {
ProductId = p.Id,
ProductName = p.Name,
Value = p.ReleaseYear,
IsBest = p.ReleaseYear == selectedProducts.Max(x => x.ReleaseYear),
IsWorst = p.ReleaseYear == selectedProducts.Min(x => x.ReleaseYear)
}).ToArray()
},
PerformanceComparison = new {
Benchmarks = new[] {
new {
Name = "Geekbench 5 Single-Core",
Values = selectedProducts.Select(p => new {
ProductId = p.Id,
ProductName = p.Name,
Value = p.PerformanceScores.FirstOrDefault(s => s.Benchmark == "Geekbench 5 Single-Core")?.Score ?? 0,
IsBest = p.PerformanceScores.FirstOrDefault(s => s.Benchmark == "Geekbench 5 Single-Core")?.Score == selectedProducts.Max(x => x.PerformanceScores.FirstOrDefault(s => s.Benchmark == "Geekbench 5 Single-Core")?.Score ?? 0),
IsWorst = p.PerformanceScores.FirstOrDefault(s => s.Benchmark == "Geekbench 5 Single-Core")?.Score == selectedProducts.Min(x => x.PerformanceScores.FirstOrDefault(s => s.Benchmark == "Geekbench 5 Single-Core")?.Score ?? int.MaxValue)
}).ToArray()
},
new {
Name = "Geekbench 5 Multi-Core",
Values = selectedProducts.Select(p => new {
ProductId = p.Id,
ProductName = p.Name,
Value = p.PerformanceScores.FirstOrDefault(s => s.Benchmark == "Geekbench 5 Multi-Core")?.Score ?? 0,
IsBest = p.PerformanceScores.FirstOrDefault(s => s.Benchmark == "Geekbench 5 Multi-Core")?.Score == selectedProducts.Max(x => x.PerformanceScores.FirstOrDefault(s => s.Benchmark == "Geekbench 5 Multi-Core")?.Score ?? 0),
IsWorst = p.PerformanceScores.FirstOrDefault(s => s.Benchmark == "Geekbench 5 Multi-Core")?.Score == selectedProducts.Min(x => x.PerformanceScores.FirstOrDefault(s => s.Benchmark == "Geekbench 5 Multi-Core")?.Score ?? int.MaxValue)
}).ToArray()
},
new {
Name = "AnTuTu 9",
Values = selectedProducts.Select(p => new {
ProductId = p.Id,
ProductName = p.Name,
Value = p.PerformanceScores.FirstOrDefault(s => s.Benchmark == "AnTuTu 9")?.Score ?? 0,
IsBest = p.PerformanceScores.FirstOrDefault(s => s.Benchmark == "AnTuTu 9")?.Score == selectedProducts.Max(x => x.PerformanceScores.FirstOrDefault(s => s.Benchmark == "AnTuTu 9")?.Score ?? 0),
IsWorst = p.PerformanceScores.FirstOrDefault(s => s.Benchmark == "AnTuTu 9")?.Score == selectedProducts.Min(x => x.PerformanceScores.FirstOrDefault(s => s.Benchmark == "AnTuTu 9")?.Score ?? int.MaxValue)
}).ToArray()
}
}
}
};
return Results.Ok(comparisonData);
}
catch (Exception ex)
{
return Results.BadRequest(new { Message = $"处理请求时出错: {ex.Message}" });
}
});
app.MapGet("/", () => "Hello World!");
app.Run();