# AbpQuickTemplate **Repository Path**: CaiJinHao/jh-abp-template ## Basic Information - **Project Name**: AbpQuickTemplate - **Description**: 基于Abp构建的快速模板。前端使用react18+antd v5 - **Primary Language**: C# - **License**: LGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2024-03-13 - **Last Updated**: 2025-09-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: Abp, React, Ant-Design, UMI ## README # 创建项目 Abp Module 快速启动模板,基于[abp](https://github.com/abpframework/abp)为基础搭建的,所以支持[abp](https://docs.abp.io/zh-Hans/abp/latest/Startup-Templates/Module)的所有功能。后台添加了配合前端使用的代码生成器,支持基础的 CRUD 生成。前端使用 umi + react18 + antd pro v5。 - 将会同步支持最新 abp module 版本 ## 必要安装 node 20.11.0 推荐 yarn 1.22.22 推荐 ```bash dotnet tool install -g Jh.Abp.Cli dotnet tool install -g dotnet-ef npm install -g yarn # 设置国内镜像源 npm config set registry http://r.cnpmjs.org/ yarn config set registry https://registry.npm.taobao.org ``` ### docker (可选) ```bash # mysql docker pull mysql8 docker run -d --name mysql8 -p 3306:3306 -v -e MYSQL_ROOT_PASSWORD=Jh@123456 --restart always -t mysql --lower_case_table_names=1 # redis docker pull redis docker run -d --name redis -p 6379:6379 --restart always -t redis ``` ## 创建你的项目 ```bash # sqlserver jhabp jhnew YourCompanyName.YourProjectName --template module --database-provider ef -csf -sc # -cs 为数据库连接字符串 数据库支持:MySQL,SQLServer,PostgreSQL,Oracle,OracleDevart,SQLite jhabp jhnew YourCompanyName.YourProjectName --template module --database-provider ef --connection-string "server=dbserver;database=myDatabase;uid=myUsername;pwd=myPassword" --database-management-system MySQL -csf -sc ``` ### 修改配置 - 修改所有需要启动的项目的 redis 连接配置 - 修改所有需要启动的项目的数据库连接字符串:Default 为默认的数据库连接字符串;项目名称为你的项目的数据库连接字符串 ## 使用自动数据库迁移 - 修改本地的 hosts,IP 地址为你的数据库等服务的地址 - 169.254.108.88 server-db - 169.254.108.88 server-redis - 169.254.108.88 server-rabbitmq - 注意修改 powershell 执行规则,否则会提示权限问题(需要管理员身份打开 Powershell): Set-ExecutionPolicy -ExecutionPolicy Unrestricted - 使用 powershell 执行根目录下的 migrations.ps1 - 在弹出的配置文件上修改数据库连接配置,redis 配置(默认是 SQLSERVER 的数据库配置),编辑后保存关闭文件;会有 2 个配置需要修改 - 其他配置可不做修改 ### 如果不需要分库修改配置连接为 ```csharp AuthServer模块配置连接为 "Default": "server=server-db;database=YourProjectName_IdentityManagement;uid=root;pwd=Jh@123456" ``` ```csharp DesignerManagement模块配置连接为 "Default": "server=server-db;database=YourProjectName_IdentityManagement;uid=root;pwd=Jh@123456", "DesignerManagement": "server=server-db;database=YourProjectName_DesignerManagement;uid=root;pwd=Jh@123456" ``` ### DesignerManagement.HttpApi.Host 手动数据库迁移 - 打开终端,并 cd 到项目目录 - 执行数据迁移: dotnet ef migrations add initial - 执行创建数据库: dotnet ef database update ### AuthServer 数据库创建 手动数据库迁移 - 打开终端,并 cd 到 AuthServer 项目目录 - 执行数据迁移: dotnet ef migrations add initial -c AuthServerDbContext - 执行创建数据库: dotnet ef database update -c AuthServerDbContext ## 启动项目(按照下列顺序启动) - 在\*.sln 目录打开终端,执行 dotnet build 进行构建项目 - 在目录 DesignerManagement.HttpApi.Host 中启动:dotnet run - 在目录 AuthServer 中启动:dotnet run ### 启动 admin - 在 admin-v5-react 目录执行安装依赖: yarn install - 启动: yarn dev - 打开地址:https://localhost:44380/ 默认账号:admin 密码:Admin@123 ## 不使用 redis - 在 xxx.xxx.AuthServer.csproj 中 删除包 Volo.Abp.Caching.StackExchangeRedis - 在 xxx.xxx.AuthServer.csproj 中 添加包 Volo.Abp.Caching - 在 IdentityAuthServerModule 中 修改 Module 引用 typeof(AbpCachingStackExchangeRedisModule) =》 typeof(AbpCachingModule) - 删除 redis 连接代码(将下面这段删除) ```csharp var dataProtectionBuilder = context.Services.AddDataProtection().SetApplicationName("YourProjectName"); if (!hostingEnvironment.IsDevelopment()) { var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]!); dataProtectionBuilder.PersistKeysToStackExchangeRedis(redis, "YourProjectName-Protection-Keys"); } ``` ### 不使用 https - 添加禁用 https 验证 ```csharp PreConfigure(builder => { //禁用这个 HTTPS 强制要求 builder.RemoveEventHandler(ValidateTransportSecurityRequirement.Descriptor); }); ``` - 修改你的启动配置 launchSettings.json,将 https 改为 http ## 开始你的业务代码编写 - 使用思维导图将你的业务逻辑梳理清楚 - 在 Domain 中创建你的实体类 - 在 Domain 目录创建你的模块文件夹,在文件夹下创建实体文件夹 - 使用 System.ComponentModel.DataAnnotations.Required 对你的必填字段进行必填标注 - 使用 System.ComponentModel.Description("描述")对你的属性以及类添加描述,让代码生成器能够生成注释 - 使用 Jh.SourceGenerator.Common.HelpText("字段帮助文本")对你的字段存在的意义进行标注,便于生成前端表单填写时的帮助信息(可选) - 使用标识是否显示查询字段 - 如果 Domain 类中包含子表,需要添加对子表得集合操作方法:添加(Add)/清空(Clear)/是否存在(IsIn) - 使用 SourceGeneratorApService_Tests 单元测试生成基础代码 - 修改指定要生成的实体 BaseEnttiys - 修改.ConsoleTestApp - 修改 SourceGeneratorAppService_Tests 得 BaseEnttiys - 修改 appsettings.json 中得 ClientId 为 Identity 中得 ClientId - 启动测试,生成代码 - 修改实体数据库映射 - 对中间表需手动修改映射,并添加数据上下文 - 索引创建重命名:b.HasIndex(p => new { p.PropertiesId, p.ValidatorRuleId }).IsUnique().HasDatabaseName($"IXU*{nameof(PropertiesValidatorRule)}*{nameof(PropertiesValidatorRule.PropertiesId)}\_{nameof(PropertiesValidatorRule.ValidatorRuleId)}"); - 联合主键:b.HasKey(p => new { p.PropertiesId, p.ValidatorRuleId }); - 对 HttpApi.Host 进行数据库迁移 - 在 Identity 种添加 Application.Contracts 得引用,并添加 Module 依赖注入。 - 添加 Domain 类得字段属性数据初始化 - 在 Identity 中添加授权 Client - 在 OpenIddictDataSeed 种添加模块 Client - 启动 Swagger,使用网关 Client(WebGateway_Swagger)测试 API - 前端修改 - 复制生成的文件分别到/src/services 和 /src/pages - 在/config/RoutesConfig 文件夹下添加模块菜单配置文件 - 在/config/routes.config 中导入新的模块配置 - 在/src/access.ts 中添加模块主菜单的权限适配 - 添加菜单中文注释:在自动注入属性中添加前端多语言适配 ## 支持我,让我提供更有用的