Platform upgrade: login auth fix, OCR/OSS upload, system menus and dicts, weather dashboard, weighing and invoice modules

This commit is contained in:
2026-08-14 01:12:33 +08:00
parent c377421a3e
commit 8099ebae0a
75 changed files with 5611 additions and 473 deletions
@@ -45,7 +45,10 @@ public class UploadsController(
return BadRequest(new { message = ex.Message });
}
var result = await ocr.RecognizeAsync(ms, side, file.FileName);
// 反面仅存档至 OSS,不调用 OCR(OCR 只识别正面)
IdCardOcrResult? result = null;
if (side == "front")
result = await ocr.RecognizeAsync(ms, side, file.FileName, saved.Key);
return Ok(new { url = saved.Url, key = saved.Key, side, ocr = result });
}
@@ -120,7 +123,7 @@ public class UploadsController(
try
{
session.Front = await storage.SaveAsync("idcard", ms, front.FileName, front.ContentType);
session.FrontOcr = await ocr.RecognizeAsync(ms, "front", front.FileName);
session.FrontOcr = await ocr.RecognizeAsync(ms, "front", front.FileName, session.Front.Key);
}
catch (InvalidOperationException ex)
{
@@ -135,8 +138,9 @@ public class UploadsController(
ms.Position = 0;
try
{
// 反面仅存档,不调用 OCR
session.Back = await storage.SaveAsync("idcard", ms, back.FileName, back.ContentType);
session.BackOcr = await ocr.RecognizeAsync(ms, "back", back.FileName);
session.BackOcr = null;
}
catch (InvalidOperationException ex)
{
@@ -159,7 +163,7 @@ public class UploadsController(
if (!session.Done)
return Ok(new { done = false });
var ocr = MergeOcr(session.FrontOcr, session.BackOcr);
// 反面不再识别,仅返回正面 OCR 结果(可能为 null)
return Ok(new
{
done = true,
@@ -167,20 +171,10 @@ public class UploadsController(
frontKey = session.Front?.Key,
backUrl = session.Back?.Url,
backKey = session.Back?.Key,
ocr
ocr = session.FrontOcr
});
}
/// <summary>合并正反面 OCR 结果(正面的姓名/证件号/性别/住址为主)</summary>
private static IdCardOcrResult MergeOcr(IdCardOcrResult? front, IdCardOcrResult? back)
{
var any = front is { Success: true } || back is { Success: true };
var f = front ?? new IdCardOcrResult();
return new IdCardOcrResult(
f.Name, f.IdCard, f.Gender, f.Address, f.BankName, f.BankAccount,
any, any ? "识别完成" : (f.Message ?? "未配置 OCR 服务"));
}
/// <summary>
/// 获取本机局域网 IP,供手机扫码访问。
/// 优先选择物理网卡(排除 VMware/VirtualBox/Hyper-V/WSL/VPN 等虚拟网卡),