Files
OrpaonVision/OrpaonVision.ConfigApp/Configuration/Services/RuleConfigurationAppService.cs
2026-04-06 22:04:05 +08:00

85 lines
3.7 KiB
C#

using OrpaonVision.Core.Configuration;
using OrpaonVision.Core.Configuration.Contracts;
using OrpaonVision.Core.Results;
namespace OrpaonVision.ConfigApp.Configuration.Services;
/// <summary>
/// 规则配置应用服务。
/// </summary>
public sealed class RuleConfigurationAppService : IRuleConfigurationAppService
{
private readonly IRuleConfigurationStore _ruleConfigurationStore;
/// <summary>
/// 构造函数。
/// </summary>
public RuleConfigurationAppService(IRuleConfigurationStore ruleConfigurationStore)
{
_ruleConfigurationStore = ruleConfigurationStore;
}
/// <inheritdoc />
public Task<Result> SaveDraftAsync(RuleConfigurationDraftDto draft, CancellationToken cancellationToken = default)
{
cancellationToken.ThrowIfCancellationRequested();
return Task.FromResult(_ruleConfigurationStore.SaveDraft(draft));
}
/// <inheritdoc />
public Task<Result<RuleVersionDto>> PublishAsync(string productTypeCode, string publishedBy, CancellationToken cancellationToken = default)
{
cancellationToken.ThrowIfCancellationRequested();
return Task.FromResult(_ruleConfigurationStore.Publish(productTypeCode, publishedBy));
}
/// <inheritdoc />
public Task<Result<RuleVersionDto?>> GetLatestPublishedVersionAsync(string productTypeCode, CancellationToken cancellationToken = default)
{
cancellationToken.ThrowIfCancellationRequested();
return Task.FromResult(_ruleConfigurationStore.GetLatestPublishedVersion(productTypeCode));
}
/// <inheritdoc />
public Task<Result<RuleVersionCompareDto>> CompareVersionsAsync(string productTypeCode, string sourceVersionNo, string targetVersionNo, CancellationToken cancellationToken = default)
{
cancellationToken.ThrowIfCancellationRequested();
return Task.FromResult(_ruleConfigurationStore.CompareVersions(productTypeCode, sourceVersionNo, targetVersionNo));
}
/// <inheritdoc />
public Task<Result<RuleVersionDto>> RollbackToVersionAsync(string productTypeCode, string targetVersionNo, string rolledBackBy, CancellationToken cancellationToken = default)
{
cancellationToken.ThrowIfCancellationRequested();
return Task.FromResult(_ruleConfigurationStore.RollbackToVersion(productTypeCode, targetVersionNo, rolledBackBy));
}
/// <inheritdoc />
public Task<Result> DisableVersionAsync(string productTypeCode, string versionNo, string disabledBy, CancellationToken cancellationToken = default)
{
cancellationToken.ThrowIfCancellationRequested();
return Task.FromResult(_ruleConfigurationStore.DisableVersion(productTypeCode, versionNo, disabledBy));
}
/// <inheritdoc />
public Task<Result<RuleVersionDto>> GetVersionDetailAsync(string productTypeCode, string versionNo, CancellationToken cancellationToken = default)
{
cancellationToken.ThrowIfCancellationRequested();
return Task.FromResult(_ruleConfigurationStore.GetVersionDetail(productTypeCode, versionNo));
}
/// <inheritdoc />
public Task<Result<PagedResult<RuleVersionDto>>> GetVersionPagedListAsync(string productTypeCode, int pageIndex = 1, int pageSize = 20, CancellationToken cancellationToken = default)
{
cancellationToken.ThrowIfCancellationRequested();
return Task.FromResult(_ruleConfigurationStore.GetVersionPagedList(productTypeCode, pageIndex, pageSize));
}
/// <inheritdoc />
public Task<Result<IReadOnlyList<RuleVersionAuditDto>>> GetRecentAuditsAsync(string productTypeCode, int take = 20, CancellationToken cancellationToken = default)
{
cancellationToken.ThrowIfCancellationRequested();
return Task.FromResult(_ruleConfigurationStore.GetRecentAudits(productTypeCode, take));
}
}