feat: 租户账单公告通知接口

This commit is contained in:
2025-12-03 21:08:28 +08:00
parent 075906266a
commit 9fe7d9606d
47 changed files with 1522 additions and 4 deletions

View File

@@ -0,0 +1,20 @@
using MediatR;
using TakeoutSaaS.Application.App.Tenants.Dto;
using TakeoutSaaS.Domain.Tenants.Enums;
namespace TakeoutSaaS.Application.App.Tenants.Commands;
/// <summary>
/// 创建租户公告命令。
/// </summary>
public sealed record CreateTenantAnnouncementCommand : IRequest<TenantAnnouncementDto>
{
public long TenantId { get; init; }
public string Title { get; init; } = string.Empty;
public string Content { get; init; } = string.Empty;
public TenantAnnouncementType AnnouncementType { get; init; } = TenantAnnouncementType.System;
public int Priority { get; init; } = 0;
public DateTime EffectiveFrom { get; init; } = DateTime.UtcNow;
public DateTime? EffectiveTo { get; init; }
public bool IsActive { get; init; } = true;
}

View File

@@ -0,0 +1,21 @@
using MediatR;
using TakeoutSaaS.Application.App.Tenants.Dto;
using TakeoutSaaS.Domain.Tenants.Enums;
namespace TakeoutSaaS.Application.App.Tenants.Commands;
/// <summary>
/// 创建租户账单命令。
/// </summary>
public sealed record CreateTenantBillingCommand : IRequest<TenantBillingDto>
{
public long TenantId { get; init; }
public string StatementNo { get; init; } = string.Empty;
public DateTime PeriodStart { get; init; }
public DateTime PeriodEnd { get; init; }
public decimal AmountDue { get; init; }
public decimal AmountPaid { get; init; }
public TenantBillingStatus Status { get; init; } = TenantBillingStatus.Pending;
public DateTime DueDate { get; init; }
public string? LineItemsJson { get; init; }
}

View File

@@ -0,0 +1,12 @@
using MediatR;
namespace TakeoutSaaS.Application.App.Tenants.Commands;
/// <summary>
/// 删除租户公告命令。
/// </summary>
public sealed record DeleteTenantAnnouncementCommand : IRequest<bool>
{
public long TenantId { get; init; }
public long AnnouncementId { get; init; }
}

View File

@@ -0,0 +1,13 @@
using MediatR;
using TakeoutSaaS.Application.App.Tenants.Dto;
namespace TakeoutSaaS.Application.App.Tenants.Commands;
/// <summary>
/// 标记公告已读命令。
/// </summary>
public sealed record MarkTenantAnnouncementReadCommand : IRequest<TenantAnnouncementDto?>
{
public long TenantId { get; init; }
public long AnnouncementId { get; init; }
}

View File

@@ -0,0 +1,15 @@
using MediatR;
using TakeoutSaaS.Application.App.Tenants.Dto;
namespace TakeoutSaaS.Application.App.Tenants.Commands;
/// <summary>
/// 标记租户账单已支付命令。
/// </summary>
public sealed record MarkTenantBillingPaidCommand : IRequest<TenantBillingDto?>
{
public long TenantId { get; init; }
public long BillingId { get; init; }
public decimal AmountPaid { get; init; }
public DateTime PaidAt { get; init; } = DateTime.UtcNow;
}

View File

@@ -0,0 +1,13 @@
using MediatR;
using TakeoutSaaS.Application.App.Tenants.Dto;
namespace TakeoutSaaS.Application.App.Tenants.Commands;
/// <summary>
/// 标记通知已读命令。
/// </summary>
public sealed record MarkTenantNotificationReadCommand : IRequest<TenantNotificationDto?>
{
public long TenantId { get; init; }
public long NotificationId { get; init; }
}

View File

@@ -0,0 +1,21 @@
using MediatR;
using TakeoutSaaS.Application.App.Tenants.Dto;
using TakeoutSaaS.Domain.Tenants.Enums;
namespace TakeoutSaaS.Application.App.Tenants.Commands;
/// <summary>
/// 更新租户公告命令。
/// </summary>
public sealed record UpdateTenantAnnouncementCommand : IRequest<TenantAnnouncementDto?>
{
public long TenantId { get; init; }
public long AnnouncementId { get; init; }
public string Title { get; init; } = string.Empty;
public string Content { get; init; } = string.Empty;
public TenantAnnouncementType AnnouncementType { get; init; } = TenantAnnouncementType.System;
public int Priority { get; init; } = 0;
public DateTime EffectiveFrom { get; init; } = DateTime.UtcNow;
public DateTime? EffectiveTo { get; init; }
public bool IsActive { get; init; } = true;
}