feat: 后端添加获取空闲实验板,继续修改前端界面使其更加合理

This commit is contained in:
2025-07-12 14:59:28 +08:00
parent 44e357b887
commit 0fb0c4e395
11 changed files with 222 additions and 117 deletions

View File

@@ -1,5 +1,4 @@
using System.IdentityModel.Tokens.Jwt;
using System.Net;
using System.Security.Claims;
using System.Text;
using Microsoft.AspNetCore.Authorization;
@@ -192,6 +191,45 @@ public class DataController : ControllerBase
}
}
/// <summary>
/// 获取一个空闲的实验板(普通用户权限)
/// </summary>
[Authorize]
[HttpGet("GetAvailableBoard")]
[EnableCors("Users")]
[ProducesResponseType(typeof(Database.Board), StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public IActionResult GetAvailableBoard()
{
try
{
using var db = new Database.AppDataConnection();
var boardOpt = db.GetAvailableBoard();
if (!boardOpt.HasValue)
return NotFound("没有可用的实验板");
// 绑定用户与实验板
var userName = User.Identity?.Name;
if (string.IsNullOrEmpty(userName))
return Unauthorized("未找到用户名信息");
var userRet = db.GetUserByName(userName);
if (!userRet.IsSuccessful || !userRet.Value.HasValue)
return BadRequest("用户不存在");
var user = userRet.Value.Value;
db.BindUserToBoard(user.ID, boardOpt.Value.ID);
return Ok(boardOpt.Value);
}
catch (Exception ex)
{
logger.Error(ex, "获取空闲实验板时发生异常");
return StatusCode(StatusCodes.Status500InternalServerError, "获取失败,请稍后重试");
}
}
/// <summary>
/// 新增板子(管理员权限)
/// </summary>