docs: 完善参数注释与StyleCop配置

This commit is contained in:
2025-12-04 12:45:26 +08:00
parent 8e4c2b0e45
commit 37e7d721f3
213 changed files with 695 additions and 446 deletions

View File

@@ -4,3 +4,10 @@ root = true
[*.cs]
dotnet_diagnostic.SA1600.severity = error
dotnet_diagnostic.SA1601.severity = error
dotnet_diagnostic.SA1615.severity = error
dotnet_diagnostic.SA1629.severity = none
dotnet_diagnostic.SA1202.severity = none
dotnet_diagnostic.SA1200.severity = none
dotnet_diagnostic.SA1623.severity = none
dotnet_diagnostic.SA1111.severity = none
dotnet_diagnostic.SA1101.severity = none

View File

@@ -9,5 +9,8 @@
<ItemGroup>
<PackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.507" PrivateAssets="all" />
</ItemGroup>
<ItemGroup>
<AdditionalFiles Include="$(MSBuildThisFileDirectory)stylecop.json" />
</ItemGroup>
</Project>

View File

@@ -1,8 +1,4 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using TakeoutSaaS.Application.Identity.Abstractions;
using TakeoutSaaS.Application.Identity.Contracts;
@@ -26,6 +22,9 @@ public sealed class AuthController(IAdminAuthService authService) : BaseApiContr
/// <summary>
/// 登录获取 Token
/// </summary>
/// <param name="request">登录请求。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>包含访问令牌与刷新令牌的响应。</returns>
[HttpPost("login")]
[AllowAnonymous]
[ProducesResponseType(typeof(ApiResponse<TokenResponse>), StatusCodes.Status200OK)]
@@ -38,6 +37,9 @@ public sealed class AuthController(IAdminAuthService authService) : BaseApiContr
/// <summary>
/// 刷新 Token
/// </summary>
/// <param name="request">刷新令牌请求。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>新的访问令牌与刷新令牌。</returns>
[HttpPost("refresh")]
[AllowAnonymous]
[ProducesResponseType(typeof(ApiResponse<TokenResponse>), StatusCodes.Status200OK)]
@@ -73,6 +75,8 @@ public sealed class AuthController(IAdminAuthService authService) : BaseApiContr
/// }
/// </code>
/// </remarks>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>当前用户档案信息。</returns>
[HttpGet("profile")]
[PermissionAuthorize("identity:profile:read")]
[ProducesResponseType(typeof(ApiResponse<CurrentUserProfile>), StatusCodes.Status200OK)]
@@ -116,6 +120,9 @@ public sealed class AuthController(IAdminAuthService authService) : BaseApiContr
/// }
/// </code>
/// </remarks>
/// <param name="userId">目标用户 ID。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>用户权限概览,未找到则返回 404。</returns>
[HttpGet("permissions/{userId:long}")]
[PermissionAuthorize("identity:permission:read")]
[ProducesResponseType(typeof(ApiResponse<UserPermissionDto>), StatusCodes.Status200OK)]

View File

@@ -1,6 +1,5 @@
using MediatR;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using TakeoutSaaS.Application.App.Deliveries.Commands;
using TakeoutSaaS.Application.App.Deliveries.Dto;
@@ -24,6 +23,9 @@ public sealed class DeliveriesController(IMediator mediator) : BaseApiController
/// <summary>
/// 创建配送单。
/// </summary>
/// <param name="command">创建命令。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>创建后的配送单。</returns>
[HttpPost]
[PermissionAuthorize("delivery:create")]
[ProducesResponseType(typeof(ApiResponse<DeliveryOrderDto>), StatusCodes.Status200OK)]
@@ -39,6 +41,14 @@ public sealed class DeliveriesController(IMediator mediator) : BaseApiController
/// <summary>
/// 查询配送单列表。
/// </summary>
/// <param name="orderId">订单 ID。</param>
/// <param name="status">配送状态。</param>
/// <param name="page">页码。</param>
/// <param name="pageSize">每页大小。</param>
/// <param name="sortBy">排序字段。</param>
/// <param name="sortDesc">是否倒序。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>配送单分页列表。</returns>
[HttpGet]
[PermissionAuthorize("delivery:read")]
[ProducesResponseType(typeof(ApiResponse<PagedResult<DeliveryOrderDto>>), StatusCodes.Status200OK)]
@@ -69,6 +79,9 @@ public sealed class DeliveriesController(IMediator mediator) : BaseApiController
/// <summary>
/// 获取配送单详情。
/// </summary>
/// <param name="deliveryOrderId">配送单 ID。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>配送单详情或未找到。</returns>
[HttpGet("{deliveryOrderId:long}")]
[PermissionAuthorize("delivery:read")]
[ProducesResponseType(typeof(ApiResponse<DeliveryOrderDto>), StatusCodes.Status200OK)]
@@ -87,6 +100,10 @@ public sealed class DeliveriesController(IMediator mediator) : BaseApiController
/// <summary>
/// 更新配送单。
/// </summary>
/// <param name="deliveryOrderId">配送单 ID。</param>
/// <param name="command">更新命令。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>更新后的配送单或未找到。</returns>
[HttpPut("{deliveryOrderId:long}")]
[PermissionAuthorize("delivery:update")]
[ProducesResponseType(typeof(ApiResponse<DeliveryOrderDto>), StatusCodes.Status200OK)]
@@ -111,6 +128,9 @@ public sealed class DeliveriesController(IMediator mediator) : BaseApiController
/// <summary>
/// 删除配送单。
/// </summary>
/// <param name="deliveryOrderId">配送单 ID。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>删除结果,未找到则返回错误。</returns>
[HttpDelete("{deliveryOrderId:long}")]
[PermissionAuthorize("delivery:delete")]
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status200OK)]

View File

@@ -21,6 +21,9 @@ public sealed class DictionaryController(IDictionaryAppService dictionaryAppServ
/// <summary>
/// 查询字典分组。
/// </summary>
/// <param name="query">分组查询条件。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>分组列表。</returns>
[HttpGet]
[PermissionAuthorize("dictionary:group:read")]
[ProducesResponseType(typeof(ApiResponse<IReadOnlyList<DictionaryGroupDto>>), StatusCodes.Status200OK)]
@@ -36,6 +39,9 @@ public sealed class DictionaryController(IDictionaryAppService dictionaryAppServ
/// <summary>
/// 创建字典分组。
/// </summary>
/// <param name="request">创建分组请求。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>创建后的分组。</returns>
[HttpPost]
[PermissionAuthorize("dictionary:group:create")]
[ProducesResponseType(typeof(ApiResponse<DictionaryGroupDto>), StatusCodes.Status200OK)]
@@ -51,6 +57,10 @@ public sealed class DictionaryController(IDictionaryAppService dictionaryAppServ
/// <summary>
/// 更新字典分组。
/// </summary>
/// <param name="groupId">分组 ID。</param>
/// <param name="request">更新请求。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>更新后的分组。</returns>
[HttpPut("{groupId:long}")]
[PermissionAuthorize("dictionary:group:update")]
[ProducesResponseType(typeof(ApiResponse<DictionaryGroupDto>), StatusCodes.Status200OK)]
@@ -66,6 +76,9 @@ public sealed class DictionaryController(IDictionaryAppService dictionaryAppServ
/// <summary>
/// 删除字典分组。
/// </summary>
/// <param name="groupId">分组 ID。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>操作结果。</returns>
[HttpDelete("{groupId:long}")]
[PermissionAuthorize("dictionary:group:delete")]
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status200OK)]
@@ -81,6 +94,10 @@ public sealed class DictionaryController(IDictionaryAppService dictionaryAppServ
/// <summary>
/// 创建字典项。
/// </summary>
/// <param name="groupId">分组 ID。</param>
/// <param name="request">创建请求。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>创建的字典项。</returns>
[HttpPost("{groupId:long}/items")]
[PermissionAuthorize("dictionary:item:create")]
[ProducesResponseType(typeof(ApiResponse<DictionaryItemDto>), StatusCodes.Status200OK)]
@@ -97,6 +114,10 @@ public sealed class DictionaryController(IDictionaryAppService dictionaryAppServ
/// <summary>
/// 更新字典项。
/// </summary>
/// <param name="itemId">字典项 ID。</param>
/// <param name="request">更新请求。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>更新后的字典项。</returns>
[HttpPut("items/{itemId:long}")]
[PermissionAuthorize("dictionary:item:update")]
[ProducesResponseType(typeof(ApiResponse<DictionaryItemDto>), StatusCodes.Status200OK)]
@@ -112,6 +133,9 @@ public sealed class DictionaryController(IDictionaryAppService dictionaryAppServ
/// <summary>
/// 删除字典项。
/// </summary>
/// <param name="itemId">字典项 ID。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>操作结果。</returns>
[HttpDelete("items/{itemId:long}")]
[PermissionAuthorize("dictionary:item:delete")]
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status200OK)]
@@ -127,6 +151,9 @@ public sealed class DictionaryController(IDictionaryAppService dictionaryAppServ
/// <summary>
/// 批量获取字典项(命中缓存)。
/// </summary>
/// <param name="request">批量查询请求。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>分组编码到字典项列表的映射。</returns>
[HttpPost("batch")]
[ProducesResponseType(typeof(ApiResponse<IReadOnlyDictionary<string, IReadOnlyList<DictionaryItemDto>>>), StatusCodes.Status200OK)]
public async Task<ApiResponse<IReadOnlyDictionary<string, IReadOnlyList<DictionaryItemDto>>>> BatchGet([FromBody] DictionaryBatchQueryRequest request, CancellationToken cancellationToken)

View File

@@ -1,6 +1,4 @@
using System.Linq;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using TakeoutSaaS.Application.Storage.Abstractions;
using TakeoutSaaS.Application.Storage.Contracts;

View File

@@ -1,6 +1,4 @@
using System;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using TakeoutSaaS.Shared.Abstractions.Results;
using TakeoutSaaS.Shared.Web.Api;

View File

@@ -1,7 +1,5 @@
using System.Collections.Generic;
using MediatR;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using TakeoutSaaS.Application.App.Merchants.Commands;
using TakeoutSaaS.Application.App.Merchants.Dto;
@@ -24,6 +22,8 @@ public sealed class MerchantCategoriesController(IMediator mediator) : BaseApiCo
/// <summary>
/// 列出所有类目。
/// </summary>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>类目列表。</returns>
[HttpGet]
[PermissionAuthorize("merchant_category:read")]
[ProducesResponseType(typeof(ApiResponse<IReadOnlyList<MerchantCategoryDto>>), StatusCodes.Status200OK)]
@@ -39,6 +39,9 @@ public sealed class MerchantCategoriesController(IMediator mediator) : BaseApiCo
/// <summary>
/// 新增类目。
/// </summary>
/// <param name="command">创建命令。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>创建的类目。</returns>
[HttpPost]
[PermissionAuthorize("merchant_category:create")]
[ProducesResponseType(typeof(ApiResponse<MerchantCategoryDto>), StatusCodes.Status200OK)]
@@ -54,6 +57,9 @@ public sealed class MerchantCategoriesController(IMediator mediator) : BaseApiCo
/// <summary>
/// 删除类目。
/// </summary>
/// <param name="categoryId">类目 ID。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>删除结果,未找到则返回错误。</returns>
[HttpDelete("{categoryId:long}")]
[PermissionAuthorize("merchant_category:delete")]
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status200OK)]
@@ -72,6 +78,9 @@ public sealed class MerchantCategoriesController(IMediator mediator) : BaseApiCo
/// <summary>
/// 批量调整类目排序。
/// </summary>
/// <param name="command">排序命令。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>执行结果。</returns>
[HttpPost("reorder")]
[PermissionAuthorize("merchant_category:update")]
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status200OK)]

View File

@@ -1,6 +1,5 @@
using MediatR;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using TakeoutSaaS.Application.App.Merchants.Commands;
using TakeoutSaaS.Application.App.Merchants.Dto;
@@ -24,6 +23,9 @@ public sealed class MerchantsController(IMediator mediator) : BaseApiController
/// <summary>
/// 创建商户。
/// </summary>
/// <param name="command">创建命令。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>创建后的商户。</returns>
[HttpPost]
[PermissionAuthorize("merchant:create")]
[ProducesResponseType(typeof(ApiResponse<MerchantDto>), StatusCodes.Status200OK)]
@@ -39,6 +41,13 @@ public sealed class MerchantsController(IMediator mediator) : BaseApiController
/// <summary>
/// 查询商户列表。
/// </summary>
/// <param name="status">状态筛选。</param>
/// <param name="page">页码。</param>
/// <param name="pageSize">每页大小。</param>
/// <param name="sortBy">排序字段。</param>
/// <param name="sortDesc">是否倒序。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>商户分页结果。</returns>
[HttpGet]
[PermissionAuthorize("merchant:read")]
[ProducesResponseType(typeof(ApiResponse<IReadOnlyList<MerchantDto>>), StatusCodes.Status200OK)]
@@ -67,6 +76,10 @@ public sealed class MerchantsController(IMediator mediator) : BaseApiController
/// <summary>
/// 更新商户。
/// </summary>
/// <param name="merchantId">商户 ID。</param>
/// <param name="command">更新命令。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>更新后的商户或未找到。</returns>
[HttpPut("{merchantId:long}")]
[PermissionAuthorize("merchant:update")]
[ProducesResponseType(typeof(ApiResponse<MerchantDto>), StatusCodes.Status200OK)]
@@ -91,6 +104,9 @@ public sealed class MerchantsController(IMediator mediator) : BaseApiController
/// <summary>
/// 删除商户。
/// </summary>
/// <param name="merchantId">商户 ID。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>删除结果。</returns>
[HttpDelete("{merchantId:long}")]
[PermissionAuthorize("merchant:delete")]
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status200OK)]
@@ -109,6 +125,9 @@ public sealed class MerchantsController(IMediator mediator) : BaseApiController
/// <summary>
/// 获取商户概览。
/// </summary>
/// <param name="merchantId">商户 ID。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>商户概览或未找到。</returns>
[HttpGet("{merchantId:long}")]
[PermissionAuthorize("merchant:read")]
[ProducesResponseType(typeof(ApiResponse<MerchantDto>), StatusCodes.Status200OK)]

View File

@@ -1,6 +1,5 @@
using MediatR;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using TakeoutSaaS.Application.App.Orders.Commands;
using TakeoutSaaS.Application.App.Orders.Dto;

View File

@@ -1,6 +1,5 @@
using MediatR;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using TakeoutSaaS.Application.App.Payments.Commands;
using TakeoutSaaS.Application.App.Payments.Dto;

View File

@@ -1,7 +1,6 @@
using System.ComponentModel.DataAnnotations;
using MediatR;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using TakeoutSaaS.Application.Identity.Commands;
using TakeoutSaaS.Application.Identity.Contracts;
@@ -26,49 +25,48 @@ public sealed class PermissionsController(IMediator mediator) : BaseApiControlle
/// <remarks>
/// 示例GET /api/admin/v1/permissions?keyword=order&amp;page=1&amp;pageSize=20
/// </remarks>
/// <param name="query">查询条件。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>权限的分页结果。</returns>
[HttpGet]
[PermissionAuthorize("identity:permission:read")]
[ProducesResponseType(typeof(ApiResponse<PagedResult<PermissionDto>>), StatusCodes.Status200OK)]
public async Task<ApiResponse<PagedResult<PermissionDto>>> Search([FromQuery] SearchPermissionsQuery query, CancellationToken cancellationToken)
{
// 1. 查询权限分页
var result = await mediator.Send(query, cancellationToken);
// 2. 返回分页数据
return ApiResponse<PagedResult<PermissionDto>>.Ok(result);
}
/// <summary>
/// 创建权限。
/// </summary>
/// <param name="command">创建命令。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>创建的权限。</returns>
[HttpPost]
[PermissionAuthorize("identity:permission:create")]
[ProducesResponseType(typeof(ApiResponse<PermissionDto>), StatusCodes.Status200OK)]
public async Task<ApiResponse<PermissionDto>> Create([FromBody, Required] CreatePermissionCommand command, CancellationToken cancellationToken)
{
// 1. 创建权限
var result = await mediator.Send(command, cancellationToken);
// 2. 返回创建结果
return ApiResponse<PermissionDto>.Ok(result);
}
/// <summary>
/// 更新权限。
/// </summary>
/// <param name="permissionId">权限 ID。</param>
/// <param name="command">更新命令。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>更新后的权限,未找到时返回 404。</returns>
[HttpPut("{permissionId:long}")]
[PermissionAuthorize("identity:permission:update")]
[ProducesResponseType(typeof(ApiResponse<PermissionDto>), StatusCodes.Status200OK)]
[ProducesResponseType(typeof(ApiResponse<PermissionDto>), StatusCodes.Status404NotFound)]
public async Task<ApiResponse<PermissionDto>> Update(long permissionId, [FromBody, Required] UpdatePermissionCommand command, CancellationToken cancellationToken)
{
// 1. 绑定权限标识
command = command with { PermissionId = permissionId };
// 2. 执行更新
var result = await mediator.Send(command, cancellationToken);
// 3. 返回更新结果或 404
return result is null
? ApiResponse<PermissionDto>.Error(StatusCodes.Status404NotFound, "权限不存在")
: ApiResponse<PermissionDto>.Ok(result);
@@ -77,15 +75,15 @@ public sealed class PermissionsController(IMediator mediator) : BaseApiControlle
/// <summary>
/// 删除权限。
/// </summary>
/// <param name="permissionId">权限 ID。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>删除结果。</returns>
[HttpDelete("{permissionId:long}")]
[PermissionAuthorize("identity:permission:delete")]
[ProducesResponseType(typeof(ApiResponse<bool>), StatusCodes.Status200OK)]
public async Task<ApiResponse<bool>> Delete(long permissionId, CancellationToken cancellationToken)
{
// 1. 构建删除命令
var command = new DeletePermissionCommand { PermissionId = permissionId };
// 2. 执行删除
var result = await mediator.Send(command, cancellationToken);
return ApiResponse<bool>.Ok(result);
}

View File

@@ -1,6 +1,5 @@
using MediatR;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using TakeoutSaaS.Application.App.Products.Commands;
using TakeoutSaaS.Application.App.Products.Dto;

View File

@@ -1,9 +1,7 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using MediatR;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.ComponentModel.DataAnnotations;
using TakeoutSaaS.Application.Identity.Commands;
using TakeoutSaaS.Application.Identity.Contracts;
using TakeoutSaaS.Application.Identity.Queries;

View File

@@ -1,6 +1,5 @@
using MediatR;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using TakeoutSaaS.Application.App.Stores.Commands;
using TakeoutSaaS.Application.App.Stores.Dto;

View File

@@ -1,6 +1,5 @@
using MediatR;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using TakeoutSaaS.Application.App.SystemParameters.Commands;
using TakeoutSaaS.Application.App.SystemParameters.Dto;

View File

@@ -1,8 +1,7 @@
using System.ComponentModel.DataAnnotations;
using MediatR;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.ComponentModel.DataAnnotations;
using TakeoutSaaS.Application.App.Tenants.Commands;
using TakeoutSaaS.Application.App.Tenants.Dto;
using TakeoutSaaS.Application.App.Tenants.Queries;

View File

@@ -1,8 +1,7 @@
using System.ComponentModel.DataAnnotations;
using MediatR;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.ComponentModel.DataAnnotations;
using TakeoutSaaS.Application.App.Tenants.Commands;
using TakeoutSaaS.Application.App.Tenants.Dto;
using TakeoutSaaS.Application.App.Tenants.Queries;

View File

@@ -1,6 +1,5 @@
using MediatR;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using TakeoutSaaS.Application.App.Tenants.Commands;
using TakeoutSaaS.Application.App.Tenants.Dto;

View File

@@ -1,8 +1,7 @@
using System.ComponentModel.DataAnnotations;
using MediatR;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.ComponentModel.DataAnnotations;
using TakeoutSaaS.Application.App.Tenants.Commands;
using TakeoutSaaS.Application.App.Tenants.Dto;
using TakeoutSaaS.Application.App.Tenants.Queries;
@@ -23,6 +22,9 @@ public sealed class TenantPackagesController(IMediator mediator) : BaseApiContro
/// <summary>
/// 分页查询租户套餐。
/// </summary>
/// <param name="query">查询条件。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>租户套餐分页结果。</returns>
[HttpGet]
[PermissionAuthorize("tenant-package:read")]
[ProducesResponseType(typeof(ApiResponse<PagedResult<TenantPackageDto>>), StatusCodes.Status200OK)]
@@ -38,6 +40,9 @@ public sealed class TenantPackagesController(IMediator mediator) : BaseApiContro
/// <summary>
/// 查看套餐详情。
/// </summary>
/// <param name="tenantPackageId">套餐 ID。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>套餐详情或未找到。</returns>
[HttpGet("{tenantPackageId:long}")]
[PermissionAuthorize("tenant-package:read")]
[ProducesResponseType(typeof(ApiResponse<TenantPackageDto>), StatusCodes.Status200OK)]
@@ -56,6 +61,9 @@ public sealed class TenantPackagesController(IMediator mediator) : BaseApiContro
/// <summary>
/// 创建套餐。
/// </summary>
/// <param name="command">创建命令。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>创建后的套餐。</returns>
[HttpPost]
[PermissionAuthorize("tenant-package:create")]
[ProducesResponseType(typeof(ApiResponse<TenantPackageDto>), StatusCodes.Status200OK)]
@@ -71,6 +79,10 @@ public sealed class TenantPackagesController(IMediator mediator) : BaseApiContro
/// <summary>
/// 更新套餐。
/// </summary>
/// <param name="tenantPackageId">套餐 ID。</param>
/// <param name="command">更新命令。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>更新后的套餐或未找到。</returns>
[HttpPut("{tenantPackageId:long}")]
[PermissionAuthorize("tenant-package:update")]
[ProducesResponseType(typeof(ApiResponse<TenantPackageDto>), StatusCodes.Status200OK)]
@@ -92,6 +104,9 @@ public sealed class TenantPackagesController(IMediator mediator) : BaseApiContro
/// <summary>
/// 删除套餐。
/// </summary>
/// <param name="tenantPackageId">套餐 ID。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>删除结果。</returns>
[HttpDelete("{tenantPackageId:long}")]
[PermissionAuthorize("tenant-package:delete")]
[ProducesResponseType(typeof(ApiResponse<bool>), StatusCodes.Status200OK)]

View File

@@ -1,13 +1,11 @@
using System.ComponentModel.DataAnnotations;
using MediatR;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.ComponentModel.DataAnnotations;
using TakeoutSaaS.Application.App.Tenants.Commands;
using TakeoutSaaS.Application.App.Tenants.Dto;
using TakeoutSaaS.Application.App.Tenants.Queries;
using TakeoutSaaS.Module.Authorization.Attributes;
using TakeoutSaaS.Shared.Abstractions.Constants;
using TakeoutSaaS.Shared.Abstractions.Results;
using TakeoutSaaS.Shared.Web.Api;

View File

@@ -1,5 +1,4 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using TakeoutSaaS.Application.Identity.Abstractions;
using TakeoutSaaS.Application.Identity.Contracts;
@@ -51,6 +50,9 @@ public sealed class UserPermissionsController(IAdminAuthService authService) : B
/// }
/// </code>
/// </remarks>
/// <param name="query">搜索条件。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>分页的用户权限概览。</returns>
[HttpGet]
[PermissionAuthorize("identity:permission:read")]
[ProducesResponseType(typeof(ApiResponse<PagedResult<UserPermissionDto>>), StatusCodes.Status200OK)]

View File

@@ -1,10 +1,4 @@
using System;
using System.Linq;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Cors.Infrastructure;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using OpenTelemetry.Metrics;
using OpenTelemetry.Resources;
using OpenTelemetry.Trace;
@@ -101,6 +95,7 @@ builder.Services.AddOpenTelemetry()
exporter.Endpoint = new Uri(otelEndpoint);
});
}
if (useConsoleExporter)
{
tracing.AddConsoleExporter();
@@ -120,6 +115,7 @@ builder.Services.AddOpenTelemetry()
exporter.Endpoint = new Uri(otelEndpoint);
});
}
if (useConsoleExporter)
{
metrics.AddConsoleExporter();
@@ -172,6 +168,7 @@ static void ConfigureCorsPolicy(CorsPolicyBuilder policy, string[] origins)
policy.WithOrigins(origins)
.AllowCredentials();
}
policy
.AllowAnyHeader()
.AllowAnyMethod();

View File

@@ -20,6 +20,9 @@ public sealed class AuthController(IMiniAuthService authService) : BaseApiContro
/// <summary>
/// 微信登录
/// </summary>
/// <param name="request">微信登录请求。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>包含访问令牌与刷新令牌的响应。</returns>
[HttpPost("wechat/login")]
[AllowAnonymous]
[ProducesResponseType(typeof(ApiResponse<TokenResponse>), StatusCodes.Status200OK)]
@@ -35,6 +38,9 @@ public sealed class AuthController(IMiniAuthService authService) : BaseApiContro
/// <summary>
/// 刷新 Token
/// </summary>
/// <param name="request">刷新令牌请求。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>新的访问令牌与刷新令牌。</returns>
[HttpPost("refresh")]
[AllowAnonymous]
[ProducesResponseType(typeof(ApiResponse<TokenResponse>), StatusCodes.Status200OK)]

View File

@@ -1,6 +1,4 @@
using System.Linq;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using TakeoutSaaS.Application.Storage.Abstractions;
using TakeoutSaaS.Application.Storage.Contracts;
@@ -22,6 +20,10 @@ public sealed class FilesController(IFileStorageService fileStorageService) : Ba
/// <summary>
/// 上传图片或文件。
/// </summary>
/// <param name="file">上传文件。</param>
/// <param name="type">上传类型。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>上传结果,包含访问链接等信息。</returns>
[HttpPost("upload")]
[RequestFormLimits(MultipartBodyLengthLimit = 30 * 1024 * 1024)]
[ProducesResponseType(typeof(ApiResponse<FileUploadResponse>), StatusCodes.Status200OK)]

View File

@@ -1,6 +1,4 @@
using System;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using TakeoutSaaS.Shared.Abstractions.Results;
using TakeoutSaaS.Shared.Web.Api;

View File

@@ -1,8 +1,4 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using TakeoutSaaS.Application.Identity.Abstractions;
using TakeoutSaaS.Application.Identity.Contracts;
@@ -26,6 +22,8 @@ public sealed class MeController(IMiniAuthService authService) : BaseApiControll
/// <summary>
/// 获取用户档案
/// </summary>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>当前用户档案信息。</returns>
[HttpGet]
[ProducesResponseType(typeof(ApiResponse<CurrentUserProfile>), StatusCodes.Status200OK)]
[ProducesResponseType(typeof(ApiResponse<CurrentUserProfile>), StatusCodes.Status401Unauthorized)]

View File

@@ -1,7 +1,4 @@
using System;
using System.Linq;
using Microsoft.AspNetCore.Cors.Infrastructure;
using Microsoft.Extensions.Configuration;
using OpenTelemetry.Metrics;
using OpenTelemetry.Resources;
using OpenTelemetry.Trace;

View File

@@ -1,6 +1,4 @@
using System;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using TakeoutSaaS.Shared.Abstractions.Results;
using TakeoutSaaS.Shared.Web.Api;

View File

@@ -1,7 +1,4 @@
using System;
using System.Linq;
using Microsoft.AspNetCore.Cors.Infrastructure;
using Microsoft.Extensions.Configuration;
using OpenTelemetry.Metrics;
using OpenTelemetry.Resources;
using OpenTelemetry.Trace;

View File

@@ -1,7 +1,7 @@
using System.Reflection;
using FluentValidation;
using MediatR;
using Microsoft.Extensions.DependencyInjection;
using System.Reflection;
using TakeoutSaaS.Application.App.Common.Behaviors;
namespace TakeoutSaaS.Application.App.Extensions;

View File

@@ -1,6 +1,5 @@
using System;
using System.ComponentModel.DataAnnotations;
using MediatR;
using System.ComponentModel.DataAnnotations;
using TakeoutSaaS.Application.App.Merchants.Dto;
using TakeoutSaaS.Domain.Merchants.Enums;

View File

@@ -1,5 +1,5 @@
using System.ComponentModel.DataAnnotations;
using MediatR;
using System.ComponentModel.DataAnnotations;
using TakeoutSaaS.Application.App.Merchants.Dto;
namespace TakeoutSaaS.Application.App.Merchants.Commands;

View File

@@ -1,6 +1,5 @@
using System;
using System.ComponentModel.DataAnnotations;
using MediatR;
using System.ComponentModel.DataAnnotations;
using TakeoutSaaS.Application.App.Merchants.Dto;
namespace TakeoutSaaS.Application.App.Merchants.Commands;

View File

@@ -1,5 +1,5 @@
using System.ComponentModel.DataAnnotations;
using MediatR;
using System.ComponentModel.DataAnnotations;
namespace TakeoutSaaS.Application.App.Merchants.Commands;

View File

@@ -1,6 +1,5 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using MediatR;
using System.ComponentModel.DataAnnotations;
namespace TakeoutSaaS.Application.App.Merchants.Commands;

View File

@@ -1,5 +1,5 @@
using System.ComponentModel.DataAnnotations;
using MediatR;
using System.ComponentModel.DataAnnotations;
using TakeoutSaaS.Application.App.Merchants.Dto;
namespace TakeoutSaaS.Application.App.Merchants.Commands;

View File

@@ -1,5 +1,5 @@
using System.ComponentModel.DataAnnotations;
using MediatR;
using System.ComponentModel.DataAnnotations;
using TakeoutSaaS.Application.App.Merchants.Dto;
namespace TakeoutSaaS.Application.App.Merchants.Commands;

View File

@@ -1,6 +1,5 @@
using System;
using System.ComponentModel.DataAnnotations;
using MediatR;
using System.ComponentModel.DataAnnotations;
using TakeoutSaaS.Application.App.Merchants.Dto;
using TakeoutSaaS.Domain.Merchants.Enums;

View File

@@ -1,5 +1,3 @@
using System;
namespace TakeoutSaaS.Application.App.Merchants.Dto;
/// <summary>

View File

@@ -1,5 +1,3 @@
using System.Collections.Generic;
namespace TakeoutSaaS.Application.App.Merchants.Dto;
/// <summary>

View File

@@ -1,4 +1,3 @@
using System.Linq;
using MediatR;
using TakeoutSaaS.Application.App.Merchants.Commands;
using TakeoutSaaS.Application.App.Merchants.Dto;

View File

@@ -1,4 +1,3 @@
using System.Linq;
using MediatR;
using TakeoutSaaS.Application.App.Merchants.Dto;
using TakeoutSaaS.Application.App.Merchants.Queries;

View File

@@ -1,5 +1,3 @@
using System.Collections.Generic;
using System.Linq;
using MediatR;
using TakeoutSaaS.Application.App.Merchants.Queries;
using TakeoutSaaS.Domain.Merchants.Repositories;

View File

@@ -1,4 +1,3 @@
using System.Collections.Generic;
using MediatR;
using TakeoutSaaS.Application.App.Merchants.Dto;
using TakeoutSaaS.Application.App.Merchants.Queries;

View File

@@ -1,4 +1,3 @@
using System.Collections.Generic;
using MediatR;
using TakeoutSaaS.Application.App.Merchants.Dto;
using TakeoutSaaS.Application.App.Merchants.Queries;

View File

@@ -1,4 +1,3 @@
using System.Collections.Generic;
using MediatR;
using TakeoutSaaS.Application.App.Merchants.Dto;
using TakeoutSaaS.Application.App.Merchants.Queries;

View File

@@ -1,4 +1,3 @@
using System.Linq;
using MediatR;
using TakeoutSaaS.Application.App.Merchants.Commands;
using TakeoutSaaS.Domain.Merchants.Repositories;

View File

@@ -1,8 +1,8 @@
using MediatR;
using TakeoutSaaS.Application.App.Merchants.Commands;
using TakeoutSaaS.Application.App.Merchants.Dto;
using TakeoutSaaS.Domain.Merchants.Enums;
using TakeoutSaaS.Domain.Merchants.Entities;
using TakeoutSaaS.Domain.Merchants.Enums;
using TakeoutSaaS.Domain.Merchants.Repositories;
using TakeoutSaaS.Shared.Abstractions.Constants;
using TakeoutSaaS.Shared.Abstractions.Exceptions;

View File

@@ -1,5 +1,3 @@
using System.Collections.Generic;
using System.Linq;
using TakeoutSaaS.Application.App.Merchants.Dto;
using TakeoutSaaS.Domain.Merchants.Entities;

View File

@@ -1,4 +1,3 @@
using System.Collections.Generic;
using MediatR;
namespace TakeoutSaaS.Application.App.Merchants.Queries;

View File

@@ -1,4 +1,3 @@
using System.Collections.Generic;
using MediatR;
using TakeoutSaaS.Application.App.Merchants.Dto;

View File

@@ -1,4 +1,3 @@
using System.Collections.Generic;
using MediatR;
using TakeoutSaaS.Application.App.Merchants.Dto;

View File

@@ -1,4 +1,3 @@
using System.Collections.Generic;
using MediatR;
using TakeoutSaaS.Application.App.Merchants.Dto;

View File

@@ -78,6 +78,7 @@ public sealed class CreateOrderCommandHandler(
{
await orderRepository.AddItemsAsync(items, cancellationToken);
}
await orderRepository.SaveChangesAsync(cancellationToken);
// 5. 记录日志

View File

@@ -1,7 +1,6 @@
using MediatR;
using TakeoutSaaS.Application.App.Payments.Dto;
using TakeoutSaaS.Application.App.Payments.Queries;
using TakeoutSaaS.Domain.Payments.Entities;
using TakeoutSaaS.Domain.Payments.Repositories;
using TakeoutSaaS.Shared.Abstractions.Results;
using TakeoutSaaS.Shared.Abstractions.Tenancy;

View File

@@ -1,4 +1,3 @@
using System;
using MediatR;
using TakeoutSaaS.Application.App.Tenants.Commands;
using TakeoutSaaS.Application.App.Tenants.Dto;

View File

@@ -1,4 +1,3 @@
using System.Linq;
using MediatR;
using TakeoutSaaS.Application.App.Tenants.Dto;
using TakeoutSaaS.Application.App.Tenants.Queries;

View File

@@ -3,8 +3,6 @@ using TakeoutSaaS.Application.App.Tenants.Commands;
using TakeoutSaaS.Application.App.Tenants.Dto;
using TakeoutSaaS.Domain.Tenants.Entities;
using TakeoutSaaS.Domain.Tenants.Repositories;
using TakeoutSaaS.Shared.Abstractions.Constants;
using TakeoutSaaS.Shared.Abstractions.Exceptions;
using TakeoutSaaS.Shared.Abstractions.Security;
namespace TakeoutSaaS.Application.App.Tenants.Handlers;

View File

@@ -1,5 +1,3 @@
using System.Collections.Generic;
using System.Linq;
using MediatR;
using TakeoutSaaS.Application.App.Tenants.Dto;
using TakeoutSaaS.Application.App.Tenants.Queries;

View File

@@ -1,4 +1,3 @@
using System.Linq;
using MediatR;
using TakeoutSaaS.Application.App.Tenants.Dto;
using TakeoutSaaS.Application.App.Tenants.Queries;

View File

@@ -1,4 +1,3 @@
using System.Linq;
using MediatR;
using TakeoutSaaS.Application.App.Tenants.Dto;
using TakeoutSaaS.Application.App.Tenants.Queries;

View File

@@ -1,4 +1,3 @@
using System.Linq;
using MediatR;
using TakeoutSaaS.Application.App.Tenants.Dto;
using TakeoutSaaS.Application.App.Tenants.Queries;

View File

@@ -1,4 +1,3 @@
using System.Linq;
using MediatR;
using TakeoutSaaS.Application.App.Tenants.Dto;
using TakeoutSaaS.Application.App.Tenants.Queries;

View File

@@ -1,6 +1,3 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using TakeoutSaaS.Application.Dictionary.Models;
namespace TakeoutSaaS.Application.Dictionary.Abstractions;

View File

@@ -1,6 +1,6 @@
using System.ComponentModel.DataAnnotations;
using System.Text.Json.Serialization;
using TakeoutSaaS.Shared.Abstractions.Serialization;
using System.ComponentModel.DataAnnotations;
namespace TakeoutSaaS.Application.Dictionary.Contracts;

View File

@@ -1,6 +1,5 @@
using TakeoutSaaS.Domain.Dictionary.Enums;
using System.Text.Json.Serialization;
using TakeoutSaaS.Domain.Dictionary.Enums;
using TakeoutSaaS.Shared.Abstractions.Serialization;
namespace TakeoutSaaS.Application.Dictionary.Models;

View File

@@ -1,4 +1,3 @@
using System.Linq;
using Microsoft.Extensions.Logging;
using TakeoutSaaS.Application.Dictionary.Abstractions;
using TakeoutSaaS.Application.Dictionary.Contracts;

View File

@@ -1,6 +1,3 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using TakeoutSaaS.Application.Identity.Contracts;
using TakeoutSaaS.Shared.Abstractions.Results;

View File

@@ -1,5 +1,3 @@
using System.Threading;
using System.Threading.Tasks;
using TakeoutSaaS.Application.Identity.Contracts;
namespace TakeoutSaaS.Application.Identity.Abstractions;

View File

@@ -1,6 +1,3 @@
using System.Threading;
using System.Threading.Tasks;
namespace TakeoutSaaS.Application.Identity.Abstractions;
/// <summary>

View File

@@ -1,6 +1,3 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using TakeoutSaaS.Application.Identity.Contracts;
namespace TakeoutSaaS.Application.Identity.Abstractions;

View File

@@ -1,6 +1,3 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using TakeoutSaaS.Application.Identity.Models;
namespace TakeoutSaaS.Application.Identity.Abstractions;

View File

@@ -1,6 +1,3 @@
using System.Threading;
using System.Threading.Tasks;
namespace TakeoutSaaS.Application.Identity.Abstractions;
/// <summary>

View File

@@ -1,4 +1,3 @@
using System.Collections.Generic;
using MediatR;
using TakeoutSaaS.Application.Identity.Contracts;

View File

@@ -1,4 +1,3 @@
using System.Collections.Generic;
using MediatR;
using TakeoutSaaS.Application.Identity.Contracts;

View File

@@ -1,4 +1,3 @@
using System.Collections.Generic;
using MediatR;
using TakeoutSaaS.Application.Identity.Contracts;

View File

@@ -1,5 +1,3 @@
using System.Collections.Generic;
namespace TakeoutSaaS.Application.Identity.Contracts;
/// <summary>

View File

@@ -1,4 +1,3 @@
using System;
using System.Text.Json.Serialization;
using TakeoutSaaS.Shared.Abstractions.Serialization;

View File

@@ -1,6 +1,3 @@
using System;
using System.Collections.Generic;
using System.Linq;
using MediatR;
using TakeoutSaaS.Application.Identity.Commands;
using TakeoutSaaS.Application.Identity.Contracts;

View File

@@ -1,5 +1,3 @@
using System;
using System.Linq;
using MediatR;
using TakeoutSaaS.Application.Identity.Commands;
using TakeoutSaaS.Application.Identity.Contracts;

View File

@@ -1,4 +1,3 @@
using System.Linq;
using MediatR;
using TakeoutSaaS.Application.Identity.Contracts;
using TakeoutSaaS.Application.Identity.Queries;

View File

@@ -1,5 +1,3 @@
using System;
using System.Linq;
using MediatR;
using TakeoutSaaS.Application.Identity.Contracts;
using TakeoutSaaS.Application.Identity.Queries;

View File

@@ -1,6 +1,3 @@
using System;
using System.Collections.Generic;
using System.Linq;
using MediatR;
using TakeoutSaaS.Application.Identity.Commands;
using TakeoutSaaS.Application.Identity.Contracts;

View File

@@ -1,5 +1,3 @@
using System.Collections.Generic;
using System.Linq;
using MediatR;
using TakeoutSaaS.Application.Identity.Contracts;
using TakeoutSaaS.Application.Identity.Queries;

View File

@@ -1,5 +1,3 @@
using System;
using System.Linq;
using MediatR;
using TakeoutSaaS.Application.Identity.Contracts;
using TakeoutSaaS.Application.Identity.Queries;

View File

@@ -1,5 +1,3 @@
using System;
using System.Linq;
using MediatR;
using TakeoutSaaS.Application.Identity.Contracts;
using TakeoutSaaS.Application.Identity.Queries;

View File

@@ -1,6 +1,3 @@
using System;
using System.Collections.Generic;
using System.Linq;
using MediatR;
using TakeoutSaaS.Application.Identity.Contracts;
using TakeoutSaaS.Application.Identity.Queries;

View File

@@ -1,5 +1,3 @@
using System.Collections.Generic;
using System.Linq;
using TakeoutSaaS.Application.Identity.Contracts;
using TakeoutSaaS.Domain.Identity.Entities;

View File

@@ -1,5 +1,3 @@
using System;
using System.Linq;
using MediatR;
using TakeoutSaaS.Application.Identity.Commands;
using TakeoutSaaS.Application.Identity.Contracts;

View File

@@ -1,4 +1,3 @@
using System.Collections.Generic;
using MediatR;
using TakeoutSaaS.Application.Identity.Contracts;

View File

@@ -1,6 +1,3 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Identity;
using TakeoutSaaS.Application.Identity.Abstractions;
using TakeoutSaaS.Application.Identity.Contracts;
@@ -80,7 +77,7 @@ public sealed class AdminAuthService(
// 3. 撤销旧刷新令牌(防止重复使用)
await refreshTokenStore.RevokeAsync(descriptor.Token, cancellationToken);
// 4. 生成新的令牌对
var profile = await BuildProfileAsync(user, cancellationToken);
return await jwtTokenService.CreateTokensAsync(profile, false, cancellationToken);

View File

@@ -1,5 +1,5 @@
using System.Net;
using Microsoft.AspNetCore.Http;
using System.Net;
using TakeoutSaaS.Application.Identity.Abstractions;
using TakeoutSaaS.Application.Identity.Contracts;
using TakeoutSaaS.Domain.Identity.Entities;
@@ -54,7 +54,7 @@ public sealed class MiniAuthService(
// 5. 登录成功后重置限流计数
await rateLimiter.ResetAsync(throttleKey, cancellationToken);
// 6. 构建用户档案并生成令牌
var profile = BuildProfile(user);
return await jwtTokenService.CreateTokensAsync(profile, isNew, cancellationToken);
@@ -82,7 +82,7 @@ public sealed class MiniAuthService(
// 3. 撤销旧刷新令牌(防止重复使用)
await refreshTokenStore.RevokeAsync(descriptor.Token, cancellationToken);
// 4. 生成新的令牌对
var profile = BuildProfile(user);
return await jwtTokenService.CreateTokensAsync(profile, false, cancellationToken);

View File

@@ -1,6 +1,3 @@
using System.Threading;
using System.Threading.Tasks;
namespace TakeoutSaaS.Application.Messaging.Abstractions;
/// <summary>

View File

@@ -1,5 +1,3 @@
using System.Threading;
using System.Threading.Tasks;
using TakeoutSaaS.Application.Messaging.Abstractions;
using TakeoutSaaS.Module.Messaging.Abstractions;

View File

@@ -1,5 +1,3 @@
using System.Threading;
using System.Threading.Tasks;
using TakeoutSaaS.Application.Sms.Contracts;
namespace TakeoutSaaS.Application.Sms.Abstractions;

View File

@@ -1,5 +1,3 @@
using System;
namespace TakeoutSaaS.Application.Sms.Contracts;
/// <summary>

View File

@@ -1,15 +1,14 @@
using System.Security.Cryptography;
using System.Text;
using Microsoft.Extensions.Caching.Distributed;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using System.Security.Cryptography;
using System.Text;
using TakeoutSaaS.Application.Sms.Abstractions;
using TakeoutSaaS.Application.Sms.Contracts;
using TakeoutSaaS.Application.Sms.Options;
using TakeoutSaaS.Module.Sms.Abstractions;
using TakeoutSaaS.Module.Sms.Models;
using TakeoutSaaS.Module.Sms.Options;
using TakeoutSaaS.Module.Sms;
using TakeoutSaaS.Shared.Abstractions.Constants;
using TakeoutSaaS.Shared.Abstractions.Exceptions;
using TakeoutSaaS.Shared.Abstractions.Tenancy;

View File

@@ -1,5 +1,3 @@
using System.Threading;
using System.Threading.Tasks;
using TakeoutSaaS.Application.Storage.Contracts;
namespace TakeoutSaaS.Application.Storage.Abstractions;

View File

@@ -1,6 +1,3 @@
using System;
using System.Collections.Generic;
namespace TakeoutSaaS.Application.Storage.Contracts;
/// <summary>

Some files were not shown because too many files have changed in this diff Show More