Admin.NET基于.NET 的通用管理平台
Admin.NET 是基于.NET 5/6 实现的通用管理平台。整合最新技术,模块插件式开发,前后端分离,开箱即用。
- 后台基于Furion框架,vue2前端基于小诺框架,vue3前端基于Vben-Admin框架。
- 集成EF Core、多租户、缓存、数据校验、鉴权、事件总线、动态API、通讯、远程请求、任务调度、gRPC等众多黑科技。
- 核心模块包括:用户、角色、职位、组织机构、菜单、字典、日志、多应用管理、文件管理、定时任务等功能。
- 代码简洁、易扩展,让开发更简单、更通用、更流行!
如果对您有帮助,点击右上角⭐Star⭐关注 ,感谢支持开源!
🍁 框架拓展包
更新不及时,建议使用源码
包类型 | 名称 | 版本 | 描述 |
---|---|---|---|
Furion.Extras.Admin.NET | Admin.NET 核心包 |
可自行按照 Furion 框架脚手架初始化工程,然后引用此包即可,其他层配置见源代码。🔊此包会紧跟Furion版本更新而更新。
🍀 框架脚手架
模板类型 | 名称 | 版本 | 描述 |
---|---|---|---|
Furion.Admin.NET.Template.App | Admin.NET 框架模板 |
打开 CMD 或 Powershell 执行dotnet命令
1、安装脚手架
dotnet new --install Furion.Admin.NET.Template.App
2、更新脚手架
dotnet new --install Furion.Admin.NET.Template.App
3、使用脚手架(生成之后推荐将所有的 nuget 包更新到最新版本)
dotnet new Admin.NET -n 你的项目名称
其实安装之后可以直接在VS里面进行可视化及创建工程
🐱 🚀 模块/插件化开发
- 按照 Furion 框架脚手架或者本框架脚手架初始化工程。
- 创建自己业务的 Dll 插件库工程,引用 Furion.Extras.Admin.NET 包,编写自己的业务代码包括实体、服务等。
- 在 XXX.Web.Entry 层里面的 appsettings.json 配置此插件 Dll 的路径。配置文档说明
- 此时框架和自己业务实体可以同时做数据迁移,耦合度最低。也可以自行将数据库分系统库、业务库等。
- 将自己业务前端代码包括view和api文件复制到前端工程相应目录即可。
仓库内 plugin 文件内为本框架模块/插件开发事例,供参考。
🎭 插件市场
欢迎大家勇于参与开源,贡献自己的应用插件,你我都可以做到,.NET正在迅速崛起,我们都是历史的见证人💪
【核酸采集系统】
🎁 前后端一体化
将后台提供的Swagger接口直接生成对应前端的API文件,前端再也不需要手撸一个个的对应后后的API定义了。后台接口更新后,只需要重新生成一遍覆盖即可。
详细教程见群里面视频文件【Fur课堂_20201028前后端(第1部份).mp4】、【Fur课堂_20201028前后端(第2部份).mp4】
增加了Vue3.0、Vite、Antd、TypeScript模式的UI框架,希望大家来一来完善各页面应用,感谢💖💖💖
😎 衍生版本
【Admin.NET】隆重推出SqlSugar版本
- 👉 SqlSugar版本:https://gitee.com/zhengguojing/admin-net-sqlsugar
如果集成其他ORM,请参照各自操作使用说明。系统默认EFCore不会处理其他ORM实体等,请自行处理。
👑 多租户简介
框架目前采用基于共享数据库TenantId的方式实现,后期可无缝迁移转换到基于多库或者Schema模式。
- 平台超管对租户进行增删改查操作,对各租户进行权限(菜单)的分配,租户管理员密码默认123456
- 租户管理员根据平台分配的权限再对本租户内用户进一步权限划分
- 针对新开发的业务功能,平台超管可以针对性分配给各租户(比如某租户购买后才有此功能菜单等)
🥞 更新日志
更新日志 点击查看
🍿 在线体验
- 开发者租户:用户名:superAdmin,密码:123456
- 公司1租户: 公司1租户管理员(用户名:zuohuaijun@163.com 密码:123456),公司1租户普通用户(用户名:dilon@163.com 密码:123456)
🍄 快速启动
需要安装:VS2019(最新版)、npm或yarn(最新版)
- 启动后台:打开backend/Admin.NET.sln解决方案,直接运行(F5)即可启动(数据库默认SQLite)
- 启动前端:VSCode或HBuilder,打开frontend文件夹,进行依赖下载,运行npm install或yarn命令,再运行npm run serve或 yarn run serve
- 浏览器访问:
http://localhost:81
(默认前端端口为:81,后台端口为:5566)
🏀 分层说明
├─Admin.NET.Application ->业务应用层,在此写您具体业务代码
├─Admin.NET.Core ->框架核心层
├─Admin.NET.Database.Migrations ->架构维护层,主要存放迁移中间文件
├─Admin.NET.EntityFramework.Core ->EF Core配置层,主要配置数据库及相关
├─Admin.NET.Web.Core ->Web核心层,主要是服务注册及鉴权
├─Admin.NET.Web.Entry ->Web入口层/启动层,可任意更换
├─Furion.Extras.Admin.NET ->封装的框架核心层,已做成NuGet包
注:源码直接开发建议自己的业务代码直接写在【Admin.NET.Application】层里面,可随框架升级减少冲突。或直接用模板脚手架创建自己的工程。
📖 帮助文档
👉后台文档:
- Furion后台框架文档 https://dotnetchina.gitee.io/furion/docs/source
👉前端文档:
- Ant Design Pro of Vue 使用文档 https://pro.antdv.com/docs/getting-started
- Ant Design of Vue 组件文档 https://www.antdv.com/docs/vue/getting-started-cn/
- Vue 开发文档 https://cn.vuejs.org/v2/guide/
👉快捷部署到 linux 文档:
👉代码生成器使用教程:
👉fork项目后该这样做后续开发:
👉关于signalr使用:
😎通读以上文档,您就可以玩转本项目了(其实您已经是高手了)。项目使用上的问题,文档中基本都可以找到答案。
🍎 效果图
🍖 详细功能
- 主控面板、控制台页面,可进行工作台,分析页,统计等功能的展示。
- 用户管理、对企业用户和系统管理员用户的维护,可绑定用户职务,机构,角色,数据权限等。
- 应用管理、通过应用来控制不同维度的菜单展示。
- 机构管理、公司组织架构维护,支持多层级结构的树形结构。
- 职位管理、用户职务管理,职务可作为用户的一个标签,职务目前没有和权限等其他功能挂钩。
- 菜单管理、菜单目录,菜单,和按钮的维护是权限控制的基本单位。
- 角色管理、角色绑定菜单后,可限制相关角色的人员登录系统的功能范围。角色也可以绑定数据授权范围。
- 字典管理、系统内各种枚举类型的维护。
- 访问日志、用户的登录和退出日志的查看和管理。
- 操作日志、用户的操作业务的日志的查看和管理。
- 服务监控、服务器的运行状态,CPU、内存、网络等信息数据的查看。
- 在线用户、当前系统在线用户的查看。
- 公告管理、系统的公告的管理。
- 文件管理、文件的上传下载查看等操作,文件可使用本地存储,阿里云oss,腾讯cos接入,支持拓展。
- 定时任务、定时任务的维护,通过cron表达式控制任务的执行频率。
- 系统配置、系统运行的参数的维护,参数的配置与系统运行机制息息相关。
- 邮件发送、发送邮件功能。
- 短信发送、短信发送功能,可使用阿里云sms,腾讯云sms,支持拓展。
💪 数据库操作
本框架ORM默认采用EF Core开发,加上拓展比如SqlSugar,理论上兼容并支持所有类型数据库。😜
【MySQL】
- Admin.NET.EntityFramework.Core 项目安装
Pomelo.EntityFrameworkCore.MySql,Nuget 需安装 5.0 版本 (支持 MySql 5.x +) MySql.EntityFrameworkCore:支持 (MySql 8.x +)
- DefaultDbContext.cs 指定 DbProvider ,
[AppDbContext("DefaultConnection", DbProvider.MySql)]
- dbsettings.json 配置 "DefaultConnection":
"Data Source=localhost;Database=Admin.NET;User ID=root;Password=000000;pooling=true;port=3306;sslmode=none;CharSet=utf8;"
- 打开程序包管理器控制台,默认项目Admin.NET.Database.Migrations 执行命令:
Add-Migration Init和update-database
【SQLServer】
- Admin.NET.EntityFramework.Core 项目安装
Microsoft.EntityFrameworkCore.SqlServer
- DefaultDbContext.cs 指定 DbProvider ,
[AppDbContext("DefaultConnection", DbProvider.SqlServer)]
- dbsettings.json 配置 "DefaultConnection":
"Server=localhost;Database=Admin.NET;User=sa;Password=000000;MultipleActiveResultSets=True;"
- 打开程序包管理器控制台,默认项目Admin.NET.Database.Migrations 执行命令:
Add-Migration Init 和 update-database
提示:其他类型数据库依次类推,首先添加EF的Core版包,然后指定数据库类型,修改数据库连接字符串,执行EF迁移命令即可。
【数据库初始化操作】 GIT完成后默认为SqlLite数据库,使用其他数据库可通过基于EF Core的CodeFirst初始化,添加好拓展包,创建好空数据库,设置好数据库信息和后,即可通过此操作可进行数据库初始化操作。
- 启动项目设置为 XXXX.Web.Entry
- 程序包管理控制台默认项目设置为 XXXX.Database.Migrations
- 依次输入并回车执行
Add-Migration v1.0.0 -Context DefaultDbContext
update-database v1.0.0 -Context DefaultDbContext
Add-Migration v1.0.0 -Context MultiTenantDbContext
update-database v1.0.0 -Context MultiTenantDbContext
至此完成初始数据部署。后期添加/修改自己业务的数据类后通过更新版本号来更新数据库即可。
Add-Migration v1.0.1 -Context DefaultDbContext
update-database v1.0.1 -Context DefaultDbContext
Add-Migration v1.0.1 -Context MultiTenantDbContext
update-database v1.0.1 -Context MultiTenantDbContext
【EF批量操作】
使用 Zack.EFCore.Batch https://hub.fastgit.org/yangzhongke/Zack.EFCore.Batch 安装对应包即可
- MSSQL:Zack.EFCore.Batch.MSSQL
- MySql:Zack.EFCore.Batch.MySQL.Pomelo
- Npgsql:Zack.EFCore.Batch.Npgsql
- Oracle:Zack.EFCore.Batch.Oracle
- Sqlite:Zack.EFCore.Batch.Sqlite
提示:记得修改Admin.NET.EntityFramework.Core层里面Startup注册服务类型 opt.UseBatchEF_Sqlite(), 改成相应得库类型。
🍻 贡献代码
Admin.NET
遵循 Apache-2.0
开源协议,欢迎大家提交 PR
或 Issue
。
感谢每一位贡献代码的朋友。感谢 TLog 作者 提供的贡献者实时头像。
💐 特别鸣谢
- 👉 Furion: https://dotnetchina.gitee.io/furion
- 👉 xiaonuo:https://gitee.com/xiaonuobase/snowy
- 👉 Vben-Admin:https://vvbin.cn/doc-next/
- 👉 k-form-design:https://gitee.com/kcz66/k-form-design
- 👉 MiniExcel:https://gitee.com/dotnetchina/MiniExcel
- 👉 SqlSugar:https://gitee.com/dotnetchina/SqlSugar
- 👉 IdGenerator:https://github.com/yitter/idgenerator
- 👉 ua-parser:https://github.com/ua-parser/uap-csharp/
- 👉 Zack.EFCore.Batch:https://github.com/yangzhongke/Zack.EFCore.Batch
- 👉 OnceMi.AspNetCore.OSS:https://github.com/oncemi/OnceMi.AspNetCore.OSS