查价/下单/入库/出库统一校验与计费上下文;待排货状态及可选入库排货;运单号改为 IDE+yyMMddHHmmss;补充迁移 SQL 与测试修复。 Co-authored-by: Cursor <cursoragent@cursor.com>
78 lines
2.9 KiB
C#
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;
|
|
}
|
|
}
|