refactor: 重构数据库相关操作

This commit is contained in:
2025-08-10 20:13:44 +08:00
parent 079004c17d
commit b95a61c532
20 changed files with 2252 additions and 2065 deletions

View File

@@ -17,38 +17,15 @@ namespace server.Controllers;
public class DataController : ControllerBase
{
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
private readonly Database.UserManager _userManager;
// 固定的实验板IP,端口,MAC地址
private const string BOARD_IP = "169.254.109.0";
/// <summary>
/// [TODO:description]
/// </summary>
public class UserInfo
public DataController(Database.UserManager userManager)
{
/// <summary>
/// 用户的唯一标识符
/// </summary>
public Guid ID { get; set; }
/// <summary>
/// 用户的名称
/// </summary>
public required string Name { get; set; }
/// <summary>
/// 用户的电子邮箱
/// </summary>
public required string EMail { get; set; }
/// <summary>
/// 用户关联的板卡ID
/// </summary>
public Guid BoardID { get; set; }
/// <summary>
/// 用户绑定板子的过期时间
/// </summary>
public DateTime? BoardExpireTime { get; set; }
_userManager = userManager;
}
/// <summary>
@@ -112,8 +89,7 @@ public class DataController : ControllerBase
public IActionResult Login(string name, string password)
{
// 验证用户密码
using var db = new Database.AppDataConnection();
var ret = db.CheckUserPassword(name, password);
var ret = _userManager.CheckUserPassword(name, password);
if (!ret.IsSuccessful) return StatusCode(StatusCodes.Status500InternalServerError, "数据库操作失败");
if (!ret.Value.HasValue) return BadRequest("用户名或密码错误");
var user = ret.Value.Value;
@@ -188,8 +164,7 @@ public class DataController : ControllerBase
return Unauthorized("未找到用户名信息");
// Get User Info
using var db = new Database.AppDataConnection();
var ret = db.GetUserByName(userName);
var ret = _userManager.GetUserByName(userName);
if (!ret.IsSuccessful)
return StatusCode(StatusCodes.Status500InternalServerError, "数据库操作失败");
@@ -236,8 +211,7 @@ public class DataController : ControllerBase
try
{
using var db = new Database.AppDataConnection();
var ret = db.AddUser(name, email, password);
var ret = _userManager.AddUser(name, email, password);
return Ok(ret);
}
catch (Exception ex)
@@ -265,15 +239,14 @@ public class DataController : ControllerBase
if (string.IsNullOrEmpty(userName))
return Unauthorized("未找到用户名信息");
using var db = new Database.AppDataConnection();
var userRet = db.GetUserByName(userName);
var userRet = _userManager.GetUserByName(userName);
if (!userRet.IsSuccessful || !userRet.Value.HasValue)
return BadRequest("用户不存在");
var user = userRet.Value.Value;
var expireTime = DateTime.UtcNow.AddHours(durationHours);
var boardOpt = db.GetAvailableBoard(user.ID, expireTime);
var boardOpt = _userManager.GetAvailableBoard(user.ID, expireTime);
if (!boardOpt.HasValue)
return NotFound("没有可用的实验板");
@@ -309,13 +282,12 @@ public class DataController : ControllerBase
if (string.IsNullOrEmpty(userName))
return Unauthorized("未找到用户名信息");
using var db = new Database.AppDataConnection();
var userRet = db.GetUserByName(userName);
var userRet = _userManager.GetUserByName(userName);
if (!userRet.IsSuccessful || !userRet.Value.HasValue)
return BadRequest("用户不存在");
var user = userRet.Value.Value;
var result = db.UnbindUserFromBoard(user.ID);
var result = _userManager.UnbindUserFromBoard(user.ID);
return Ok(result > 0);
}
catch (Exception ex)
@@ -338,8 +310,7 @@ public class DataController : ControllerBase
{
try
{
using var db = new Database.AppDataConnection();
var ret = db.GetBoardByID(id);
var ret = _userManager.GetBoardByID(id);
if (!ret.IsSuccessful)
return StatusCode(StatusCodes.Status500InternalServerError, "数据库操作失败");
if (!ret.Value.HasValue)
@@ -375,8 +346,7 @@ public class DataController : ControllerBase
return BadRequest("板子名称不能为空");
try
{
using var db = new Database.AppDataConnection();
var ret = db.AddBoard(name);
var ret = _userManager.AddBoard(name);
return Ok(ret);
}
catch (Exception ex)
@@ -402,8 +372,7 @@ public class DataController : ControllerBase
try
{
using var db = new Database.AppDataConnection();
var ret = db.DeleteBoardByID(id);
var ret = _userManager.DeleteBoardByID(id);
return Ok(ret);
}
catch (Exception ex)
@@ -425,8 +394,7 @@ public class DataController : ControllerBase
{
try
{
using var db = new Database.AppDataConnection();
var boards = db.GetAllBoard();
var boards = _userManager.GetAllBoard();
return Ok(boards);
}
catch (Exception ex)
@@ -453,8 +421,7 @@ public class DataController : ControllerBase
return BadRequest("新名称不能为空");
try
{
using var db = new Database.AppDataConnection();
var result = db.UpdateBoardName(boardId, newName);
var result = _userManager.UpdateBoardName(boardId, newName);
return Ok(result);
}
catch (Exception ex)
@@ -479,8 +446,7 @@ public class DataController : ControllerBase
return BadRequest("板子Guid不能为空");
try
{
using var db = new Database.AppDataConnection();
var result = db.UpdateBoardStatus(boardId, newStatus);
var result = _userManager.UpdateBoardStatus(boardId, newStatus);
return Ok(result);
}
catch (Exception ex)
@@ -489,4 +455,36 @@ public class DataController : ControllerBase
return StatusCode(StatusCodes.Status500InternalServerError, "更新失败,请稍后重试");
}
}
/// <summary>
/// [TODO:description]
/// </summary>
public class UserInfo
{
/// <summary>
/// 用户的唯一标识符
/// </summary>
public Guid ID { get; set; }
/// <summary>
/// 用户的名称
/// </summary>
public required string Name { get; set; }
/// <summary>
/// 用户的电子邮箱
/// </summary>
public required string EMail { get; set; }
/// <summary>
/// 用户关联的板卡ID
/// </summary>
public Guid BoardID { get; set; }
/// <summary>
/// 用户绑定板子的过期时间
/// </summary>
public DateTime? BoardExpireTime { get; set; }
}
}