This commit is contained in:
SpecialX
2025-07-01 19:05:07 +08:00
parent a21ca80782
commit 017cc2169c
33 changed files with 3778 additions and 109 deletions

View File

@@ -0,0 +1,34 @@
@using TechHelper.Client.Services
<MudPaper Height="50" Width="50" Outlined="true">
<MudButton Variant="Variant.Filled" OnClick="Restore"> Restore Role </MudButton>
</MudPaper>
@code {
[Inject]
public IAuthenticationClientService Authentication { get; set; }
[Inject]
public IUserServices UserServices { get; set; }
[Inject]
public ISnackbar Snackbar { get; set; }
private async Task Restore()
{
var result = await UserServices.RestoreUserInfo();
if (result.Status)
{
Snackbar.Add("更新成功", Severity.Success);
}
else
Snackbar.Add("更新失败", Severity.Error);
var token = await Authentication.RefreshTokenAsync();
if (token != null)
Snackbar.Add("刷新令牌成功", Severity.Success);
else
Snackbar.Add("刷新令牌失败,你可以手动刷新", Severity.Warning);
StateHasChanged();
}
}

View File

@@ -24,7 +24,7 @@ else if (_questionsForTable.Any() && _students.Any())
@student.DisplayName
<MudTooltip Text="点击以切换此学生所有题目的对错">
<MudIconButton Icon="@Icons.Material.Filled.Info" Size="Size.Small" Class="ml-1"
@onclick="() => ToggleStudentAllAnswers(student.Id)" />
@onclick="() => ToggleStudentAllAnswers(student.Id)" />
</MudTooltip>
</MudTh>
}
@@ -200,7 +200,7 @@ else
newSubmission.StudentId = student.Id;
newSubmission.AssignmentId = Assignment.Id;
newSubmission.SubmissionTime = DateTime.Now;
newSubmission.Status = Entities.Contracts.SubmissionStatus.Submitted;
newSubmission.Status = Entities.Contracts.SubmissionStatus.Graded;
foreach (var row in _questionsForTable)
@@ -225,11 +225,15 @@ else
submissionDto.ForEach(async s =>
{
Snackbar?.Add($"正在提交: {_students.FirstOrDefault(std => std.Id == s.StudentId)?.DisplayName} 的试卷", Severity.Info);
await ExamService.SubmissionAssignment(s);
var submidResult = await ExamService.SubmissionAssignment(s);
if (submidResult.Status)
Snackbar?.Add($"批改结果已提交 {_students.FirstOrDefault(st => st.Id == s.StudentId)?.DisplayName}", Severity.Success);
else
Snackbar?.Add("批改结果提交失败", Severity.Error);
});
Snackbar?.Add("批改结果已提交(模拟)", Severity.Success);
}
}

View File

@@ -50,9 +50,16 @@ else
isloding = true;
Snackbar.Add("正在加载", Severity.Info);
var result = await ExamService.GetAllExam();
examDtos = result.Result as List<AssignmentDto> ?? new List<AssignmentDto>();
if (result.Status)
{
examDtos = result.Result as List<AssignmentDto> ?? new List<AssignmentDto>();
Snackbar.Add("加载成功", Severity.Info);
}
else
{
Snackbar.Add($"加载失败 {result.Message}", Severity.Error);
}
isloding = false;
Snackbar.Add("加载成功", Severity.Info);
StateHasChanged();
}
}

View File

@@ -55,4 +55,5 @@ else
<MudText Class="ma-3 pa-3"> 年级 : @authenticationStateTask.Result.User.FindFirst("Grade")?.Value.ToString() </MudText>
<MudText Class="ma-3 pa-3"> 班级 : @authenticationStateTask.Result.User.FindFirst("Class")?.Value.ToString() </MudText>
</MudPaper>
}
}
<RestoreUserRole></RestoreUserRole>

View File

@@ -45,6 +45,7 @@ builder.Services.AddScoped<IClassServices, ClasssServices>();
builder.Services.AddScoped<IEmailSender, QEmailSender>();
builder.Services.AddScoped<HttpInterceptorHandlerService>();
builder.Services.AddScoped<IAIService, AiService>();
builder.Services.AddScoped<IUserServices, UserServices>();
builder.Services.AddHttpClient("WebApiClient", client =>
{
var baseAddress = builder.Configuration.GetSection("ApiConfiguration:BaseAddress").Value;

View File

@@ -167,7 +167,7 @@ namespace TechHelper.Client.Services
// 直接使用注入的 _client 实例
var response = await _client.PostAsJsonAsync("exam/add", assiDto);
if (response.IsSuccessStatusCode) // 检查是否是成功的状态码,例如 200 OK, 201 Created 等
if (response.IsSuccessStatusCode)
{
return ApiResponse.Success(message: "试题保存成功。");
}

View File

@@ -0,0 +1,9 @@
using TechHelper.Services;
namespace TechHelper.Client.Services
{
public interface IUserServices
{
public Task<ApiResponse> RestoreUserInfo();
}
}

View File

@@ -0,0 +1,24 @@
using TechHelper.Services;
namespace TechHelper.Client.Services
{
public class UserServices : IUserServices
{
private readonly HttpClient _client;
public UserServices(HttpClient httpClient)
{
_client = httpClient;
}
public async Task<ApiResponse> RestoreUserInfo()
{
var result = await _client.GetAsync("user/restoreUserRole");
if (result.IsSuccessStatusCode)
{
return ApiResponse.Success();
}
return ApiResponse.Error();
}
}
}