using System.Globalization; using TakeoutSaaS.Application.App.Finance.Settlement.Dto; using TakeoutSaaS.Domain.Finance.Models; using TakeoutSaaS.Domain.Payments.Enums; namespace TakeoutSaaS.Application.App.Finance.Settlement.Handlers; /// /// 到账查询映射辅助。 /// internal static class FinanceSettlementMapping { /// /// 支付方式转渠道编码。 /// public static string ToChannelCode(PaymentMethod paymentMethod) { return paymentMethod switch { PaymentMethod.WeChatPay => "wechat", PaymentMethod.Alipay => "alipay", _ => "unknown" }; } /// /// 支付方式转渠道文案。 /// public static string ToChannelText(PaymentMethod paymentMethod) { return paymentMethod switch { PaymentMethod.WeChatPay => "微信支付", PaymentMethod.Alipay => "支付宝", _ => "未知渠道" }; } /// /// 映射到账汇总行。 /// public static FinanceSettlementListItemDto ToListItem(FinanceSettlementListItemSnapshot source) { return new FinanceSettlementListItemDto { ArrivedDate = source.ArrivedDate, Channel = ToChannelCode(source.PaymentMethod), ChannelText = ToChannelText(source.PaymentMethod), TransactionCount = source.TransactionCount, ArrivedAmount = decimal.Round(source.ArrivedAmount, 2, MidpointRounding.AwayFromZero) }; } /// /// 映射到账明细行。 /// public static FinanceSettlementDetailItemDto ToDetailItem(FinanceSettlementDetailItemSnapshot source) { return new FinanceSettlementDetailItemDto { OrderNo = source.OrderNo, Amount = decimal.Round(source.Amount, 2, MidpointRounding.AwayFromZero), PaidAt = source.PaidAt }; } /// /// 格式化金额(导出场景)。 /// public static string FormatAmount(decimal value) { return decimal.Round(value, 2, MidpointRounding.AwayFromZero) .ToString("0.00", CultureInfo.InvariantCulture); } }