All checks were successful
Build and Deploy / deploy (push) Successful in 1m2s
Co-authored-by: Cursor <cursoragent@cursor.com>
80 lines
3.1 KiB
C#
80 lines
3.1 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.City =>
|
|
"未填写城市:无邮编且州未命中时无法按城市匹配。",
|
|
PriceCheckMissingFieldCodes.CargoType =>
|
|
"未选择货物属性:已分别试算普货/带电/敏感货等,下单时以所选属性为准。",
|
|
PriceCheckMissingFieldCodes.Warehouse =>
|
|
"未选择仓库:展示各仓库报价,下单时请确认发货仓。",
|
|
_ => null
|
|
};
|
|
|
|
if (!string.IsNullOrWhiteSpace(text))
|
|
{
|
|
disclaimers.Add(text);
|
|
}
|
|
}
|
|
|
|
return disclaimers;
|
|
}
|
|
}
|