diff --git a/src/Application/TakeoutSaaS.Application/App/Billings/Mappings/BillingProfile.cs b/src/Application/TakeoutSaaS.Application/App/Billings/Mappings/BillingProfile.cs deleted file mode 100644 index 3b3a25b..0000000 --- a/src/Application/TakeoutSaaS.Application/App/Billings/Mappings/BillingProfile.cs +++ /dev/null @@ -1,66 +0,0 @@ -using AutoMapper; -using System.Text.Json; -using TakeoutSaaS.Application.App.Billings.Dto; -using TakeoutSaaS.Domain.Tenants.Entities; -using TakeoutSaaS.Domain.Tenants.Enums; - -namespace TakeoutSaaS.Application.App.Billings.Mappings; - -/// -/// 账单模块 AutoMapper Profile。 -/// -public sealed class BillingProfile : Profile -{ - /// - /// 初始化映射配置。 - /// - public BillingProfile() - { - // 1. 账单实体 -> 列表 DTO - CreateMap() - .ForMember(x => x.TenantName, opt => opt.Ignore()) - .ForMember(x => x.TotalAmount, opt => opt.MapFrom(src => src.CalculateTotalAmount())) - .ForMember(x => x.IsOverdue, opt => opt.MapFrom(src => - src.Status == TenantBillingStatus.Overdue - || (src.Status == TenantBillingStatus.Pending && src.DueDate < DateTime.UtcNow))) - .ForMember(x => x.OverdueDays, opt => opt.MapFrom(src => - src.DueDate < DateTime.UtcNow ? (int)(DateTime.UtcNow - src.DueDate).TotalDays : 0)); - - // 2. (空行后) 账单实体 -> 详情 DTO - CreateMap() - .ForMember(x => x.TenantName, opt => opt.Ignore()) - .ForMember(x => x.TotalAmount, opt => opt.MapFrom(src => src.CalculateTotalAmount())) - .ForMember(x => x.LineItemsJson, opt => opt.MapFrom(src => src.LineItemsJson)) - .ForMember(x => x.LineItems, opt => opt.MapFrom(src => DeserializeLineItems(src.LineItemsJson))) - .ForMember(x => x.Payments, opt => opt.Ignore()); - - // 3. (空行后) 账单实体 -> 导出 DTO - CreateMap() - .ForMember(x => x.TenantName, opt => opt.Ignore()) - .ForMember(x => x.TotalAmount, opt => opt.MapFrom(src => src.CalculateTotalAmount())) - .ForMember(x => x.LineItems, opt => opt.MapFrom(src => DeserializeLineItems(src.LineItemsJson))); - - // 4. (空行后) 支付实体 -> 支付记录 DTO - CreateMap() - .ForMember(x => x.BillingId, opt => opt.MapFrom(src => src.BillingStatementId)) - .ForMember(x => x.IsVerified, opt => opt.MapFrom(src => src.VerifiedAt.HasValue)); - } - - private static IReadOnlyList DeserializeLineItems(string? json) - { - if (string.IsNullOrWhiteSpace(json)) - { - return []; - } - - try - { - return JsonSerializer.Deserialize>(json) ?? []; - } - catch - { - return []; - } - } -} - diff --git a/src/Application/TakeoutSaaS.Application/App/Extensions/AppApplicationServiceCollectionExtensions.cs b/src/Application/TakeoutSaaS.Application/App/Extensions/AppApplicationServiceCollectionExtensions.cs index 1fd8435..8f2944e 100644 --- a/src/Application/TakeoutSaaS.Application/App/Extensions/AppApplicationServiceCollectionExtensions.cs +++ b/src/Application/TakeoutSaaS.Application/App/Extensions/AppApplicationServiceCollectionExtensions.cs @@ -20,9 +20,6 @@ public static class AppApplicationServiceCollectionExtensions { services.AddMediatR(cfg => cfg.RegisterServicesFromAssembly(Assembly.GetExecutingAssembly())); services.AddValidatorsFromAssembly(Assembly.GetExecutingAssembly()); - - // (空行后) 注册 AutoMapper Profile - services.AddAutoMapper(Assembly.GetExecutingAssembly()); services.AddTransient(typeof(IPipelineBehavior<,>), typeof(ValidationBehavior<,>)); return services; diff --git a/src/Application/TakeoutSaaS.Application/TakeoutSaaS.Application.csproj b/src/Application/TakeoutSaaS.Application/TakeoutSaaS.Application.csproj index 8d09840..f8b5ffd 100644 --- a/src/Application/TakeoutSaaS.Application/TakeoutSaaS.Application.csproj +++ b/src/Application/TakeoutSaaS.Application/TakeoutSaaS.Application.csproj @@ -9,8 +9,6 @@ - -