14 Commits
44 changed files with 10354 additions and 114 deletions

No files matched your search

+4
View File
@@ -202,6 +202,10 @@ App Signing 证书的 SHA-256 指纹写入 `web/public/.well-known/assetlinks.js
配置的包名为 `edu.mingxu.jiaowu`;站点域名或正式签名证书变更时必须同时更新此文件和 Android
Manifest 后重新签名发布 APK/AAB,此类变更不能通过 OTA 下发。
本机通过 Android Studio 或 `cap run` 安装的 debug APK 使用不同的调试证书;其 SHA-256 也已
列在 `assetlinks.json` 中,仅用于本机调试。若改用其他机器、其他 JKS 或直接签名的 release APK,
必须把该 APK 实际签名证书的 SHA-256 一并加入后重新部署站点。
用户登录后可从页面右上角进入“个人账户”,主动绑定或解除 Keycloak 账号。主动绑定先
使用当前 JWT 创建五分钟有效的一次性绑定意图,再跳转 Keycloak;回调只能绑定到发起该
意图的本地账号。解绑需要再次验证本地密码,避免仅凭未锁屏的登录会话解除身份关联。
@@ -8,6 +8,7 @@ using Jiaowu.Api.Domain.Academic;
using Jiaowu.Api.Domain.Identity;
using Jiaowu.Api.Infrastructure.Auth;
using Jiaowu.Api.Infrastructure.Excel;
using Jiaowu.Api.Infrastructure.Files;
using Jiaowu.Api.Infrastructure.Persistence;
using Jiaowu.Api.Infrastructure.Teaching;
using Microsoft.AspNetCore.Authorization;
@@ -566,7 +567,7 @@ public sealed class AttendanceController(
statusLabels.GetValueOrDefault(r.Status, "出勤"), r.Notes
}).ToList<IReadOnlyList<object?>>());
return File(bytes, ExcelWorkbookHelper.ContentType,
$"考勤表-{sheetData.TaskNumber}-{sheetData.AttendanceDate:yyyyMMdd}.xlsx");
DownloadFileName.Export("考勤表", ".xlsx", sheetData.TaskNumber, sheetData.AttendanceDate.ToString("yyyyMMdd")));
}
[HttpGet("tasks/{teachingTaskId:guid}/statistics")]
@@ -596,7 +597,7 @@ public sealed class AttendanceController(
return File(
bytes,
ExcelWorkbookHelper.ContentType,
$"课程考勤统计-{statistics.Course.TaskNumber}.xlsx");
DownloadFileName.Export("课程考勤统计", ".xlsx", statistics.Course.TaskNumber));
}
[HttpPost("sheets/{id:guid}/submit")]
@@ -3,6 +3,7 @@ using Jiaowu.Api.Domain.Common;
using Jiaowu.Api.Domain.Identity;
using Jiaowu.Api.Infrastructure.Caching;
using Jiaowu.Api.Infrastructure.Excel;
using Jiaowu.Api.Infrastructure.Files;
using Jiaowu.Api.Infrastructure.Persistence;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
@@ -46,7 +47,7 @@ public sealed class BaseDataExcelController(AppDbContext db, IAppCache cache) :
"状态填写“启用”或“停用”;是/否字段填写“是”或“否”。",
"整批数据会先校验,任一行有误时均不会写入。"
]);
return File(bytes, ExcelWorkbookHelper.ContentType, $"{KindName(kind)}导入模板.xlsx");
return File(bytes, ExcelWorkbookHelper.ContentType, DownloadFileName.Template(KindName(kind), ".xlsx"));
}
[HttpGet("{kind}/export")]
@@ -56,7 +57,7 @@ public sealed class BaseDataExcelController(AppDbContext db, IAppCache cache) :
var rows = await GetExportRowsAsync(kind, cancellationToken);
var bytes = ExcelWorkbookHelper.Create(KindName(kind), headers, rows);
return File(bytes, ExcelWorkbookHelper.ContentType,
$"{KindName(kind)}-{DateTime.Now:yyyyMMdd-HHmm}.xlsx");
DownloadFileName.Export(KindName(kind), ".xlsx"));
}
[HttpPost("{kind}/import")]
Loaded 3 of 44 files, more files were not shown because too many files have changed in this diff. Show more