Files
TakeoutSaaS.AdminApi/src/Application/TakeoutSaaS.Application/App/TenantPackages/Handlers/DeleteTenantPackageCommandHandler.cs
MSuMshk 0f900e108d feat(admin): 新增管理员角色、账单、订阅、套餐管理功能
- 新增 AdminRolesController 实现角色 CRUD 和权限管理
- 新增 BillingsController 实现账单查询功能
- 新增 SubscriptionsController 实现订阅管理功能
- 新增 TenantPackagesController 实现套餐管理功能
- 新增租户详情、配额使用、账单列表等查询功能
- 新增 TenantPackage、TenantSubscription 等领域实体
- 新增相关枚举:SubscriptionStatus、TenantPackageType 等
- 更新 appsettings 配置文件
- 更新权限授权策略提供者

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 09:11:44 +08:00

37 lines
1.1 KiB
C#

using MediatR;
using TakeoutSaaS.Application.App.TenantPackages.Commands;
using TakeoutSaaS.Domain.Tenants.Repositories;
namespace TakeoutSaaS.Application.App.TenantPackages.Handlers;
/// <summary>
/// 删除租户套餐命令处理器(软删除)。
/// </summary>
public sealed class DeleteTenantPackageCommandHandler(ITenantPackageRepository tenantPackageRepository)
: IRequestHandler<DeleteTenantPackageCommand, bool>
{
/// <inheritdoc />
public async Task<bool> Handle(
DeleteTenantPackageCommand request,
CancellationToken cancellationToken)
{
// 1. 查询套餐(带跟踪用于更新)
var package = await tenantPackageRepository.GetByIdForUpdateAsync(request.TenantPackageId, cancellationToken);
// 2. 如果不存在,返回 false
if (package is null)
{
return false;
}
// 3. 软删除
await tenantPackageRepository.SoftDeleteAsync(package, cancellationToken);
// 4. 保存变更
await tenantPackageRepository.SaveChangesAsync(cancellationToken);
// 5. 返回成功
return true;
}
}