From 904b44e26223471d01535a0c44d7b991e734ca64 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9F=B3=E6=96=87=E7=BF=94?= <878130837@qq.com>
Date: Sat, 2 Mar 2024 14:41:15 +0800
Subject: [PATCH 1/2] =?UTF-8?q?=E5=85=A5=E5=8F=82=E6=A0=A1=E9=AA=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../TrackContents/EditTrackContentMapInput.cs | 12 ++--
.../TrackPull/EditTrackPullConfigInput.cs | 10 +--
.../EditTrackTemplateContentInput.cs | 13 ++--
.../TrackContents/TrackContentService.cs | 6 +-
.../EditTrackContentMapInputValidation.cs | 45 +++++++++++++
.../EditTrackPullConfigInputValidation.cs | 64 +++++++++++++++++++
...EditTrackTemplateContentInputValidation.cs | 37 +++++++++++
7 files changed, 166 insertions(+), 21 deletions(-)
create mode 100644 src/SJZY.Track.Application/Validations/TrackContents/EditTrackContentMapInputValidation.cs
create mode 100644 src/SJZY.Track.Application/Validations/TrackPull/EditTrackPullConfigInputValidation.cs
create mode 100644 src/SJZY.Track.Application/Validations/TrackTemplates/EditTrackTemplateContentInputValidation.cs
diff --git a/src/SJZY.Track.Application.Contract/Dtos/TrackContents/EditTrackContentMapInput.cs b/src/SJZY.Track.Application.Contract/Dtos/TrackContents/EditTrackContentMapInput.cs
index e952cc62..e207654d 100644
--- a/src/SJZY.Track.Application.Contract/Dtos/TrackContents/EditTrackContentMapInput.cs
+++ b/src/SJZY.Track.Application.Contract/Dtos/TrackContents/EditTrackContentMapInput.cs
@@ -7,17 +7,17 @@ public class EditTrackContentMapInput
///
/// 映射子系统id
///
- public int MapSubSystemId { get; set; }
+ public int? MapSubSystemId { get; set; }
///
/// 映射轨迹内容代码
///
- public string MapTrackContentCode { get; set; }
+ public string? MapTrackContentCode { get; set; }
///
/// 映射轨迹内容id
///
- public int MapTrackContentId { get; set; }
+ public int? MapTrackContentId { get; set; }
///
/// 操作类型
@@ -27,15 +27,15 @@ public class EditTrackContentMapInput
///
/// 源子系统id
///
- public int SubSystemId { get; set; }
+ public int? SubSystemId { get; set; }
///
/// 源轨迹内容代码
///
- public string TrackContentCode { get; set; }
+ public string? TrackContentCode { get; set; }
///
/// 源轨迹内容id
///
- public int TrackContentId { get; set; }
+ public int? TrackContentId { get; set; }
}
\ No newline at end of file
diff --git a/src/SJZY.Track.Application.Contract/Dtos/TrackPull/EditTrackPullConfigInput.cs b/src/SJZY.Track.Application.Contract/Dtos/TrackPull/EditTrackPullConfigInput.cs
index f525e755..2803a4b3 100644
--- a/src/SJZY.Track.Application.Contract/Dtos/TrackPull/EditTrackPullConfigInput.cs
+++ b/src/SJZY.Track.Application.Contract/Dtos/TrackPull/EditTrackPullConfigInput.cs
@@ -17,22 +17,22 @@ public class EditTrackPullConfigInput
///
/// 返参解析对象
///
- public int ParseMethod { get; set; }
+ public int? ParseMethod { get; set; }
///
/// 定时任务(分钟)
///
- public int PullInterval { get; set; }
+ public int? PullInterval { get; set; }
///
/// 服务商id
///
- public int ServiceProviderId { get; set; }
+ public int? ServiceProviderId { get; set; }
///
/// 子系统id
///
- public int SubSystemId { get; set; }
+ public int? SubSystemId { get; set; }
///
/// 拉取轨迹时区
@@ -62,7 +62,7 @@ public class EditTrackPullConfigInput
///
/// 轨迹模板id
///
- public int TrackTemplateId { get; set; }
+ public int? TrackTemplateId { get; set; }
///
/// 拉取轨迹发生时间
diff --git a/src/SJZY.Track.Application.Contract/Dtos/TrackTemplates/EditTrackTemplateContentInput.cs b/src/SJZY.Track.Application.Contract/Dtos/TrackTemplates/EditTrackTemplateContentInput.cs
index 0c7144fc..62ae5922 100644
--- a/src/SJZY.Track.Application.Contract/Dtos/TrackTemplates/EditTrackTemplateContentInput.cs
+++ b/src/SJZY.Track.Application.Contract/Dtos/TrackTemplates/EditTrackTemplateContentInput.cs
@@ -14,25 +14,20 @@ public class EditTrackTemplateContentInput
///
/// 是否可删
///
- public bool IsCanDelete { get; set; }
+ public bool? IsCanDelete { get; set; }
///
/// 是否对外
///
- public bool IsExternal { get; set; }
-
- ///
- /// 排序
- ///
- public int Sort { get; set; }
+ public bool? IsExternal { get; set; }
///
/// 轨迹内容id
///
- public int TrackContentId { get; set; }
+ public int? TrackContentId { get; set; }
///
/// 轨迹模板id
///
- public int TrackTemplateId { get; set; }
+ public int? TrackTemplateId { get; set; }
}
\ No newline at end of file
diff --git a/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs b/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs
index 2e2b8ae7..97c1c0fc 100644
--- a/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs
+++ b/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs
@@ -120,6 +120,7 @@ namespace SJZY.Track.Application.Services.TrackContents
//throw new BusinessException(message: _stringLocalizer["TrackContentExist"]);
throw new BusinessException(message: "当前子系统下,轨迹代码或轨迹内容或轨迹内容英文存在");
}
+
#endregion 业务逻辑校验
//更新的时候需要覆盖内容映射轨迹代码
@@ -158,6 +159,7 @@ namespace SJZY.Track.Application.Services.TrackContents
private async Task DeleteAsync(EditTrackContentInput input)
{
#region 业务校验
+
//需要加个判断,存在内容映射,则出提示
#endregion 业务校验
@@ -201,12 +203,14 @@ namespace SJZY.Track.Application.Services.TrackContents
{
if (input.Options != OptionTypeNoNull.删除)
{
+ if (input.TrackContentId == input.MapTrackContentId) throw new BusinessException(message: _stringLocalizer["IsTrackContentMapAny"]);
+
Expression> isMapAnyExp = x =>
x.TrackContentId == input.TrackContentId && x.MapTrackContentId == input.MapTrackContentId;
if (input.Options == OptionTypeNoNull.修改) isMapAnyExp.And(x => x.Id != input.Id);
if (await _trackContentRepository.IsMapAnyAsync(isMapAnyExp))
- throw new BusinessException(message: _stringLocalizer["IsTrackContentMapAny"]);
+ throw new BusinessException(message: _stringLocalizer["NotAllowedToMapOneself"]);
}
switch (input.Options)
diff --git a/src/SJZY.Track.Application/Validations/TrackContents/EditTrackContentMapInputValidation.cs b/src/SJZY.Track.Application/Validations/TrackContents/EditTrackContentMapInputValidation.cs
new file mode 100644
index 00000000..b4cf3ed8
--- /dev/null
+++ b/src/SJZY.Track.Application/Validations/TrackContents/EditTrackContentMapInputValidation.cs
@@ -0,0 +1,45 @@
+using FluentValidation;
+using Microsoft.Extensions.Localization;
+using SJZY.Expand.ABP.Core.Localization;
+using SJZY.Track.Application.Contract.Dtos.TrackContents;
+using SJZY.Track.Application.Localization;
+
+namespace SJZY.Track.Application.Validations.TrackContents;
+
+public class EditTrackContentMapInputValidation : AbstractValidator, IValidationEnabled
+{
+ public EditTrackContentMapInputValidation(IStringLocalizer stringLocalizer)
+ {
+ RuleFor(x => x.Options).IsInEnum().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_IsInEnum, nameof(EditTrackContentMapInput.Options)]);
+
+ RuleFor(x => x.Id).GreaterThan(0).WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_GreaterThan, nameof(EditTrackContentMapInput.Id), 0]);
+
+ RuleFor(x => x.MapSubSystemId).GreaterThan(0).WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_GreaterThan, nameof(EditTrackContentMapInput.MapSubSystemId), 0]);
+
+ RuleFor(x => x.MapTrackContentId).GreaterThan(0).WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_GreaterThan, nameof(EditTrackContentMapInput.MapTrackContentId), 0]);
+
+ RuleFor(x => x.SubSystemId).GreaterThan(0).WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_GreaterThan, nameof(EditTrackContentMapInput.SubSystemId), 0]);
+
+ RuleFor(x => x.TrackContentId).GreaterThan(0).WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_GreaterThan, nameof(EditTrackContentMapInput.TrackContentId), 0]);
+
+ When(x => x.Options != OptionTypeNoNull.新增, () =>
+ {
+ RuleFor(x => x.Id).NotNull().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_NotNull, nameof(EditTrackContentMapInput.Id)]);
+ });
+
+ When(x => x.Options != OptionTypeNoNull.删除, () =>
+ {
+ RuleFor(x => x.MapSubSystemId).NotNull().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_NotNull, nameof(EditTrackContentMapInput.MapSubSystemId)]);
+
+ RuleFor(x => x.MapTrackContentCode).NotEmpty().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_NotEmpty, nameof(EditTrackContentMapInput.MapTrackContentCode)]);
+
+ RuleFor(x => x.MapTrackContentId).NotNull().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_NotNull, nameof(EditTrackContentMapInput.MapTrackContentId)]);
+
+ RuleFor(x => x.SubSystemId).NotNull().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_NotNull, nameof(EditTrackContentMapInput.SubSystemId)]);
+
+ RuleFor(x => x.TrackContentCode).NotEmpty().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_NotEmpty, nameof(EditTrackContentMapInput.TrackContentCode)]);
+
+ RuleFor(x => x.TrackContentId).NotNull().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_NotNull, nameof(EditTrackContentMapInput.TrackContentId)]);
+ });
+ }
+}
\ No newline at end of file
diff --git a/src/SJZY.Track.Application/Validations/TrackPull/EditTrackPullConfigInputValidation.cs b/src/SJZY.Track.Application/Validations/TrackPull/EditTrackPullConfigInputValidation.cs
new file mode 100644
index 00000000..fc540b38
--- /dev/null
+++ b/src/SJZY.Track.Application/Validations/TrackPull/EditTrackPullConfigInputValidation.cs
@@ -0,0 +1,64 @@
+using FluentValidation;
+using Microsoft.Extensions.Localization;
+using SJZY.Expand.ABP.Core.Localization;
+using SJZY.Track.Application.Contract.Dtos.TrackPull;
+using SJZY.Track.Application.Localization;
+
+namespace SJZY.Track.Application.Validations.TrackPull;
+
+public class EditTrackPullConfigInputValidation : AbstractValidator, IValidationEnabled
+{
+ public EditTrackPullConfigInputValidation(IStringLocalizer stringLocalizer)
+ {
+ RuleFor(x => x.Options).IsInEnum().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_IsInEnum, nameof(EditTrackPullConfigInput.Options)]);
+
+ RuleFor(x => x.Id).GreaterThan(0).WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_GreaterThan, nameof(EditTrackPullConfigInput.Id), 0]);
+
+ RuleFor(x => x.ParseMethod).GreaterThan(0).WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_GreaterThan, nameof(EditTrackPullConfigInput.ParseMethod), 0]);
+
+ RuleFor(x => x.PullInterval).GreaterThan(0).WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_GreaterThan, nameof(EditTrackPullConfigInput.PullInterval), 0]);
+
+ RuleFor(x => x.SubSystemId).GreaterThan(0).WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_GreaterThan, nameof(EditTrackPullConfigInput.SubSystemId), 0]);
+
+ RuleFor(x => x.ServiceProviderId).GreaterThan(0).WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_GreaterThan, nameof(EditTrackPullConfigInput.ServiceProviderId), 0]);
+
+ RuleFor(x => x.SubSystemId).GreaterThan(0).WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_GreaterThan, nameof(EditTrackPullConfigInput.SubSystemId), 0]);
+
+ RuleFor(x => x.TrackTemplateId).GreaterThan(0).WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_GreaterThan, nameof(EditTrackPullConfigInput.TrackTemplateId), 0]);
+
+ When(x => x.Options != OptionTypeNoNull.新增, () =>
+ {
+ RuleFor(x => x.Id).NotNull().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_NotNull, nameof(EditTrackPullConfigInput.Id)]);
+ });
+
+ When(x => x.Options != OptionTypeNoNull.删除, () =>
+ {
+ RuleFor(x => x.SubSystemId).NotNull().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_NotNull, nameof(EditTrackPullConfigInput.SubSystemId)]);
+
+ RuleFor(x => x.ServiceProviderId).NotNull().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_NotNull, nameof(EditTrackPullConfigInput.ServiceProviderId)]);
+
+ RuleFor(x => x.TrackTemplateId).NotNull().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_NotNull, nameof(EditTrackPullConfigInput.TrackTemplateId)]);
+
+ RuleFor(x => x.PullInterval).NotNull().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_NotNull, nameof(EditTrackPullConfigInput.PullInterval)]);
+
+ RuleFor(x => x.ParseMethod).NotNull().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_NotNull, nameof(EditTrackPullConfigInput.ParseMethod)]);
+
+ RuleFor(x => x.OrderNoName).NotEmpty().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_NotEmpty, nameof(EditTrackPullConfigInput.OrderNoName)]);
+
+ When(x => x.ParseMethod == 1, () =>
+ {
+ RuleFor(x => x.TackTimeZoneName).NotEmpty().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_NotEmpty, nameof(EditTrackPullConfigInput.TackTimeZoneName)]);
+
+ RuleFor(x => x.TrackContentCodeName).NotEmpty().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_NotEmpty, nameof(EditTrackPullConfigInput.TrackContentCodeName)]);
+
+ RuleFor(x => x.TrackContentName).NotEmpty().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_NotEmpty, nameof(EditTrackPullConfigInput.TrackContentName)]);
+
+ RuleFor(x => x.TrackPlaceName).NotEmpty().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_NotEmpty, nameof(EditTrackPullConfigInput.TrackPlaceName)]);
+
+ RuleFor(x => x.TrackStatusName).NotEmpty().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_NotEmpty, nameof(EditTrackPullConfigInput.TrackStatusName)]);
+
+ RuleFor(x => x.TrackTimeName).NotEmpty().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_NotEmpty, nameof(EditTrackPullConfigInput.TrackTimeName)]);
+ });
+ });
+ }
+}
\ No newline at end of file
diff --git a/src/SJZY.Track.Application/Validations/TrackTemplates/EditTrackTemplateContentInputValidation.cs b/src/SJZY.Track.Application/Validations/TrackTemplates/EditTrackTemplateContentInputValidation.cs
new file mode 100644
index 00000000..c23984d4
--- /dev/null
+++ b/src/SJZY.Track.Application/Validations/TrackTemplates/EditTrackTemplateContentInputValidation.cs
@@ -0,0 +1,37 @@
+using FluentValidation;
+using Microsoft.Extensions.Localization;
+using SJZY.Expand.ABP.Core.Localization;
+using SJZY.Track.Application.Contract.Dtos.TrackTemplates;
+using SJZY.Track.Application.Localization;
+
+namespace SJZY.Track.Application.Validations.TrackTemplates;
+
+public class EditTrackTemplateContentInputValidation : AbstractValidator, IValidationEnabled
+{
+ public EditTrackTemplateContentInputValidation(IStringLocalizer stringLocalizer)
+ {
+ RuleFor(x => x.Options).IsInEnum().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_IsInEnum, nameof(EditTrackTemplateContentInput.Options)]);
+
+ RuleFor(x => x.Id).GreaterThan(0).WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_GreaterThan, nameof(EditTrackTemplateContentInput.Id), 0]);
+
+ RuleFor(x => x.TrackContentId).GreaterThan(0).WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_GreaterThan, nameof(EditTrackTemplateContentInput.TrackContentId), 0]);
+
+ RuleFor(x => x.TrackTemplateId).GreaterThan(0).WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_GreaterThan, nameof(EditTrackTemplateContentInput.TrackTemplateId), 0]);
+
+ When(x => x.Options != OptionTypeNoNull.新增, () =>
+ {
+ RuleFor(x => x.Id).NotNull().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_NotNull, nameof(EditTrackTemplateContentInput.Id)]);
+ });
+
+ When(x => x.Options != OptionTypeNoNull.删除, () =>
+ {
+ RuleFor(x => x.IsCanDelete).NotNull().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_NotNull, nameof(EditTrackTemplateContentInput.IsCanDelete)]);
+
+ RuleFor(x => x.IsExternal).NotNull().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_NotNull, nameof(EditTrackTemplateContentInput.IsExternal)]);
+
+ RuleFor(x => x.TrackContentId).NotNull().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_NotNull, nameof(EditTrackTemplateContentInput.TrackContentId)]);
+
+ RuleFor(x => x.TrackTemplateId).NotNull().WithMessage(stringLocalizer[SjzyBasicLocalization.Validation_NotNull, nameof(EditTrackTemplateContentInput.TrackTemplateId)]);
+ });
+ }
+}
\ No newline at end of file
From a2e558007066daaa445032d600700096d5c90f0c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9F=B3=E6=96=87=E7=BF=94?= <878130837@qq.com>
Date: Sat, 2 Mar 2024 14:46:16 +0800
Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8F=90=E7=A4=BA?=
=?UTF-8?q?=E8=AF=AD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Services/TrackContents/TrackContentService.cs | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs b/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs
index 97c1c0fc..67097d55 100644
--- a/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs
+++ b/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs
@@ -203,14 +203,14 @@ namespace SJZY.Track.Application.Services.TrackContents
{
if (input.Options != OptionTypeNoNull.删除)
{
- if (input.TrackContentId == input.MapTrackContentId) throw new BusinessException(message: _stringLocalizer["IsTrackContentMapAny"]);
+ if (input.SubSystemId == input.MapSubSystemId) throw new BusinessException(message: _stringLocalizer["NotAllowedToMapSubSystem"]);
Expression> isMapAnyExp = x =>
x.TrackContentId == input.TrackContentId && x.MapTrackContentId == input.MapTrackContentId;
if (input.Options == OptionTypeNoNull.修改) isMapAnyExp.And(x => x.Id != input.Id);
if (await _trackContentRepository.IsMapAnyAsync(isMapAnyExp))
- throw new BusinessException(message: _stringLocalizer["NotAllowedToMapOneself"]);
+ throw new BusinessException(message: _stringLocalizer["IsTrackContentMapAny"]);
}
switch (input.Options)