diff --git a/src/Oms.Application/Dtos/Marketing/MemberOverviewOutput.cs b/src/Oms.Application/Dtos/Marketing/MemberOverviewOutput.cs
index b2b1cf3..90798de 100644
--- a/src/Oms.Application/Dtos/Marketing/MemberOverviewOutput.cs
+++ b/src/Oms.Application/Dtos/Marketing/MemberOverviewOutput.cs
@@ -4,8 +4,12 @@ public class MemberOverviewOutput
{
public int? MemberLevelId { get; set; }
+ public string? MemberLevelCode { get; set; }
+
public string? MemberLevelName { get; set; }
+ public string? IconUrl { get; set; }
+
public string? PriceTierKey { get; set; }
public int TotalPoints { get; set; }
diff --git a/src/Oms.Application/Dtos/Orders/OrderReceiverOutput.cs b/src/Oms.Application/Dtos/Orders/OrderReceiverOutput.cs
index f5eb79a..c2c75fa 100644
--- a/src/Oms.Application/Dtos/Orders/OrderReceiverOutput.cs
+++ b/src/Oms.Application/Dtos/Orders/OrderReceiverOutput.cs
@@ -31,9 +31,9 @@ public class OrderReceiverOutput
public string? Email { get; set; }
///
- /// 国家/地区代码。
+ /// 国家/地区二字码。
///
- public int? CountryCode { get; set; }
+ public string? CountryCode { get; set; }
///
/// 省份。
diff --git a/src/Oms.Application/Dtos/Orders/OrderSenderOutput.cs b/src/Oms.Application/Dtos/Orders/OrderSenderOutput.cs
index fe7fbc9..e9793d1 100644
--- a/src/Oms.Application/Dtos/Orders/OrderSenderOutput.cs
+++ b/src/Oms.Application/Dtos/Orders/OrderSenderOutput.cs
@@ -31,9 +31,9 @@ public class OrderSenderOutput
public string? Email { get; set; }
///
- /// 国家/地区代码。
+ /// 国家/地区二字码。
///
- public int? CountryCode { get; set; }
+ public string? CountryCode { get; set; }
///
/// 省份。
diff --git a/src/Oms.Application/Services/Marketing/MarketingPortalMemberService.cs b/src/Oms.Application/Services/Marketing/MarketingPortalMemberService.cs
index 15726fa..8bdb9c7 100644
--- a/src/Oms.Application/Services/Marketing/MarketingPortalMemberService.cs
+++ b/src/Oms.Application/Services/Marketing/MarketingPortalMemberService.cs
@@ -57,7 +57,9 @@ public class MarketingPortalMemberService : ApplicationService
return new MemberOverviewOutput
{
MemberLevelId = currentLevel?.Id,
+ MemberLevelCode = currentLevel?.LevelCode,
MemberLevelName = currentLevel?.LevelName,
+ IconUrl = currentLevel?.IconUrl,
PriceTierKey = MarketingCustomerHelper.NormalizePriceTierKeyOrDefault(mainCustomer.PriceTierKey),
TotalPoints = account.TotalPoints,
RollingPoints = rollingPoints,
diff --git a/src/Oms.Application/Services/Orders/OrderService.Helpers.cs b/src/Oms.Application/Services/Orders/OrderService.Helpers.cs
index 9444025..c5d6e34 100644
--- a/src/Oms.Application/Services/Orders/OrderService.Helpers.cs
+++ b/src/Oms.Application/Services/Orders/OrderService.Helpers.cs
@@ -79,6 +79,20 @@ public partial class OrderService
: await CountryRepository.GetListAsync(x => countryCodes.Contains(x.CountryCode));
var countryMap = countries.ToDictionary(x => x.CountryCode, StringComparer.OrdinalIgnoreCase);
+ var addressCountryIds = senders
+ .Select(x => x.Country)
+ .Concat(recipients.Select(x => x.Country))
+ .Where(x => x.HasValue)
+ .Select(x => x!.Value)
+ .Distinct()
+ .ToArray();
+ var addressCountries = addressCountryIds.Length == 0
+ ? []
+ : await CountryRepository.GetListAsync(x => addressCountryIds.Contains(x.Id));
+ var countryIdCodeMap = addressCountries.ToDictionary(
+ x => x.Id,
+ x => x.CountryCode ?? string.Empty);
+
var auditUserNameMap = await UserDisplayNameResolver.ResolveManyAsync(
orders.SelectMany(x => new[] { x.CreateUserId, x.UpdateUserId }));
@@ -252,8 +266,8 @@ public partial class OrderService
CreateBy = OmsRbacUserDisplayNameResolver.FormatUserId(order.CreateUserId, auditUserNameMap),
UpdateTime = OmsDocHelper.NullIfDefault(order.UpdateTime),
UpdateBy = OmsRbacUserDisplayNameResolver.FormatUserId(order.UpdateUserId, auditUserNameMap),
- Sender = MapSender(sender),
- Receiver = MapReceiver(recipient),
+ Sender = MapSender(sender, countryIdCodeMap),
+ Receiver = MapReceiver(recipient, countryIdCodeMap),
Items = (items ?? []).Select(MapDeclaration).ToList(),
WeightList = (orderWeights ?? []).Select(MapWeight).ToList(),
FeeList = feeOutputs,
@@ -705,7 +719,9 @@ public partial class OrderService
: null;
}
- private static OrderSenderOutput? MapSender(OrderSender? sender)
+ private static OrderSenderOutput? MapSender(
+ OrderSender? sender,
+ IReadOnlyDictionary countryIdCodeMap)
{
return sender == null
? null
@@ -716,7 +732,7 @@ public partial class OrderService
Phone = sender.Phone,
TelePhone = sender.TelePhone,
Email = sender.Email,
- CountryCode = sender.Country,
+ CountryCode = ResolveCountryCode(sender.Country, countryIdCodeMap),
Province = sender.Province,
City = sender.City,
ZipCode = sender.ZipCode,
@@ -727,7 +743,9 @@ public partial class OrderService
};
}
- private static OrderReceiverOutput? MapReceiver(OrderRecipient? recipient)
+ private static OrderReceiverOutput? MapReceiver(
+ OrderRecipient? recipient,
+ IReadOnlyDictionary countryIdCodeMap)
{
return recipient == null
? null
@@ -738,7 +756,7 @@ public partial class OrderService
Phone = recipient.Phone,
TelePhone = recipient.TelePhone,
Email = recipient.Email,
- CountryCode = recipient.Country,
+ CountryCode = ResolveCountryCode(recipient.Country, countryIdCodeMap),
Province = recipient.Province,
City = recipient.City,
StreetNumber = recipient.StreetNumber,
@@ -755,6 +773,20 @@ public partial class OrderService
};
}
+ private static string? ResolveCountryCode(
+ int? countryId,
+ IReadOnlyDictionary countryIdCodeMap)
+ {
+ if (!countryId.HasValue)
+ {
+ return null;
+ }
+
+ return countryIdCodeMap.TryGetValue(countryId.Value, out var code) && !string.IsNullOrWhiteSpace(code)
+ ? code
+ : null;
+ }
+
private OrderItemOutput MapDeclaration(OrderDeclaration x)
{
return new OrderItemOutput