From 3b2b376787131b515d1f8900a41ee95a9078d668 Mon Sep 17 00:00:00 2001
From: MSuMshk <2039814060@qq.com>
Date: Tue, 2 Dec 2025 12:53:06 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E7=B3=BB=E7=BB=9F=E5=8F=82=E6=95=B0?=
=?UTF-8?q?=E5=BA=94=E7=94=A8=E5=B1=82=E4=B8=8E=E9=AA=8C=E8=AF=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Controllers/SystemParametersController.cs | 115 ++++++++++++++++++
.../Commands/CreateSystemParameterCommand.cs | 35 ++++++
.../Commands/DeleteSystemParameterCommand.cs | 14 +++
.../Commands/UpdateSystemParameterCommand.cs | 40 ++++++
.../Dto/SystemParameterDto.cs | 57 +++++++++
.../CreateSystemParameterCommandHandler.cs | 64 ++++++++++
.../DeleteSystemParameterCommandHandler.cs | 33 +++++
.../GetSystemParameterByIdQueryHandler.cs | 35 ++++++
.../SearchSystemParametersQueryHandler.cs | 69 +++++++++++
.../UpdateSystemParameterCommandHandler.cs | 66 ++++++++++
.../Queries/GetSystemParameterByIdQuery.cs | 9 ++
.../Queries/SearchSystemParametersQuery.cs | 41 +++++++
.../CreateSystemParameterCommandValidator.cs | 21 ++++
.../SearchSystemParametersQueryValidator.cs | 21 ++++
.../UpdateSystemParameterCommandValidator.cs | 22 ++++
.../ISystemParameterRepository.cs | 47 +++++++
.../DictionaryServiceCollectionExtensions.cs | 2 +
.../EfSystemParameterRepository.cs | 80 ++++++++++++
18 files changed, 771 insertions(+)
create mode 100644 src/Api/TakeoutSaaS.AdminApi/Controllers/SystemParametersController.cs
create mode 100644 src/Application/TakeoutSaaS.Application/App/SystemParameters/Commands/CreateSystemParameterCommand.cs
create mode 100644 src/Application/TakeoutSaaS.Application/App/SystemParameters/Commands/DeleteSystemParameterCommand.cs
create mode 100644 src/Application/TakeoutSaaS.Application/App/SystemParameters/Commands/UpdateSystemParameterCommand.cs
create mode 100644 src/Application/TakeoutSaaS.Application/App/SystemParameters/Dto/SystemParameterDto.cs
create mode 100644 src/Application/TakeoutSaaS.Application/App/SystemParameters/Handlers/CreateSystemParameterCommandHandler.cs
create mode 100644 src/Application/TakeoutSaaS.Application/App/SystemParameters/Handlers/DeleteSystemParameterCommandHandler.cs
create mode 100644 src/Application/TakeoutSaaS.Application/App/SystemParameters/Handlers/GetSystemParameterByIdQueryHandler.cs
create mode 100644 src/Application/TakeoutSaaS.Application/App/SystemParameters/Handlers/SearchSystemParametersQueryHandler.cs
create mode 100644 src/Application/TakeoutSaaS.Application/App/SystemParameters/Handlers/UpdateSystemParameterCommandHandler.cs
create mode 100644 src/Application/TakeoutSaaS.Application/App/SystemParameters/Queries/GetSystemParameterByIdQuery.cs
create mode 100644 src/Application/TakeoutSaaS.Application/App/SystemParameters/Queries/SearchSystemParametersQuery.cs
create mode 100644 src/Application/TakeoutSaaS.Application/App/SystemParameters/Validators/CreateSystemParameterCommandValidator.cs
create mode 100644 src/Application/TakeoutSaaS.Application/App/SystemParameters/Validators/SearchSystemParametersQueryValidator.cs
create mode 100644 src/Application/TakeoutSaaS.Application/App/SystemParameters/Validators/UpdateSystemParameterCommandValidator.cs
create mode 100644 src/Domain/TakeoutSaaS.Domain/SystemParameters/Repositories/ISystemParameterRepository.cs
create mode 100644 src/Infrastructure/TakeoutSaaS.Infrastructure/Dictionary/Repositories/EfSystemParameterRepository.cs
diff --git a/src/Api/TakeoutSaaS.AdminApi/Controllers/SystemParametersController.cs b/src/Api/TakeoutSaaS.AdminApi/Controllers/SystemParametersController.cs
new file mode 100644
index 0000000..045d649
--- /dev/null
+++ b/src/Api/TakeoutSaaS.AdminApi/Controllers/SystemParametersController.cs
@@ -0,0 +1,115 @@
+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;
+using TakeoutSaaS.Application.App.SystemParameters.Queries;
+using TakeoutSaaS.Module.Authorization.Attributes;
+using TakeoutSaaS.Shared.Abstractions.Constants;
+using TakeoutSaaS.Shared.Abstractions.Results;
+using TakeoutSaaS.Shared.Web.Api;
+
+namespace TakeoutSaaS.AdminApi.Controllers;
+
+///
+/// 系统参数管理。
+///
+///
+/// 提供参数的新增、修改、查询与删除。
+///
+[ApiVersion("1.0")]
+[Authorize]
+[Route("api/admin/v{version:apiVersion}/system-parameters")]
+public sealed class SystemParametersController(IMediator mediator) : BaseApiController
+{
+ ///
+ /// 创建系统参数。
+ ///
+ [HttpPost]
+ [PermissionAuthorize("system-parameter:create")]
+ [ProducesResponseType(typeof(ApiResponse), StatusCodes.Status200OK)]
+ public async Task> Create([FromBody] CreateSystemParameterCommand command, CancellationToken cancellationToken)
+ {
+ var result = await mediator.Send(command, cancellationToken);
+ return ApiResponse.Ok(result);
+ }
+
+ ///
+ /// 查询系统参数列表。
+ ///
+ [HttpGet]
+ [PermissionAuthorize("system-parameter:read")]
+ [ProducesResponseType(typeof(ApiResponse>), StatusCodes.Status200OK)]
+ public async Task>> List(
+ [FromQuery] string? keyword,
+ [FromQuery] bool? isEnabled,
+ [FromQuery] int page = 1,
+ [FromQuery] int pageSize = 20,
+ [FromQuery] string? sortBy = null,
+ [FromQuery] bool sortDesc = true,
+ CancellationToken cancellationToken = default)
+ {
+ var result = await mediator.Send(new SearchSystemParametersQuery
+ {
+ Keyword = keyword,
+ IsEnabled = isEnabled,
+ Page = page,
+ PageSize = pageSize,
+ SortBy = sortBy,
+ SortDescending = sortDesc
+ }, cancellationToken);
+
+ return ApiResponse>.Ok(result);
+ }
+
+ ///
+ /// 获取系统参数详情。
+ ///
+ [HttpGet("{parameterId:long}")]
+ [PermissionAuthorize("system-parameter:read")]
+ [ProducesResponseType(typeof(ApiResponse), StatusCodes.Status200OK)]
+ [ProducesResponseType(typeof(ApiResponse