Admin.NET基于.NET 的通用管理平臺(tái)
Admin.NET 是基于.NET 5/6 實(shí)現(xiàn)的通用管理平臺(tái)。整合最新技術(shù),模塊插件式開發(fā),前后端分離,開箱即用。
- 后臺(tái)基于Furion框架,vue2前端基于小諾框架,vue3前端基于Vben-Admin框架。
- 集成EF Core、多租戶、緩存、數(shù)據(jù)校驗(yàn)、鑒權(quán)、事件總線、動(dòng)態(tài)API、通訊、遠(yuǎn)程請(qǐng)求、任務(wù)調(diào)度、gRPC等眾多黑科技。
- 核心模塊包括:用戶、角色、職位、組織機(jī)構(gòu)、菜單、字典、日志、多應(yīng)用管理、文件管理、定時(shí)任務(wù)等功能。
- 代碼簡潔、易擴(kuò)展,讓開發(fā)更簡單、更通用、更流行!
如果對(duì)您有幫助,點(diǎn)擊右上角?Star?關(guān)注 ,感謝支持開源!
?? 框架拓展包
更新不及時(shí),建議使用源碼
| 包類型 | 名稱 | 版本 | 描述 |
|---|---|---|---|
| Furion.Extras.Admin.NET | Admin.NET 核心包 |
可自行按照 Furion 框架腳手架初始化工程,然后引用此包即可,其他層配置見源代碼。??此包會(huì)緊跟Furion版本更新而更新。
?? 框架腳手架
| 模板類型 | 名稱 | 版本 | 描述 |
|---|---|---|---|
| Furion.Admin.NET.Template.App | Admin.NET 框架模板 |
打開 CMD 或 Powershell 執(zhí)行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 你的項(xiàng)目名稱
其實(shí)安裝之后可以直接在VS里面進(jìn)行可視化及創(chuàng)建工程
?? ?? 模塊/插件化開發(fā)
- 按照 Furion 框架腳手架或者本框架腳手架初始化工程。
- 創(chuàng)建自己業(yè)務(wù)的 Dll 插件庫工程,引用 Furion.Extras.Admin.NET 包,編寫自己的業(yè)務(wù)代碼包括實(shí)體、服務(wù)等。
- 在 XXX.Web.Entry 層里面的 appsettings.json 配置此插件 Dll 的路徑。配置文檔說明
- 此時(shí)框架和自己業(yè)務(wù)實(shí)體可以同時(shí)做數(shù)據(jù)遷移,耦合度最低。也可以自行將數(shù)據(jù)庫分系統(tǒng)庫、業(yè)務(wù)庫等。
- 將自己業(yè)務(wù)前端代碼包括view和api文件復(fù)制到前端工程相應(yīng)目錄即可。
倉庫內(nèi) plugin 文件內(nèi)為本框架模塊/插件開發(fā)事例,供參考。
?? 插件市場(chǎng)
歡迎大家勇于參與開源,貢獻(xiàn)自己的應(yīng)用插件,你我都可以做到,.NET正在迅速崛起,我們都是歷史的見證人??
【核酸采集系統(tǒng)】
?? 前后端一體化
將后臺(tái)提供的Swagger接口直接生成對(duì)應(yīng)前端的API文件,前端再也不需要手?jǐn)]一個(gè)個(gè)的對(duì)應(yīng)后后的API定義了。后臺(tái)接口更新后,只需要重新生成一遍覆蓋即可。
詳細(xì)教程見群里面視頻文件【Fur課堂_20201028前后端(第1部份).mp4】、【Fur課堂_20201028前后端(第2部份).mp4】
增加了Vue3.0、Vite、Antd、TypeScript模式的UI框架,希望大家來一來完善各頁面應(yīng)用,感謝??????
?? 衍生版本
【Admin.NET】隆重推出SqlSugar版本
- ?? SqlSugar版本:https://gitee.com/zhengguojing/admin-net-sqlsugar
如果集成其他ORM,請(qǐng)參照各自操作使用說明。系統(tǒng)默認(rèn)EFCore不會(huì)處理其他ORM實(shí)體等,請(qǐng)自行處理。
?? 多租戶簡介
框架目前采用基于共享數(shù)據(jù)庫TenantId的方式實(shí)現(xiàn),后期可無縫遷移轉(zhuǎn)換到基于多庫或者Schema模式。
- 平臺(tái)超管對(duì)租戶進(jìn)行增刪改查操作,對(duì)各租戶進(jìn)行權(quán)限(菜單)的分配,租戶管理員密碼默認(rèn)123456
- 租戶管理員根據(jù)平臺(tái)分配的權(quán)限再對(duì)本租戶內(nèi)用戶進(jìn)一步權(quán)限劃分
- 針對(duì)新開發(fā)的業(yè)務(wù)功能,平臺(tái)超管可以針對(duì)性分配給各租戶(比如某租戶購買后才有此功能菜單等)
?? 更新日志
更新日志 點(diǎn)擊查看
?? 在線體驗(yàn)
- 開發(fā)者租戶:用戶名:superAdmin,密碼:123456
- 公司1租戶: 公司1租戶管理員(用戶名:[email protected] 密碼:123456),公司1租戶普通用戶(用戶名:[email protected] 密碼:123456)
?? 快速啟動(dòng)
需要安裝:VS2019(最新版)、npm或yarn(最新版)
- 啟動(dòng)后臺(tái):打開backend/Admin.NET.sln解決方案,直接運(yùn)行(F5)即可啟動(dòng)(數(shù)據(jù)庫默認(rèn)SQLite)
- 啟動(dòng)前端:VSCode或HBuilder,打開frontend文件夾,進(jìn)行依賴下載,運(yùn)行npm install或yarn命令,再運(yùn)行npm run serve或 yarn run serve
- 瀏覽器訪問:
http://localhost:81(默認(rèn)前端端口為:81,后臺(tái)端口為:5566)
?? 分層說明
├─Admin.NET.Application ->業(yè)務(wù)應(yīng)用層,在此寫您具體業(yè)務(wù)代碼
├─Admin.NET.Core ->框架核心層
├─Admin.NET.Database.Migrations ->架構(gòu)維護(hù)層,主要存放遷移中間文件
├─Admin.NET.EntityFramework.Core ->EF Core配置層,主要配置數(shù)據(jù)庫及相關(guān)
├─Admin.NET.Web.Core ->Web核心層,主要是服務(wù)注冊(cè)及鑒權(quán)
├─Admin.NET.Web.Entry ->Web入口層/啟動(dòng)層,可任意更換
├─Furion.Extras.Admin.NET ->封裝的框架核心層,已做成NuGet包
注:源碼直接開發(fā)建議自己的業(yè)務(wù)代碼直接寫在【Admin.NET.Application】層里面,可隨框架升級(jí)減少?zèng)_突?;蛑苯佑媚0迥_手架創(chuàng)建自己的工程。
?? 幫助文檔
??后臺(tái)文檔:
- Furion后臺(tái)框架文檔 https://dotnetchina.gitee.io/furion/docs/source
??前端文檔:
- 小諾前端業(yè)務(wù)文檔 https://doc.xiaonuo.vip/snowy_vue/bizs/
- 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 開發(fā)文檔 https://cn.vuejs.org/v2/guide/
??快捷部署到 linux 文檔:
??代碼生成器使用教程:
??fork項(xiàng)目后該這樣做后續(xù)開發(fā):
??關(guān)于signalr使用:
??通讀以上文檔,您就可以玩轉(zhuǎn)本項(xiàng)目了(其實(shí)您已經(jīng)是高手了)。項(xiàng)目使用上的問題,文檔中基本都可以找到答案。
?? 效果圖
?? 詳細(xì)功能
- 主控面板、控制臺(tái)頁面,可進(jìn)行工作臺(tái),分析頁,統(tǒng)計(jì)等功能的展示。
- 用戶管理、對(duì)企業(yè)用戶和系統(tǒng)管理員用戶的維護(hù),可綁定用戶職務(wù),機(jī)構(gòu),角色,數(shù)據(jù)權(quán)限等。
- 應(yīng)用管理、通過應(yīng)用來控制不同維度的菜單展示。
- 機(jī)構(gòu)管理、公司組織架構(gòu)維護(hù),支持多層級(jí)結(jié)構(gòu)的樹形結(jié)構(gòu)。
- 職位管理、用戶職務(wù)管理,職務(wù)可作為用戶的一個(gè)標(biāo)簽,職務(wù)目前沒有和權(quán)限等其他功能掛鉤。
- 菜單管理、菜單目錄,菜單,和按鈕的維護(hù)是權(quán)限控制的基本單位。
- 角色管理、角色綁定菜單后,可限制相關(guān)角色的人員登錄系統(tǒng)的功能范圍。角色也可以綁定數(shù)據(jù)授權(quán)范圍。
- 字典管理、系統(tǒng)內(nèi)各種枚舉類型的維護(hù)。
- 訪問日志、用戶的登錄和退出日志的查看和管理。
- 操作日志、用戶的操作業(yè)務(wù)的日志的查看和管理。
- 服務(wù)監(jiān)控、服務(wù)器的運(yùn)行狀態(tài),CPU、內(nèi)存、網(wǎng)絡(luò)等信息數(shù)據(jù)的查看。
- 在線用戶、當(dāng)前系統(tǒng)在線用戶的查看。
- 公告管理、系統(tǒng)的公告的管理。
- 文件管理、文件的上傳下載查看等操作,文件可使用本地存儲(chǔ),阿里云oss,騰訊cos接入,支持拓展。
- 定時(shí)任務(wù)、定時(shí)任務(wù)的維護(hù),通過cron表達(dá)式控制任務(wù)的執(zhí)行頻率。
- 系統(tǒng)配置、系統(tǒng)運(yùn)行的參數(shù)的維護(hù),參數(shù)的配置與系統(tǒng)運(yùn)行機(jī)制息息相關(guān)。
- 郵件發(fā)送、發(fā)送郵件功能。
- 短信發(fā)送、短信發(fā)送功能,可使用阿里云sms,騰訊云sms,支持拓展。
?? 數(shù)據(jù)庫操作
本框架ORM默認(rèn)采用EF Core開發(fā),加上拓展比如SqlSugar,理論上兼容并支持所有類型數(shù)據(jù)庫。??
【MySQL】
- Admin.NET.EntityFramework.Core 項(xiàng)目安裝
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;" - 打開程序包管理器控制臺(tái),默認(rèn)項(xiàng)目Admin.NET.Database.Migrations 執(zhí)行命令:
Add-Migration Init和update-database
【SQLServer】
- Admin.NET.EntityFramework.Core 項(xiàng)目安裝
Microsoft.EntityFrameworkCore.SqlServer - DefaultDbContext.cs 指定 DbProvider ,
[AppDbContext("DefaultConnection", DbProvider.SqlServer)] - dbsettings.json 配置 "DefaultConnection":
"Server=localhost;Database=Admin.NET;User=sa;Password=000000;MultipleActiveResultSets=True;" - 打開程序包管理器控制臺(tái),默認(rèn)項(xiàng)目Admin.NET.Database.Migrations 執(zhí)行命令:
Add-Migration Init 和 update-database
提示:其他類型數(shù)據(jù)庫依次類推,首先添加EF的Core版包,然后指定數(shù)據(jù)庫類型,修改數(shù)據(jù)庫連接字符串,執(zhí)行EF遷移命令即可。
【數(shù)據(jù)庫初始化操作】 GIT完成后默認(rèn)為SqlLite數(shù)據(jù)庫,使用其他數(shù)據(jù)庫可通過基于EF Core的CodeFirst初始化,添加好拓展包,創(chuàng)建好空數(shù)據(jù)庫,設(shè)置好數(shù)據(jù)庫信息和后,即可通過此操作可進(jìn)行數(shù)據(jù)庫初始化操作。
- 啟動(dòng)項(xiàng)目設(shè)置為 XXXX.Web.Entry
- 程序包管理控制臺(tái)默認(rèn)項(xiàng)目設(shè)置為 XXXX.Database.Migrations
- 依次輸入并回車執(zhí)行
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
至此完成初始數(shù)據(jù)部署。后期添加/修改自己業(yè)務(wù)的數(shù)據(jù)類后通過更新版本號(hào)來更新數(shù)據(jù)庫即可。
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 安裝對(duì)應(yīng)包即可
- 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注冊(cè)服務(wù)類型 opt.UseBatchEF_Sqlite(), 改成相應(yīng)得庫類型。
?? 貢獻(xiàn)代碼
Admin.NET 遵循 Apache-2.0 開源協(xié)議,歡迎大家提交 PR 或 Issue。
感謝每一位貢獻(xiàn)代碼的朋友。感謝 TLog 作者 提供的貢獻(xiàn)者實(shí)時(shí)頭像。
?? 特別鳴謝
- ?? 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
