Browse Source

feat: 增加企业关联管理接口

pull/1125/head
colin 1 year ago
parent
commit
38db2fba29
  1. 3
      aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Localization/ApplicationContracts/en.json
  2. 3
      aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Localization/ApplicationContracts/zh-Hans.json
  3. 6
      aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Permissions/PlatformPermissionDefinitionProvider.cs
  4. 29
      aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Permissions/PlatformPermissions.cs
  5. 14
      aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/Dto/EnterpriseCreateDto.cs
  6. 55
      aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/Dto/EnterpriseCreateOrUpdateDto.cs
  7. 21
      aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/Dto/EnterpriseDto.cs
  8. 17
      aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/Dto/EnterpriseGetListInput.cs
  9. 8
      aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/Dto/EnterpriseUpdateDto.cs
  10. 14
      aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/IEnterpriseAppService.cs
  11. 18
      aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/PlatformApplicationCurdAppServiceBase.cs
  12. 3
      aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/PlatformApplicationMappingProfile.cs
  13. 2
      aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/PlatformApplicationModule.cs
  14. 6
      aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/PlatformApplicationServiceBase.cs
  15. 147
      aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/Portal/EnterpriseAppService.cs
  16. 1
      aspnet-core/modules/platform/LINGYUN.Platform.Domain.Shared/LINGYUN/Platform/Localization/Resources/en.json
  17. 1
      aspnet-core/modules/platform/LINGYUN.Platform.Domain.Shared/LINGYUN/Platform/Localization/Resources/zh-Hans.json
  18. 4
      aspnet-core/modules/platform/LINGYUN.Platform.Domain.Shared/LINGYUN/Platform/PlatformErrorCodes.cs
  19. 4
      aspnet-core/modules/platform/LINGYUN.Platform.Domain/LINGYUN/Platform/Portal/Enterprise.cs
  20. 6
      aspnet-core/modules/platform/LINGYUN.Platform.Domain/LINGYUN/Platform/Portal/IEnterpriseRepository.cs
  21. 9
      aspnet-core/modules/platform/LINGYUN.Platform.EntityFrameworkCore/LINGYUN/Platform/Portal/EfCoreEnterpriseRepository.cs
  22. 59
      aspnet-core/modules/platform/LINGYUN.Platform.HttpApi/LINGYUN/Platform/Portal/EnterpriseController.cs

3
aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Localization/ApplicationContracts/en.json

@ -36,6 +36,7 @@
"Permission:ManageComments": "Manage Comments",
"Permission:SmsMessage": "Sms Message",
"Permission:EmailMessage": "Email Message",
"Permission:SendMessage": "Send Message"
"Permission:SendMessage": "Send Message",
"Permission:Enterprise": "Enterprise"
}
}

3
aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Localization/ApplicationContracts/zh-Hans.json

@ -36,6 +36,7 @@
"Permission:ManageComments": "评论管理",
"Permission:SmsMessage": "短信消息",
"Permission:EmailMessage": "邮件消息",
"Permission:SendMessage": "发送消息"
"Permission:SendMessage": "发送消息",
"Permission:Enterprise": "企业关联"
}
}

6
aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Permissions/PlatformPermissionDefinitionProvider.cs

@ -1,6 +1,7 @@
using LINGYUN.Platform.Localization;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Localization;
using Volo.Abp.MultiTenancy;
namespace LINGYUN.Platform.Permissions;
@ -43,6 +44,11 @@ public class PlatformPermissionDefinitionProvider : PermissionDefinitionProvider
feedback.AddChild(PlatformPermissions.Feedback.ManageAttachments, L("Permission:ManageAttachments"));
feedback.AddChild(PlatformPermissions.Feedback.ManageComments, L("Permission:ManageComments"));
var enterprise = platform.AddPermission(PlatformPermissions.Enterprise.Default, L("Permission:Enterprise"));
enterprise.AddChild(PlatformPermissions.Enterprise.Create, L("Permission:Create"), MultiTenancySides.Host);
enterprise.AddChild(PlatformPermissions.Enterprise.Update, L("Permission:Update"), MultiTenancySides.Host);
enterprise.AddChild(PlatformPermissions.Enterprise.Delete, L("Permission:Delete"), MultiTenancySides.Host);
var emailMessage = platform.AddPermission(PlatformPermissions.EmailMessage.Default, L("Permission:EmailMessage"));
emailMessage.AddChild(PlatformPermissions.EmailMessage.SendMessage, L("Permission:SendMessage"));
emailMessage.AddChild(PlatformPermissions.EmailMessage.Delete, L("Permission:Delete"));

29
aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Permissions/PlatformPermissions.cs

@ -6,7 +6,7 @@ public static class PlatformPermissions
{
public const string GroupName = "Platform";
public class DataDictionary
public static class DataDictionary
{
public const string Default = GroupName + ".DataDictionary";
@ -21,7 +21,7 @@ public static class PlatformPermissions
public const string ManageItems = Default + ".ManageItems";
}
public class Layout
public static class Layout
{
public const string Default = GroupName + ".Layout";
@ -32,7 +32,7 @@ public static class PlatformPermissions
public const string Delete = Default + ".Delete";
}
public class Menu
public static class Menu
{
public const string Default = GroupName + ".Menu";
@ -53,7 +53,7 @@ public static class PlatformPermissions
/// <summary>
/// 文件系统
/// </summary>
public class FileSystem
public static class FileSystem
{
public const string Default = GroupName + ".FileSystem";
@ -67,7 +67,7 @@ public static class PlatformPermissions
public const string Move = Default + ".Move";
public class FileManager
public static class FileManager
{
public const string Default = FileSystem.Default + ".FileManager";
@ -85,7 +85,7 @@ public static class PlatformPermissions
}
}
public class Package
public static class Package
{
public const string Default = GroupName + ".Package";
@ -98,7 +98,7 @@ public static class PlatformPermissions
public const string ManageBlobs = Default + ".ManageBlobs";
}
public class Feedback
public static class Feedback
{
public const string Default = GroupName + ".Feedback";
@ -113,7 +113,18 @@ public static class PlatformPermissions
public const string ManageAttachments = Default + ".ManageAttachments";
}
public class EmailMessage
public static class Enterprise
{
public const string Default = GroupName + ".Enterprise";
public const string Create = Default + ".Create";
public const string Delete = Default + ".Delete";
public const string Update = Default + ".Update";
}
public static class EmailMessage
{
public const string Default = GroupName + ".EmailMessage";
@ -122,7 +133,7 @@ public static class PlatformPermissions
public const string SendMessage = Default + ".SendMessage";
}
public class SmsMessage
public static class SmsMessage
{
public const string Default = GroupName + ".SmsMessage";

14
aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/Dto/EnterpriseCreateDto.cs

@ -0,0 +1,14 @@
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Validation;
namespace LINGYUN.Platform.Portal;
public class EnterpriseCreateDto : EnterpriseCreateOrUpdateDto
{
/// <summary>
/// 名称
/// </summary>
[Required]
[DynamicStringLength(typeof(EnterpriseConsts), nameof(EnterpriseConsts.MaxNameLength))]
public string Name { get; set; }
}

55
aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/Dto/EnterpriseCreateOrUpdateDto.cs

@ -0,0 +1,55 @@
using System;
using Volo.Abp.Validation;
namespace LINGYUN.Platform.Portal;
public abstract class EnterpriseCreateOrUpdateDto
{
/// <summary>
/// 关联租户
/// </summary>
public Guid? TenantId { get; set; }
/// <summary>
/// 英文名称
/// </summary>
[DynamicStringLength(typeof(EnterpriseConsts), nameof(EnterpriseConsts.MaxEnglishNameLength))]
public string EnglishName { get; set; }
/// <summary>
/// Logo
/// </summary>
[DynamicStringLength(typeof(EnterpriseConsts), nameof(EnterpriseConsts.MaxLogoLength))]
public string Logo { get; set; }
/// <summary>
/// 地址
/// </summary>
[DynamicStringLength(typeof(EnterpriseConsts), nameof(EnterpriseConsts.MaxAddressLength))]
public string Address { get; set; }
/// <summary>
/// 法人代表
/// </summary>
[DynamicStringLength(typeof(EnterpriseConsts), nameof(EnterpriseConsts.MaxLegalManLength))]
public string LegalMan { get; set; }
/// <summary>
/// 税务登记号
/// </summary>
[DynamicStringLength(typeof(EnterpriseConsts), nameof(EnterpriseConsts.MaxTaxCodeLength))]
public string TaxCode { get; set; }
/// <summary>
/// 组织机构代码
/// </summary>
[DynamicStringLength(typeof(EnterpriseConsts), nameof(EnterpriseConsts.MaxOrganizationCodeLength))]
public string OrganizationCode { get; set; }
/// <summary>
/// 注册代码
/// </summary>
[DynamicStringLength(typeof(EnterpriseConsts), nameof(EnterpriseConsts.MaxRegistrationCodeLength))]
public string RegistrationCode { get; set; }
/// <summary>
/// 注册日期
/// </summary>
public DateTime? RegistrationDate { get; set; }
/// <summary>
/// 过期日期
/// </summary>
public DateTime? ExpirationDate { get; set; }
}

21
aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/Dto/EnterpriseDto.cs

@ -0,0 +1,21 @@
using System;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities;
namespace LINGYUN.Platform.Portal;
public class EnterpriseDto : ExtensibleAuditedEntityDto<Guid>, IHasConcurrencyStamp
{
public Guid? TenantId { get; set; }
public string Name { get; set; }
public string EnglishName { get; set; }
public string Logo { get; set; }
public string Address { get; set; }
public string LegalMan { get; set; }
public string TaxCode { get; set; }
public string OrganizationCode { get; set; }
public string RegistrationCode { get; set; }
public DateTime? RegistrationDate { get; set; }
public DateTime? ExpirationDate { get; set; }
public string ConcurrencyStamp { get; set; }
}

17
aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/Dto/EnterpriseGetListInput.cs

@ -0,0 +1,17 @@
using System;
using Volo.Abp.Application.Dtos;
namespace LINGYUN.Platform.Portal;
public class EnterpriseGetListInput : PagedAndSortedResultRequestDto
{
public string Filter { get; set; }
public DateTime? BeginRegistrationDate { get; set; }
public DateTime? EndRegistrationDate { get; set; }
public DateTime? BeginExpirationDate { get; set; }
public DateTime? EndExpirationDate { get; set; }
}

8
aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/Dto/EnterpriseUpdateDto.cs

@ -0,0 +1,8 @@
using Volo.Abp.Domain.Entities;
namespace LINGYUN.Platform.Portal;
public class EnterpriseUpdateDto : EnterpriseCreateOrUpdateDto, IHasConcurrencyStamp
{
public string ConcurrencyStamp { get; set; }
}

14
aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/IEnterpriseAppService.cs

@ -0,0 +1,14 @@
using System;
using Volo.Abp.Application.Services;
namespace LINGYUN.Platform.Portal;
public interface IEnterpriseAppService :
ICrudAppService<
EnterpriseDto,
Guid,
EnterpriseGetListInput,
EnterpriseCreateDto,
EnterpriseUpdateDto>
{
}

18
aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/PlatformApplicationCurdAppServiceBase.cs

@ -0,0 +1,18 @@
using LINGYUN.Platform.Localization;
using Volo.Abp.Application.Services;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Domain.Repositories;
namespace LINGYUN.Platform;
public abstract class PlatformApplicationCurdAppServiceBase<TEntity, TEntityDto, TKey, TGetListInput, TCreateInput, TUpdateInput> :
CrudAppService<TEntity, TEntityDto, TEntityDto, TKey, TGetListInput, TCreateInput, TUpdateInput>
where TEntity : class, IEntity<TKey>
{
protected PlatformApplicationCurdAppServiceBase(
IRepository<TEntity, TKey> repository) : base(repository)
{
LocalizationResource = typeof(PlatformResource);
ObjectMapperContext = typeof(PlatformApplicationModule);
}
}

3
aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/PlatformApplicationMappingProfile.cs

@ -5,6 +5,7 @@ using LINGYUN.Platform.Layouts;
using LINGYUN.Platform.Menus;
using LINGYUN.Platform.Messages;
using LINGYUN.Platform.Packages;
using LINGYUN.Platform.Portal;
namespace LINGYUN.Platform;
@ -32,5 +33,7 @@ public class PlatformApplicationMappingProfile : Profile
CreateMap<EmailMessageHeader, EmailMessageHeaderDto>();
CreateMap<EmailMessage, EmailMessageDto>();
CreateMap<SmsMessage, SmsMessageDto>();
CreateMap<Enterprise, EnterpriseDto>();
}
}

2
aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/PlatformApplicationModule.cs

@ -17,7 +17,7 @@ public class PlatformApplicationModule : AbpModule
Configure<AbpAutoMapperOptions>(options =>
{
options.AddProfile<PlatformApplicationMappingProfile>(validate: true);
options.AddMaps<PlatformApplicationModule>(validate: true);
});
}
}

6
aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/PlatformApplicationServiceBase.cs

@ -1,4 +1,5 @@
using Volo.Abp.Application.Services;
using LINGYUN.Platform.Localization;
using Volo.Abp.Application.Services;
namespace LINGYUN.Platform;
@ -6,6 +7,7 @@ public abstract class PlatformApplicationServiceBase : ApplicationService
{
protected PlatformApplicationServiceBase()
{
LocalizationResource = typeof(PlatformResource);
ObjectMapperContext = typeof(PlatformApplicationModule);
}
}

147
aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/Portal/EnterpriseAppService.cs

@ -0,0 +1,147 @@
using LINGYUN.Platform.Permissions;
using Microsoft.AspNetCore.Authorization;
using System;
using System.Linq;
using System.Linq.Expressions;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Data;
namespace LINGYUN.Platform.Portal;
[Authorize(PlatformPermissions.Enterprise.Default)]
public class EnterpriseAppService :
PlatformApplicationCurdAppServiceBase<
Enterprise,
EnterpriseDto,
Guid,
EnterpriseGetListInput,
EnterpriseCreateDto,
EnterpriseUpdateDto>,
IEnterpriseAppService
{
protected IEnterpriseRepository EnterpriseRepository { get; }
public EnterpriseAppService(IEnterpriseRepository repository)
: base(repository)
{
EnterpriseRepository = repository;
CreatePolicyName = PlatformPermissions.Enterprise.Create;
UpdatePolicyName = PlatformPermissions.Enterprise.Update;
DeletePolicyName = PlatformPermissions.Enterprise.Delete;
GetListPolicyName = PlatformPermissions.Enterprise.Default;
GetPolicyName = PlatformPermissions.Enterprise.Default;
}
protected async override Task<Enterprise> MapToEntityAsync(EnterpriseCreateDto createInput)
{
if (await EnterpriseRepository.FindByNameAsync(createInput.Name) != null)
{
throw new BusinessException(PlatformErrorCodes.DuplicateEnterpriseName)
.WithData("Name", createInput.Name);
}
if (!createInput.EnglishName.IsNullOrWhiteSpace())
{
if (await EnterpriseRepository.FindByNameAsync(createInput.EnglishName) != null)
{
throw new BusinessException(PlatformErrorCodes.DuplicateEnterpriseName)
.WithData("Name", createInput.EnglishName);
}
}
var enterprise = new Enterprise(
GuidGenerator.Create(),
createInput.Name,
createInput.Address,
createInput.TaxCode,
createInput.OrganizationCode,
createInput.RegistrationCode,
createInput.RegistrationDate,
createInput.ExpirationDate,
createInput.TenantId);
UpdateByInput(enterprise, createInput);
return enterprise;
}
protected async override Task MapToEntityAsync(EnterpriseUpdateDto updateInput, Enterprise entity)
{
if (!string.Equals(entity.EnglishName, updateInput.EnglishName, StringComparison.InvariantCultureIgnoreCase))
{
if (await EnterpriseRepository.FindByNameAsync(updateInput.EnglishName) != null)
{
throw new BusinessException(PlatformErrorCodes.DuplicateEnterpriseName)
.WithData("Name", updateInput.EnglishName);
}
}
UpdateByInput(entity, updateInput);
entity.SetConcurrencyStampIfNotNull(updateInput.ConcurrencyStamp);
}
protected override void TryToSetTenantId(Enterprise entity)
{
// ignore tenant
}
protected async override Task DeleteByIdAsync(Guid id)
{
var enterprise = await Repository.GetAsync(id);
await Repository.DeleteAsync(enterprise);
}
protected virtual void UpdateByInput(Enterprise enterprise, EnterpriseCreateOrUpdateDto input)
{
if (!string.Equals(enterprise.EnglishName, input.EnglishName, StringComparison.InvariantCultureIgnoreCase))
{
enterprise.EnglishName = input.EnglishName;
}
if (!string.Equals(enterprise.Logo, input.Logo, StringComparison.InvariantCultureIgnoreCase))
{
enterprise.Logo = input.Logo;
}
if (!string.Equals(enterprise.Address, input.Address, StringComparison.InvariantCultureIgnoreCase))
{
enterprise.Address = input.Address;
}
if (!string.Equals(enterprise.LegalMan, input.LegalMan, StringComparison.InvariantCultureIgnoreCase))
{
enterprise.LegalMan = input.LegalMan;
}
if (!string.Equals(enterprise.TaxCode, input.TaxCode, StringComparison.InvariantCultureIgnoreCase))
{
enterprise.TaxCode = input.TaxCode;
}
if (!string.Equals(enterprise.OrganizationCode, input.OrganizationCode, StringComparison.InvariantCultureIgnoreCase))
{
enterprise.SetOrganization(input.OrganizationCode);
}
if (!string.Equals(enterprise.RegistrationCode, input.RegistrationCode, StringComparison.InvariantCultureIgnoreCase))
{
enterprise.SetRegistration(input.RegistrationCode, input.RegistrationDate, input.ExpirationDate);
}
}
protected async override Task<IQueryable<Enterprise>> CreateFilteredQueryAsync(EnterpriseGetListInput input)
{
var filteredQuery = await base.CreateFilteredQueryAsync(input);
Expression<Func<Enterprise, bool>> expression = _ => true;
expression = expression.AndIf(!input.Filter.IsNullOrWhiteSpace(), x => x.Name.Contains(input.Filter) ||
x.EnglishName.Contains(input.Filter) || x.Address.Contains(input.Filter) || x.LegalMan.Contains(input.Filter) ||
x.TaxCode.Contains(input.Filter)|| x.OrganizationCode.Contains(input.Filter) || x.RegistrationCode.Contains(input.Filter));
expression = expression.AndIf(input.BeginRegistrationDate.HasValue, x => x.RegistrationDate >= input.BeginRegistrationDate);
expression = expression.AndIf(input.EndRegistrationDate.HasValue, x => x.RegistrationDate <= input.EndRegistrationDate);
expression = expression.AndIf(input.BeginExpirationDate.HasValue, x => x.ExpirationDate >= input.BeginExpirationDate);
expression = expression.AndIf(input.EndExpirationDate.HasValue, x => x.ExpirationDate <= input.EndExpirationDate);
return filteredQuery.Where(expression);
}
}

1
aspnet-core/modules/platform/LINGYUN.Platform.Domain.Shared/LINGYUN/Platform/Localization/Resources/en.json

@ -16,6 +16,7 @@
"Platform:05104": "Attachment {Name} is invalid, please upload again!",
"Platform:06101": "Duplicate headers cannot be added {Key}!",
"Platform:06102": "Duplicate attachments cannot be added {Name}!",
"Platform:07101": "The enterprise named {Name} already exists!",
"UploadFileSizeBeyondLimit": "Upload file size cannot exceed {0} MB!",
"NotAllowedFileExtensionName": "Not allowed file extension: {0}!",
"DisplayName:VersionFileLimitLength": "File limit size",

1
aspnet-core/modules/platform/LINGYUN.Platform.Domain.Shared/LINGYUN/Platform/Localization/Resources/zh-Hans.json

@ -16,6 +16,7 @@
"Platform:05104": "附件 {Name} 已失效, 请重新上传!",
"Platform:06101": "不能添加重复的标头 {Key}!",
"Platform:06102": "不能添加重复的附件 {Name}!",
"Platform:07101": "已经存在名为 {Name} 的企业信息!",
"UploadFileSizeBeyondLimit": "上传文件大小不能超过 {0} MB!",
"NotAllowedFileExtensionName": "不被允许的文件扩展名: {0}!",
"DisplayName:VersionFileLimitLength": "文件限制大小",

4
aspnet-core/modules/platform/LINGYUN.Platform.Domain.Shared/LINGYUN/Platform/PlatformErrorCodes.cs

@ -61,4 +61,8 @@ public static class PlatformErrorCodes
/// 不能添加重复的附件 {Name}!
/// </summary>
public const string DuplicateEmailMessageAttachment = Namespace + ":06102";
/// <summary>
/// 已经存在名为 {Name} 的企业信息!
/// </summary>
public const string DuplicateEnterpriseName = Namespace + ":07101";
}

4
aspnet-core/modules/platform/LINGYUN.Platform.Domain/LINGYUN/Platform/Portal/Enterprise.cs

@ -10,7 +10,7 @@ namespace LINGYUN.Platform.Portal;
public class Enterprise : FullAuditedAggregateRoot<Guid>
{
/// <summary>
/// 租户标识
/// 关联租户
/// </summary>
public virtual Guid? TenantId { get; protected set; }
/// <summary>
@ -60,6 +60,7 @@ public class Enterprise : FullAuditedAggregateRoot<Guid>
}
public Enterprise(
Guid id,
string name,
string address,
string taxCode,
@ -68,6 +69,7 @@ public class Enterprise : FullAuditedAggregateRoot<Guid>
DateTime? registrationDate = null,
DateTime? expirationDate = null,
Guid? tenantId = null)
: base(id)
{
Address = Check.Length(address, nameof(address), EnterpriseConsts.MaxAddressLength);
TaxCode = Check.Length(taxCode, nameof(taxCode), EnterpriseConsts.MaxTaxCodeLength);

6
aspnet-core/modules/platform/LINGYUN.Platform.Domain/LINGYUN/Platform/Portal/IEnterpriseRepository.cs

@ -5,8 +5,12 @@ using System.Threading.Tasks;
using Volo.Abp.Domain.Repositories;
namespace LINGYUN.Platform.Portal;
public interface IEnterpriseRepository : IBasicRepository<Enterprise, Guid>
public interface IEnterpriseRepository : IRepository<Enterprise, Guid>
{
Task<Enterprise> FindByNameAsync(
string name,
CancellationToken cancellationToken = default);
Task<List<Enterprise>> GetEnterprisesInTenantListAsync(
int maxResultCount = 10,
CancellationToken cancellationToken = default);

9
aspnet-core/modules/platform/LINGYUN.Platform.EntityFrameworkCore/LINGYUN/Platform/Portal/EfCoreEnterpriseRepository.cs

@ -17,6 +17,15 @@ public class EfCoreEnterpriseRepository : EfCoreRepository<IPlatformDbContext, E
{
}
public async virtual Task<Enterprise> FindByNameAsync(
string name,
CancellationToken cancellationToken = default)
{
return await (await GetDbSetAsync())
.Where(x => x.Name == name || x.EnglishName == name)
.FirstOrDefaultAsync(GetCancellationToken(cancellationToken));
}
public async virtual Task<Guid?> GetEnterpriseInTenantAsync(
Guid id,
CancellationToken cancellationToken = default)

59
aspnet-core/modules/platform/LINGYUN.Platform.HttpApi/LINGYUN/Platform/Portal/EnterpriseController.cs

@ -0,0 +1,59 @@
using LINGYUN.Platform.Permissions;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.AspNetCore.Mvc;
namespace LINGYUN.Platform.Portal;
[Area("platform")]
[Authorize(PlatformPermissions.Enterprise.Default)]
[RemoteService(Name = PlatformRemoteServiceConsts.RemoteServiceName)]
[Route($"api/{PlatformRemoteServiceConsts.ModuleName}/enterprise")]
public class EnterpriseController : AbpControllerBase, IEnterpriseAppService
{
private readonly IEnterpriseAppService _service;
public EnterpriseController(IEnterpriseAppService service)
{
_service = service;
}
[HttpPost]
[Authorize(PlatformPermissions.Enterprise.Create)]
public virtual Task<EnterpriseDto> CreateAsync(EnterpriseCreateDto input)
{
return _service.CreateAsync(input);
}
[HttpDelete]
[Route("{id}")]
[Authorize(PlatformPermissions.Enterprise.Delete)]
public virtual Task DeleteAsync(Guid id)
{
return _service.DeleteAsync(id);
}
[HttpGet]
[Route("{id}")]
public virtual Task<EnterpriseDto> GetAsync(Guid id)
{
return _service.GetAsync(id);
}
[HttpGet]
public virtual Task<PagedResultDto<EnterpriseDto>> GetListAsync(EnterpriseGetListInput input)
{
return _service.GetListAsync(input);
}
[HttpPut]
[Route("{id}")]
[Authorize(PlatformPermissions.Enterprise.Delete)]
public virtual Task<EnterpriseDto> UpdateAsync(Guid id, EnterpriseUpdateDto input)
{
return _service.UpdateAsync(id, input);
}
}
Loading…
Cancel
Save