我实现的一些Abp模块

时间:2021-05-24 01:12:18


Generic.Abp.Application

该模块只要是为了适应Sencha Ext JS开发而更改了Configuration相关接口以及Settings接口,可通过演示程序的swagger查看。

该模块只有一个项目,在Abp应用程序的HttpApi引用并添加依赖。

Generic.Abp.BusinessException

用于封装一些常见的商业意外,在Domain.Shared引用并添加依赖。

Generic.Abp.DDD

对Abp原有的领域类和接口做了一些扩充,如增加ITreeITranslationTranslation等接口和实体类。

Generic.Abp.Enumeration

为应用程序添加枚举类并通过/api/configuration/enums接口将枚举类返回客户端。

要定义枚举类,需要在Domain.Shared项目中引用Generic.Abp.Enumeration.Domain.Shared项目,然后通过继承Enumeration来创建自己的枚举类:

class MyEnum:  Generic.Abp.Enumeration.Enumeration<MyEnum>
    {
        public static readonly MyEnum MyEnum1 = new MyEnum(1, "MyEnum1", isDefault: true);
        public static readonly MyEnum MyEnum2 = new MyEnum(2, "MyEnum2");

        protected MyEnum(byte value, string name, string[] permission = null, bool isDefault = false,
            bool isPrivate = false) : base(value, name, permission, isDefault, isPrivate)
        {
        }
    }

在枚举类中,包含以下5个属性:

  • value: 枚举值
  • name:枚举名
  • permission: 权限,如果不是私有,会根据权限选择哪些枚举项可返回客户端
  • isDefault: 是否默认值
  • isPrivate:私有,不会返回客户端

完成枚举定义后,如果希望枚举通过接口返回客户端,需要在模块初始化服务ConfigureServices中将枚举添加到枚举资源中:

public override void ConfigureServices(ServiceConfigurationContext context)
        {

            Configure<EnumerationOptions>(options =>
            {
                options
                    .Resources
                    .Add(typeof(MyEnum));

            });

        }

Generic.Abp.ExtResource.Application

封装了Sencha Ext JS的本地化资源以实现动态本地化。

Sencha Ext JS菜单提供了接口。未来会将菜单独立为一个模块,通过数据库来管理菜单。

Generic.Abp.FileManagement

封装了文件上传的相关功能(FileManager):

  • CheckAsync: 通过文件的散列值验证文件是否已存在,或是否存在已上传部分
  • UploadChunkAsync: 上传文件块
  • MergeAsync: 合并文件块并保存
  • GetFileAsync: 获取整个文件或某一块文件
  • GetThumbnailAsync: 获取文件预览图片

Generic.Abp.Helper

一些诸如字符串增长、文件类型检测等辅助功能。

Generic.Abp.IdentityServer

ABP Framework添加Identity Server 4管理功能.

Generic.Abp.W2Ui

ABP Framework添加W2Ui.

Generic.Abp.OpenIddict

ABP Framework添加OpenIddict管理功能.


源代码:https://github.com/tianxiaode/GenericAbp