admin/src/Oms.Application/Services/Orders/PriceCheckHintBuilder.cs
zzh 3d5eaa223a feat: 小包全链路加固、待排货与运单号 IDE 前缀
查价/下单/入库/出库统一校验与计费上下文;待排货状态及可选入库排货;运单号改为 IDE+yyMMddHHmmss;补充迁移 SQL 与测试修复。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-22 19:00:55 +08:00

78 lines
2.9 KiB
C#

using Oms.Application.Dtos.Orders;
namespace Oms.Application.Services.Orders;
internal static class PriceCheckHintBuilder
{
public static OrderPriceCheckHintOutput BuildQueryHint(PriceCheckInputProfile profile)
{
var missing = profile.MissingFieldCodes.ToList();
var disclaimers = BuildDisclaimers(missing);
if (profile.IsQueryEstimated)
{
disclaimers.Add("以下报价可能含估算项,最终以预报/入库计费为准。");
}
return new OrderPriceCheckHintOutput
{
QuoteLevel = profile.IsQueryEstimated
? PriceCheckQuoteLevelCodes.Estimated
: PriceCheckQuoteLevelCodes.Exact,
MissingFieldCodes = missing,
Disclaimers = disclaimers
};
}
public static (string QuoteLevel, List<string> MissingFieldCodes, List<string> Disclaimers) BuildItemHint(
PriceCheckInputProfile profile,
bool usedZoneFallback)
{
var missing = profile.MissingFieldCodes.ToList();
if (usedZoneFallback && !missing.Contains(PriceCheckMissingFieldCodes.PostalCode))
{
missing.Add(PriceCheckMissingFieldCodes.PostalCode);
}
var disclaimers = BuildDisclaimers(missing);
if (usedZoneFallback)
{
disclaimers.Add("未匹配到精确分区,本行按可匹配分区参考价展示,下单后可能调整。");
}
var estimated = missing.Count > 0 || usedZoneFallback;
return (
estimated ? PriceCheckQuoteLevelCodes.Estimated : PriceCheckQuoteLevelCodes.Exact,
missing,
disclaimers);
}
private static List<string> BuildDisclaimers(IReadOnlyList<string> missingFieldCodes)
{
var disclaimers = new List<string>();
foreach (var code in missingFieldCodes)
{
var text = code switch
{
PriceCheckMissingFieldCodes.Dimensions =>
"未填写包裹尺寸:计费重按实重估算,入库实测尺寸后价格可能变化。",
PriceCheckMissingFieldCodes.PostalCode =>
"未填写邮编:未校验黑名单/偏远/精确分区,报价仅供参考。",
PriceCheckMissingFieldCodes.Province =>
"未填写省州:分区按国家级匹配,精确地址可能调整价格。",
PriceCheckMissingFieldCodes.CargoType =>
"未选择货物属性:已分别试算普货/带电/敏感货等,下单时以所选属性为准。",
PriceCheckMissingFieldCodes.Warehouse =>
"未选择仓库:展示各仓库报价,下单时请确认发货仓。",
_ => null
};
if (!string.IsNullOrWhiteSpace(text))
{
disclaimers.Add(text);
}
}
return disclaimers;
}
}