85 lines
3.7 KiB
C#
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));
|
|
}
|
|
}
|