This commit is contained in:
2025-11-03 17:03:57 +08:00
commit 7a04b85667
16804 changed files with 2492292 additions and 0 deletions

View File

@@ -0,0 +1,154 @@
using Microsoft.AspNetCore.Mvc;
using HardwarePerformance.Infrastructure.Data;
namespace HardwarePerformance.API.Controllers;
[ApiController]
[Route("api/[controller]")]
public class TestController : ControllerBase
{
private readonly SimpleAppDbContext _context;
private readonly ILogger<TestController> _logger;
public TestController(SimpleAppDbContext context, ILogger<TestController> logger)
{
_context = context;
_logger = logger;
}
[HttpGet("database-status")]
public async Task<IActionResult> GetDatabaseStatus()
{
try
{
var isConnected = await _context.TestConnectionAsync();
return Ok(new
{
IsConnected = isConnected,
Message = isConnected ? "数据库连接成功" : "数据库连接失败",
Timestamp = DateTime.Now
});
}
catch (Exception ex)
{
_logger.LogError(ex, "检查数据库连接时发生错误");
return StatusCode(500, new
{
IsConnected = false,
Message = $"检查数据库连接时发生错误: {ex.Message}",
Timestamp = DateTime.Now
});
}
}
[HttpPost("initialize-database")]
public async Task<IActionResult> InitializeDatabase()
{
try
{
await _context.InitializeDatabaseAsync();
await _context.SeedInitialDataAsync();
return Ok(new
{
Message = "数据库初始化成功,种子数据已添加",
Timestamp = DateTime.Now
});
}
catch (Exception ex)
{
_logger.LogError(ex, "初始化数据库时发生错误");
return StatusCode(500, new
{
Message = $"初始化数据库时发生错误: {ex.Message}",
Timestamp = DateTime.Now
});
}
}
[HttpGet("categories")]
public async Task<IActionResult> GetCategories()
{
try
{
var categories = new List<object>();
using var connection = new MySql.Data.MySqlClient.MySqlConnection(
"Server=localhost;Database=HardwarePerformance;User=root;Password=123456;");
await connection.OpenAsync();
using var cmd = new MySql.Data.MySqlClient.MySqlCommand("SELECT * FROM Categories", connection);
using var reader = await cmd.ExecuteReaderAsync();
while (await reader.ReadAsync())
{
categories.Add(new
{
Id = reader.GetInt32("Id"),
Name = reader.GetString("Name"),
Description = reader.IsDBNull("Description") ? null : reader.GetString("Description"),
CreatedAt = reader.GetDateTime("CreatedAt")
});
}
return Ok(categories);
}
catch (Exception ex)
{
_logger.LogError(ex, "获取类别列表时发生错误");
return StatusCode(500, new
{
Message = $"获取类别列表时发生错误: {ex.Message}",
Timestamp = DateTime.Now
});
}
}
[HttpGet("products")]
public async Task<IActionResult> GetProducts()
{
try
{
var products = new List<object>();
using var connection = new MySql.Data.MySqlClient.MySqlConnection(
"Server=localhost;Database=HardwarePerformance;User=root;Password=123456;");
await connection.OpenAsync();
using var cmd = new MySql.Data.MySqlClient.MySqlCommand(
@"SELECT p.*, c.Name as CategoryName
FROM Products p
LEFT JOIN Categories c ON p.CategoryId = c.Id", connection);
using var reader = await cmd.ExecuteReaderAsync();
while (await reader.ReadAsync())
{
products.Add(new
{
Id = reader.GetInt32("Id"),
Name = reader.GetString("Name"),
Model = reader.IsDBNull("Model") ? null : reader.GetString("Model"),
Manufacturer = reader.IsDBNull("Manufacturer") ? null : reader.GetString("Manufacturer"),
ImageUrl = reader.IsDBNull("ImageUrl") ? null : reader.GetString("ImageUrl"),
ReleaseDate = reader.IsDBNull("ReleaseDate") ? (DateTime?)null : reader.GetDateTime("ReleaseDate"),
CategoryId = reader.IsDBNull("CategoryId") ? (int?)null : reader.GetInt32("CategoryId"),
CategoryName = reader.IsDBNull("CategoryName") ? null : reader.GetString("CategoryName"),
CurrentRank = reader.IsDBNull("CurrentRank") ? (int?)null : reader.GetInt32("CurrentRank"),
CreatedAt = reader.GetDateTime("CreatedAt")
});
}
return Ok(products);
}
catch (Exception ex)
{
_logger.LogError(ex, "获取产品列表时发生错误");
return StatusCode(500, new
{
Message = $"获取产品列表时发生错误: {ex.Message}",
Timestamp = DateTime.Now
});
}
}
}