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