Browse Source

feat:调整多语言设置

pull/126/head
wangjun 3 years ago
parent
commit
afe895b223
  1. 2
      aspnet-core/frameworks/src/Lion.AbpPro.Core/Lion/AbpPro/Core/CustomListResultDto.cs
  2. 1
      aspnet-core/frameworks/src/Lion.AbpPro.Core/Lion/AbpPro/Core/CustomPagedResultDto.cs
  3. 8
      aspnet-core/frameworks/src/Lion.AbpPro.Core/Lion/AbpPro/Core/Guard.cs
  4. 23
      aspnet-core/frameworks/src/Lion.AbpPro.Core/Lion/AbpPro/Core/PagingBase.cs
  5. 8
      aspnet-core/frameworks/src/Lion.AbpPro.Localization/Lion/AbpPro/AbpProLocalizationErrorCodes.cs
  6. 5
      aspnet-core/frameworks/src/Lion.AbpPro.Localization/Lion/AbpPro/Localization/Resources/en.json
  7. 5
      aspnet-core/frameworks/src/Lion.AbpPro.Localization/Lion/AbpPro/Localization/Resources/zh-Hans.json
  8. 10
      aspnet-core/frameworks/test/Lion.AbpPro.Localization.Tests/Lion/AbpPro/AbpProLocalizationTests.cs
  9. 3
      aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/GlobalUsings.cs
  10. 15
      aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/CreateOrganizationUnitInput.cs
  11. 15
      aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/UpdateOrganizationUnitInput.cs
  12. 24
      aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/Dtos/GetPermissionInput.cs
  13. 24
      aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/Dtos/UpdateRolePermissionsInput.cs
  14. 16
      aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Tenants/Dtos/UpdateDefaultConnectionStringInput.cs
  15. 16
      aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Tenants/Dtos/UpdateTenantInput.cs
  16. 4
      aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LockUserInput.cs
  17. 99
      aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LoginGithubResponse.cs
  18. 13
      aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LoginInput.cs
  19. 21
      aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LoginStsResponse.cs
  20. 27
      aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application.Contracts/DataDictionaries/Dtos/CreateDataDictinaryDetailInput.cs
  21. 24
      aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application.Contracts/DataDictionaries/Dtos/CreateDataDictinaryInput.cs
  22. 6
      aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application.Contracts/DataDictionaries/Dtos/SetDataDictinaryDetailInput.cs
  23. 29
      aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application.Contracts/DataDictionaries/Dtos/UpdateDataDictinaryInput.cs
  24. 24
      aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application.Contracts/DataDictionaries/Dtos/UpdateDetailInput.cs
  25. 3
      aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application.Contracts/GlobalUsings.cs
  26. 4
      aspnet-core/modules/LanguageManagement/src/Lion.AbpPro.LanguageManagement.Application.Contracts/GlobalUsings.cs
  27. 79
      aspnet-core/modules/LanguageManagement/src/Lion.AbpPro.LanguageManagement.Application.Contracts/LanguageTexts/CreateLanguageTextInput.cs
  28. 2
      aspnet-core/modules/LanguageManagement/src/Lion.AbpPro.LanguageManagement.Application.Contracts/LanguageTexts/UpdateLanguageTextInput.cs
  29. 80
      aspnet-core/modules/LanguageManagement/src/Lion.AbpPro.LanguageManagement.Application.Contracts/Languages/CreateLanguageInput.cs
  30. 90
      aspnet-core/modules/LanguageManagement/src/Lion.AbpPro.LanguageManagement.Application.Contracts/Languages/UpdateLanguageInput.cs
  31. 15
      aspnet-core/services/src/Lion.AbpPro.Domain.Shared/Localization/AbpPro/en.json
  32. 14
      aspnet-core/services/src/Lion.AbpPro.Domain.Shared/Localization/AbpPro/zh-Hans.json

2
aspnet-core/frameworks/src/Lion.AbpPro.Core/Lion/AbpPro/Core/CustomListResultDto.cs

@ -1,6 +1,6 @@
namespace Lion.AbpPro.Core; namespace Lion.AbpPro.Core;
[Serializable]
public class CustomListResultDto<T> public class CustomListResultDto<T>
{ {
public IReadOnlyList<T> Items public IReadOnlyList<T> Items

1
aspnet-core/frameworks/src/Lion.AbpPro.Core/Lion/AbpPro/Core/CustomPagedResultDto.cs

@ -1,6 +1,5 @@
namespace Lion.AbpPro.Core; namespace Lion.AbpPro.Core;
[Serializable]
public class CustomPagedResultDto<T> : CustomListResultDto<T> public class CustomPagedResultDto<T> : CustomListResultDto<T>
{ {
public long TotalCount { get; set; } public long TotalCount { get; set; }

8
aspnet-core/frameworks/src/Lion.AbpPro.Core/Lion/AbpPro/Core/Guard.cs

@ -112,9 +112,7 @@ public static class Guard
/// </summary> /// </summary>
/// <param name="value"></param> /// <param name="value"></param>
/// <param name="valueName">参数名称。</param> /// <param name="valueName">参数名称。</param>
public static Guid NotEmpty( public static Guid NotEmpty(Guid value, string valueName)
Guid value,
string valueName)
{ {
if (value == Guid.Empty) if (value == Guid.Empty)
{ {
@ -130,9 +128,7 @@ public static class Guard
/// <typeparam name="T">集合项的类型。</typeparam> /// <typeparam name="T">集合项的类型。</typeparam>
/// <param name="list"></param> /// <param name="list"></param>
/// <param name="valueName">参数名称。</param> /// <param name="valueName">参数名称。</param>
public static void NotNullOrEmpty<T>( public static void NotNullOrEmpty<T>(IReadOnlyList<T> list, string valueName)
IReadOnlyList<T> list,
string valueName)
{ {
if (null == list || !list.Any()) if (null == list || !list.Any())
{ {

23
aspnet-core/frameworks/src/Lion.AbpPro.Core/Lion/AbpPro/Core/PagingBase.cs

@ -1,3 +1,7 @@
using Lion.AbpPro.Localization;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Localization;
namespace Lion.AbpPro.Core; namespace Lion.AbpPro.Core;
/// <summary> /// <summary>
@ -6,7 +10,7 @@ namespace Lion.AbpPro.Core;
public class PagingBase : IValidatableObject public class PagingBase : IValidatableObject
{ {
public const int MaxPageSize = 100000; public const int MaxPageSize = 100000;
/// <summary> /// <summary>
/// 当前页面.默认从1开始 /// 当前页面.默认从1开始
/// </summary> /// </summary>
@ -16,7 +20,7 @@ public class PagingBase : IValidatableObject
/// 每页多少条.每页显示多少记录 /// 每页多少条.每页显示多少记录
/// </summary> /// </summary>
public int PageSize { get; set; } = 10; public int PageSize { get; set; } = 10;
/// <summary> /// <summary>
/// 跳过多少条 /// 跳过多少条
/// </summary> /// </summary>
@ -25,28 +29,29 @@ public class PagingBase : IValidatableObject
protected PagingBase() protected PagingBase()
{ {
} }
public PagingBase(int pageIndex = 1, int pageSize = 10) public PagingBase(int pageIndex = 1, int pageSize = 10)
{ {
PageIndex = pageIndex; PageIndex = pageIndex;
PageSize = pageSize; PageSize = pageSize;
} }
public virtual IEnumerable<ValidationResult> Validate(ValidationContext validationContext) public virtual IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{ {
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (PageIndex < 1) if (PageIndex < 1)
{ {
yield return new ValidationResult( yield return new ValidationResult(
"起始页必须大于等于1", localization[AbpProLocalizationErrorCodes.ErrorCode100001],
new[] { "PageIndex"} new[] { "PageIndex" }
); );
} }
if (PageSize > MaxPageSize) if (PageSize > MaxPageSize)
{ {
yield return new ValidationResult( yield return new ValidationResult(
$"每页最大记录数不能超过'{MaxPageSize}'", localization[AbpProLocalizationErrorCodes.ErrorCode100002],
new[] { "PageSize"} new[] { "PageSize" }
); );
} }
} }

8
aspnet-core/frameworks/src/Lion.AbpPro.Localization/Lion/AbpPro/AbpProLocalizationErrorCodes.cs

@ -0,0 +1,8 @@
namespace Lion.AbpPro;
public class AbpProLocalizationErrorCodes
{
public const string ErrorCode100001 = AbpProLocalizationConsts.NameSpace + ":100001";
public const string ErrorCode100002 = AbpProLocalizationConsts.NameSpace + ":100002";
public const string ErrorCode100003 = AbpProLocalizationConsts.NameSpace + ":100003";
}

5
aspnet-core/frameworks/src/Lion.AbpPro.Localization/Lion/AbpPro/Localization/Resources/en.json

@ -2,6 +2,9 @@
"culture": "en", "culture": "en",
"texts": { "texts": {
"Welcome": "Welcome", "Welcome": "Welcome",
"Permission:Cap": "CAP Dashboard" "Permission:Cap": "CAP Dashboard",
"Lion.AbpPro:100001": "The start page must be greater than or equal to 1",
"Lion.AbpPro:100002": "The maximum number of records per page cannot exceed 100,000",
"Lion.AbpPro:100003": "{0} can not be empty"
} }
} }

5
aspnet-core/frameworks/src/Lion.AbpPro.Localization/Lion/AbpPro/Localization/Resources/zh-Hans.json

@ -2,6 +2,9 @@
"culture": "zh-Hans", "culture": "zh-Hans",
"texts": { "texts": {
"Welcome": "欢迎", "Welcome": "欢迎",
"Permission:Cap": "CAP面板" "Permission:Cap": "CAP面板",
"Lion.AbpPro:100001": "起始页必须大于等于1",
"Lion.AbpPro:100002": "每页最大记录数不能超过100000",
"Lion.AbpPro:100003": "{0}不能为空"
} }
} }

10
aspnet-core/frameworks/test/Lion.AbpPro.Localization.Tests/Lion/AbpPro/AbpProLocalizationTests.cs

@ -20,14 +20,16 @@ namespace Lion.AbpPro
{ {
using (CultureHelper.Use("en")) using (CultureHelper.Use("en"))
{ {
_stringLocalizer["Welcome"].Value _stringLocalizer["Welcome"].Value.ShouldBe("Welcome");
.ShouldBe("Welcome"); _stringLocalizer[AbpProLocalizationErrorCodes.ErrorCode100001].Value.ShouldBe("The start page must be greater than or equal to 1");
_stringLocalizer[AbpProLocalizationErrorCodes.ErrorCode100003,"Name"].Value.ShouldBe("Name can not be empty");
} }
using (CultureHelper.Use("zh-Hans")) using (CultureHelper.Use("zh-Hans"))
{ {
_stringLocalizer["Welcome"].Value _stringLocalizer["Welcome"].Value.ShouldBe("欢迎");
.ShouldBe("欢迎"); _stringLocalizer[AbpProLocalizationErrorCodes.ErrorCode100001].Value.ShouldBe("起始页必须大于等于1");
_stringLocalizer[AbpProLocalizationErrorCodes.ErrorCode100003,"Name"].Value.ShouldBe("Name不能为空");
} }
} }
} }

3
aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/GlobalUsings.cs

@ -4,6 +4,9 @@ global using System.ComponentModel.DataAnnotations;
global using Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; global using Lion.AbpPro.BasicManagement.OrganizationUnits.Dto;
global using Lion.AbpPro.BasicManagement.Tenants.Dtos; global using Lion.AbpPro.BasicManagement.Tenants.Dtos;
global using Lion.AbpPro.Core; global using Lion.AbpPro.Core;
global using Lion.AbpPro.Localization;
global using Microsoft.Extensions.DependencyInjection;
global using Microsoft.Extensions.Localization;
global using Volo.Abp.Application.Dtos; global using Volo.Abp.Application.Dtos;
global using Volo.Abp.Application.Services; global using Volo.Abp.Application.Services;
global using Volo.Abp.AspNetCore.Mvc.MultiTenancy; global using Volo.Abp.AspNetCore.Mvc.MultiTenancy;

15
aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/CreateOrganizationUnitInput.cs

@ -1,9 +1,20 @@
namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto;
public class CreateOrganizationUnitInput public class CreateOrganizationUnitInput : IValidatableObject
{ {
[Required]
public string DisplayName { get; set; } public string DisplayName { get; set; }
public Guid? ParentId { get; set; } public Guid? ParentId { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (DisplayName.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(DisplayName)],
new[] { nameof(DisplayName) }
);
}
}
} }

15
aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/UpdateOrganizationUnitInput.cs

@ -1,9 +1,20 @@
namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto;
public class UpdateOrganizationUnitInput public class UpdateOrganizationUnitInput : IValidatableObject
{ {
[Required]
public string DisplayName { get; set; } public string DisplayName { get; set; }
public Guid Id { get; set; } public Guid Id { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (DisplayName.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(DisplayName)],
new[] { nameof(DisplayName) }
);
}
}
} }

24
aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/Dtos/GetPermissionInput.cs

@ -1,10 +1,28 @@
namespace Lion.AbpPro.BasicManagement.Roles.Dtos namespace Lion.AbpPro.BasicManagement.Roles.Dtos
{ {
public class GetPermissionInput public class GetPermissionInput : IValidatableObject
{ {
[Required]
public string ProviderName { get; set; } public string ProviderName { get; set; }
[Required]
public string ProviderKey { get; set; } public string ProviderKey { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (ProviderName.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(ProviderName)],
new[] { nameof(ProviderName) }
);
}
if (ProviderKey.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(ProviderKey)],
new[] { nameof(ProviderKey) }
);
}
}
} }
} }

24
aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/Dtos/UpdateRolePermissionsInput.cs

@ -1,13 +1,31 @@
namespace Lion.AbpPro.BasicManagement.Roles.Dtos namespace Lion.AbpPro.BasicManagement.Roles.Dtos
{ {
public class UpdateRolePermissionsInput public class UpdateRolePermissionsInput : IValidatableObject
{ {
[Required]
public string ProviderName { get; set; } public string ProviderName { get; set; }
[Required]
public string ProviderKey { get; set; } public string ProviderKey { get; set; }
public UpdatePermissionsDto UpdatePermissionsDto { get; set; } public UpdatePermissionsDto UpdatePermissionsDto { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (ProviderName.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(ProviderName)],
new[] { nameof(ProviderName) }
);
}
if (ProviderKey.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(ProviderKey)],
new[] { nameof(ProviderKey) }
);
}
}
} }
} }

16
aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Tenants/Dtos/UpdateDefaultConnectionStringInput.cs

@ -1,8 +1,20 @@
namespace Lion.AbpPro.BasicManagement.Tenants.Dtos namespace Lion.AbpPro.BasicManagement.Tenants.Dtos
{ {
public class UpdateConnectionStringInput public class UpdateConnectionStringInput : IValidatableObject
{ {
public Guid Id { get; set; } public Guid Id { get; set; }
[Required(ErrorMessage = "连接字符串不能为空")] public string ConnectionString { get; set; } public string ConnectionString { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (ConnectionString.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(ConnectionString)],
new[] { nameof(ConnectionString) }
);
}
}
} }
} }

16
aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Tenants/Dtos/UpdateTenantInput.cs

@ -1,9 +1,21 @@
namespace Lion.AbpPro.BasicManagement.Tenants.Dtos namespace Lion.AbpPro.BasicManagement.Tenants.Dtos
{ {
public class UpdateTenantInput public class UpdateTenantInput : IValidatableObject
{ {
public Guid Id { get; set; } public Guid Id { get; set; }
[Required(ErrorMessage = "租户名称不能为空")] public string Name { get; set; } public string Name { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (Name.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(Name)],
new[] { nameof(Name) }
);
}
}
} }
} }

4
aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LockUserInput.cs

@ -2,10 +2,8 @@ namespace Lion.AbpPro.BasicManagement.Users.Dtos
{ {
public class LockUserInput public class LockUserInput
{ {
[Required]
public Guid UserId { get; set; } public Guid UserId { get; set; }
[Required]
public bool Locked { get; set; } public bool Locked { get; set; }
} }
} }

99
aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LoginGithubResponse.cs

@ -1,99 +0,0 @@
namespace Lion.AbpPro.BasicManagement.Users.Dtos;
public class LoginGithubResponse
{
public string login { get; set; }
public int id { get; set; }
public string node_id { get; set; }
public string avatar_url { get; set; }
public string gravatar_id { get; set; }
public string url { get; set; }
public string html_url { get; set; }
public string followers_url { get; set; }
public string following_url { get; set; }
public string gists_url { get; set; }
public string starred_url { get; set; }
public string subscriptions_url { get; set; }
public string organizations_url { get; set; }
public string repos_url { get; set; }
public string events_url { get; set; }
public string received_events_url { get; set; }
public string type { get; set; }
public string site_admin { get; set; }
public string name { get; set; }
public string company { get; set; }
public string blog { get; set; }
public string location { get; set; }
public string email { get; set; }
public string hireable { get; set; }
public string bio { get; set; }
public string twitter_username { get; set; }
public int public_repos { get; set; }
public int public_gists { get; set; }
public int followers { get; set; }
public int following { get; set; }
public string created_at { get; set; }
public string updated_at { get; set; }
}

13
aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LoginInput.cs

@ -21,15 +21,22 @@ namespace Lion.AbpPro.BasicManagement.Users.Dtos
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{ {
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (Name.IsNullOrWhiteSpace()) if (Name.IsNullOrWhiteSpace())
{ {
yield return new ValidationResult("Email can not be null", new[] { "Email" }); yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(Name)],
new[] { "Name" }
);
} }
if (Password.IsNullOrWhiteSpace()) if (Password.IsNullOrWhiteSpace())
{ {
yield return new ValidationResult("Password can not be null", new[] { "Password" }); yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(Password)],
new[] { "Password" }
);
} }
} }
} }
} }

21
aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LoginStsResponse.cs

@ -1,21 +0,0 @@
namespace Lion.AbpPro.BasicManagement.Users.Dtos
{
public class LoginStsResponse
{
public string name { get; set; }
public string preferred_username { get; set; }
public string family_name { get; set; }
public string email { get; set; }
public string given_name { get; set; }
public string avatar { get; set; }
public string sub { get; set; }
public Guid? tenantId { get; set; }
}
}

27
aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application.Contracts/DataDictionaries/Dtos/CreateDataDictinaryDetailInput.cs

@ -1,14 +1,33 @@
namespace Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Dtos namespace Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Dtos
{ {
public class CreateDataDictinaryDetailInput public class CreateDataDictinaryDetailInput : IValidatableObject
{ {
[Required]
public Guid Id { get; set; } public Guid Id { get; set; }
[Required]
public string Code { get; set; } public string Code { get; set; }
[Required]
public string DisplayText { get; set; } public string DisplayText { get; set; }
public string Description { get; set; } public string Description { get; set; }
public int Order { get; set; } public int Order { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (Code.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(Code)],
new[] { nameof(Code) }
);
}
if (DisplayText.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(DisplayText)],
new[] { nameof(DisplayText) }
);
}
}
} }
} }

24
aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application.Contracts/DataDictionaries/Dtos/CreateDataDictinaryInput.cs

@ -1,11 +1,29 @@
namespace Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Dtos namespace Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Dtos
{ {
public class CreateDataDictinaryInput public class CreateDataDictinaryInput : IValidatableObject
{ {
[Required]
public string Code { get; set; } public string Code { get; set; }
[Required]
public string DisplayText { get; set; } public string DisplayText { get; set; }
public string Description { get; set; } public string Description { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (Code.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(Code)],
new[] { nameof(Code) }
);
}
if (DisplayText.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(DisplayText)],
new[] { nameof(DisplayText) }
);
}
}
} }
} }

6
aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application.Contracts/DataDictionaries/Dtos/SetDataDictinaryDetailInput.cs

@ -2,13 +2,11 @@ namespace Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Dtos
{ {
public class SetDataDictinaryDetailInput public class SetDataDictinaryDetailInput
{ {
[Required]
public Guid DataDictionaryId { get; set; } public Guid DataDictionaryId { get; set; }
[Required]
public Guid DataDictionayDetailId { get; set; } public Guid DataDictionayDetailId { get; set; }
[Required] [Required] public bool IsEnabled { get; set; }
public bool IsEnabled { get; set; }
} }
} }

29
aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application.Contracts/DataDictionaries/Dtos/UpdateDataDictinaryInput.cs

@ -1,13 +1,32 @@
namespace Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Dtos namespace Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Dtos
{ {
public class UpdateDataDictinaryInput public class UpdateDataDictinaryInput : IValidatableObject
{ {
[Required]
public Guid Id { get; set; } public Guid Id { get; set; }
[Required]
public string Code { get; set; } public string Code { get; set; }
[Required]
public string DisplayText { get; set; } public string DisplayText { get; set; }
public string Description { get; set; } public string Description { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (Code.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(Code)],
new[] { nameof(Code) }
);
}
if (DisplayText.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(DisplayText)],
new[] { nameof(DisplayText) }
);
}
}
} }
} }

24
aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application.Contracts/DataDictionaries/Dtos/UpdateDetailInput.cs

@ -1,16 +1,28 @@
namespace Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Dtos namespace Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Dtos
{ {
public class UpdateDetailInput public class UpdateDetailInput : IValidatableObject
{ {
[Required] public Guid DataDictionaryId { get; set; } public Guid DataDictionaryId { get; set; }
[Required] public Guid Id { get; set; } public Guid Id { get; set; }
[Required] public string DisplayText { get; set; } public string DisplayText { get; set; }
public string Description { get; set; } public string Description { get; set; }
public int Order { get; set; } public int Order { get; set; }
}
}
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (DisplayText.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(DisplayText)],
new[] { nameof(DisplayText) }
);
}
}
}
}

3
aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application.Contracts/GlobalUsings.cs

@ -10,6 +10,9 @@ global using System.Threading.Tasks;
global using Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Dtos; global using Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Dtos;
global using Lion.AbpPro.DataDictionaryManagement.Localization; global using Lion.AbpPro.DataDictionaryManagement.Localization;
global using Lion.AbpPro.Core; global using Lion.AbpPro.Core;
global using Lion.AbpPro.Localization;
global using Microsoft.Extensions.DependencyInjection;
global using Microsoft.Extensions.Localization;
global using Volo.Abp.Application; global using Volo.Abp.Application;
global using Volo.Abp.Application.Dtos; global using Volo.Abp.Application.Dtos;
global using Volo.Abp.Application.Services; global using Volo.Abp.Application.Services;

4
aspnet-core/modules/LanguageManagement/src/Lion.AbpPro.LanguageManagement.Application.Contracts/GlobalUsings.cs

@ -2,12 +2,16 @@
global using System; global using System;
global using System.Collections.Generic; global using System.Collections.Generic;
global using System.ComponentModel.DataAnnotations;
global using System.Linq; global using System.Linq;
global using System.Text; global using System.Text;
global using System.Threading; global using System.Threading;
global using System.Threading.Tasks; global using System.Threading.Tasks;
global using Lion.AbpPro.Core; global using Lion.AbpPro.Core;
global using Lion.AbpPro.LanguageManagement.Localization; global using Lion.AbpPro.LanguageManagement.Localization;
global using Lion.AbpPro.Localization;
global using Microsoft.Extensions.DependencyInjection;
global using Microsoft.Extensions.Localization;
global using Volo.Abp.Application; global using Volo.Abp.Application;
global using Volo.Abp.Application.Dtos; global using Volo.Abp.Application.Dtos;
global using Volo.Abp.Application.Services; global using Volo.Abp.Application.Services;

79
aspnet-core/modules/LanguageManagement/src/Lion.AbpPro.LanguageManagement.Application.Contracts/LanguageTexts/CreateLanguageTextInput.cs

@ -1,30 +1,63 @@
using System.ComponentModel.DataAnnotations;
namespace Lion.AbpPro.LanguageManagement.LanguageTexts; namespace Lion.AbpPro.LanguageManagement.LanguageTexts;
/// <summary> /// <summary>
/// 创建语言文本 /// 创建语言文本
/// </summary> /// </summary>
public class CreateLanguageTextInput public class CreateLanguageTextInput : IValidatableObject
{ {
/// <summary> /// <summary>
/// 资源名称 /// 资源名称
/// </summary> /// </summary>
[Required(ErrorMessage = "资源名称不能为空")] public string ResourceName { get; set; }
public string ResourceName { get; set; }
/// <summary> /// <summary>
/// 语言名称 /// 语言名称
/// </summary> /// </summary>
[Required(ErrorMessage = "语言名称不能为空")] public string CultureName { get; set; }
public string CultureName { get; set; }
/// <summary> /// <summary>
/// 名称 /// 名称
/// </summary> /// </summary>
[Required(ErrorMessage = "名称不能为空")] public string Name { get; set; }
public string Name { get; set; }
/// <summary> /// <summary>
/// 值 /// 值
/// </summary> /// </summary>
[Required(ErrorMessage = "值不能为空")] public string Value { get; set; }
public string Value { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (CultureName.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(CultureName)],
new[] { nameof(CultureName) }
);
}
if (ResourceName.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(ResourceName)],
new[] { nameof(ResourceName) }
);
}
if (Name.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(Name)],
new[] { nameof(Name) }
);
}
if (Value.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(Value)],
new[] { nameof(Value) }
);
}
}
} }

2
aspnet-core/modules/LanguageManagement/src/Lion.AbpPro.LanguageManagement.Application.Contracts/LanguageTexts/UpdateLanguageTextInput.cs

@ -1,5 +1,3 @@
using System.ComponentModel.DataAnnotations;
namespace Lion.AbpPro.LanguageManagement.LanguageTexts; namespace Lion.AbpPro.LanguageManagement.LanguageTexts;
/// <summary> /// <summary>

80
aspnet-core/modules/LanguageManagement/src/Lion.AbpPro.LanguageManagement.Application.Contracts/Languages/CreateLanguageInput.cs

@ -1,34 +1,60 @@
using System.ComponentModel.DataAnnotations;
namespace Lion.AbpPro.LanguageManagement.Languages; namespace Lion.AbpPro.LanguageManagement.Languages;
/// <summary> /// <summary>
/// 创建语言 /// 创建语言
/// </summary> /// </summary>
public class CreateLanguageInput public class CreateLanguageInput : IValidatableObject
{ {
/// <summary> /// <summary>
/// 语言名称 /// 语言名称
/// </summary> /// </summary>
[Required(ErrorMessage = "语言名称不能为空")] public string CultureName { get; set; }
public string CultureName { get; set; }
/// <summary> /// <summary>
/// Ui语言名称 /// Ui语言名称
/// </summary> /// </summary>
[Required(ErrorMessage = "Ui语言名称不能为空")] public string UiCultureName { get; set; }
public string UiCultureName { get; set; }
/// <summary> /// <summary>
/// 显示名称 /// 显示名称
/// </summary> /// </summary>
[Required(ErrorMessage = "显示名称不能为空")] public string DisplayName { get; set; }
public string DisplayName { get; set; }
/// <summary> /// <summary>
/// 图标 /// 图标
/// </summary> /// </summary>
public string FlagIcon { get; set; } public string FlagIcon { get; set; }
/// <summary>
/// 是否启用 /// <summary>
/// </summary> /// 是否启用
[Required(ErrorMessage = "是否启用不能为空")] /// </summary>
public bool IsEnabled { get; set; } public bool IsEnabled { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (CultureName.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(CultureName)],
new[] { nameof(CultureName) }
);
}
if (UiCultureName.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(UiCultureName)],
new[] { nameof(UiCultureName) }
);
}
if (DisplayName.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(DisplayName)],
new[] { nameof(DisplayName) }
);
}
}
} }

90
aspnet-core/modules/LanguageManagement/src/Lion.AbpPro.LanguageManagement.Application.Contracts/Languages/UpdateLanguageInput.cs

@ -1,39 +1,65 @@
using System.ComponentModel.DataAnnotations;
namespace Lion.AbpPro.LanguageManagement.Languages; namespace Lion.AbpPro.LanguageManagement.Languages;
/// <summary> /// <summary>
/// 删除语言 /// 删除语言
/// </summary> /// </summary>
public class UpdateLanguageInput public class UpdateLanguageInput : IValidatableObject
{ {
/// <summary> /// <summary>
/// 语言Id /// 语言Id
/// </summary> /// </summary>
public Guid Id { get; set; } public Guid Id { get; set; }
/// <summary> /// <summary>
/// 语言名称 /// 语言名称
/// </summary> /// </summary>
[Required(ErrorMessage = "语言名称不能为空")] public string CultureName { get; set; }
public string CultureName { get; set; }
/// <summary> /// <summary>
/// Ui语言名称 /// Ui语言名称
/// </summary> /// </summary>
[Required(ErrorMessage = "Ui语言名称不能为空")] public string UiCultureName { get; set; }
public string UiCultureName { get; set; }
/// <summary> /// <summary>
/// 显示名称 /// 显示名称
/// </summary> /// </summary>
[Required(ErrorMessage = "显示名称不能为空")] public string DisplayName { get; set; }
public string DisplayName { get; set; }
/// <summary> /// <summary>
/// 图标 /// 图标
/// </summary> /// </summary>
public string FlagIcon { get; set; } public string FlagIcon { get; set; }
/// <summary>
/// 是否启用 /// <summary>
/// </summary> /// 是否启用
[Required(ErrorMessage = "是否启用不能为空")] /// </summary>
public bool IsEnabled { get; set; } public bool IsEnabled { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (CultureName.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(CultureName)],
new[] { nameof(CultureName) }
);
}
if (UiCultureName.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(UiCultureName)],
new[] { nameof(UiCultureName) }
);
}
if (DisplayName.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(DisplayName)],
new[] { nameof(DisplayName) }
);
}
}
} }

15
aspnet-core/services/src/Lion.AbpPro.Domain.Shared/Localization/AbpPro/en.json

@ -24,19 +24,6 @@
"Description:Setting.Group.Other.Github": "Github", "Description:Setting.Group.Other.Github": "Github",
"Enum:TestType:Created:1":"Created", "Enum:TestType:Created:1":"Created",
"Enum:TestType:Cancel:1":"Cancel", "Enum:TestType:Cancel:1":"Cancel",
"Enum:TestType:Delete:1":"Delete", "Enum:TestType:Delete:1":"Delete"
"Lion.AbpPro:100001": "OrganizationUnit Not Exist",
"Lion.AbpPro:100002": "UserLockedOut",
"Lion.AbpPro:100003": "UserOrPasswordMismatch",
"Lion.AbpPro:100004": "ApiResource Not Exist",
"Lion.AbpPro:100005": "ApiResource Exist",
"Lion.AbpPro:100006": "ApiScope Not Exist",
"Lion.AbpPro:100007": "ApiScope Exist",
"Lion.AbpPro:100008": "ApiClient Not Exist",
"Lion.AbpPro:100009": "ApiClient Exist",
"Lion.AbpPro:100010": "IdentityResource Not Exist",
"Lion.AbpPro:100011": "IdentityResource Exist"
} }
} }

14
aspnet-core/services/src/Lion.AbpPro.Domain.Shared/Localization/AbpPro/zh-Hans.json

@ -25,18 +25,6 @@
"Description:Setting.Group.Other.Github": "Github", "Description:Setting.Group.Other.Github": "Github",
"Enum:TestType:Created:1":"创建", "Enum:TestType:Created:1":"创建",
"Enum:TestType:Cancel:1":"取消", "Enum:TestType:Cancel:1":"取消",
"Enum:TestType:Delete:1":"删除", "Enum:TestType:Delete:1":"删除"
"Lion.AbpPro:100001": "组织机构不存在",
"Lion.AbpPro:100002": "用户被锁定",
"Lion.AbpPro:100003": "用户名或者密码错误",
"Lion.AbpPro:100004": "ApiResource不存在",
"Lion.AbpPro:100005": "ApiResource 已存在",
"Lion.AbpPro:100006": "ApiScope 不存在",
"Lion.AbpPro:100007": "ApiScope 已存在",
"Lion.AbpPro:100008": "ApiClient 不存在",
"Lion.AbpPro:100009": "ApiClient 已存在",
"Lion.AbpPro:100010": "IdentityResource 不存在",
"Lion.AbpPro:100011": "IdentityResource 已存在"
} }
} }
Loading…
Cancel
Save