154 lines
5.4 KiB
C#
154 lines
5.4 KiB
C#
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
|
|
});
|
|
}
|
|
}
|
|
} |