Files
TakeoutSaaS.TenantApi/src/Application/TakeoutSaaS.Application/App/Finance/Settlement/Handlers/FinanceSettlementMapping.cs

76 lines
2.3 KiB
C#

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;
/// <summary>
/// 到账查询映射辅助。
/// </summary>
internal static class FinanceSettlementMapping
{
/// <summary>
/// 支付方式转渠道编码。
/// </summary>
public static string ToChannelCode(PaymentMethod paymentMethod)
{
return paymentMethod switch
{
PaymentMethod.WeChatPay => "wechat",
PaymentMethod.Alipay => "alipay",
_ => "unknown"
};
}
/// <summary>
/// 支付方式转渠道文案。
/// </summary>
public static string ToChannelText(PaymentMethod paymentMethod)
{
return paymentMethod switch
{
PaymentMethod.WeChatPay => "微信支付",
PaymentMethod.Alipay => "支付宝",
_ => "未知渠道"
};
}
/// <summary>
/// 映射到账汇总行。
/// </summary>
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)
};
}
/// <summary>
/// 映射到账明细行。
/// </summary>
public static FinanceSettlementDetailItemDto ToDetailItem(FinanceSettlementDetailItemSnapshot source)
{
return new FinanceSettlementDetailItemDto
{
OrderNo = source.OrderNo,
Amount = decimal.Round(source.Amount, 2, MidpointRounding.AwayFromZero),
PaidAt = source.PaidAt
};
}
/// <summary>
/// 格式化金额(导出场景)。
/// </summary>
public static string FormatAmount(decimal value)
{
return decimal.Round(value, 2, MidpointRounding.AwayFromZero)
.ToString("0.00", CultureInfo.InvariantCulture);
}
}