472 lines
26 KiB
C#
472 lines
26 KiB
C#
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();
|