goframe重寫FastAdmin后端實現(xiàn)實例詳解
引言
時間大約是三年前,當(dāng)時我所在的團(tuán)隊是最早接觸 PHP 的,而團(tuán)隊其他成員都是用 Java。由于某些項目原因,我們決定全面轉(zhuǎn)向使用 GO 進(jìn)行開發(fā)。在當(dāng)時,我們并不想花太多時間去折騰 REACT 和 VUE 這些前端框架,我們更傾向于使用 jQuery 來開發(fā),因為我們喜歡它的快感。
于是我想到了一個基于 ThinkPHP 和 Bootstrap 的快速后臺開發(fā)框架,叫做 FastAdmin。我之前使用過它做過項目,發(fā)現(xiàn)速度很快,而且學(xué)習(xí)成本也很低。于是,我們決定將原本用 ThinkPHP 寫的后端代碼用 Goframe 重新實現(xiàn)了一遍,并且使用 FastAdmin 的前端規(guī)范和框架。我們內(nèi)部把它叫做 FastGoAdmin。
原本我想花點時間整理一下代碼,將業(yè)務(wù)邏輯和框架分離,然后開源分享出來。但由于一直忙于產(chǎn)品開發(fā),沒有時間進(jìn)行整理。今天我先在這里留個記錄,如果有很多人關(guān)注的話,我就會花時間整理代碼并開源出來。另外,我也要感謝 FastAdmin 的作者,他提供了一個簡單易用的設(shè)計思想。
FastGoAdmin 框架
FastGoAdmin 框架支持一鍵生成 CRUD,根據(jù)數(shù)據(jù)表可以自動產(chǎn)生控制器、模型、視圖、JS、語言包、菜單、回收站等。
FastGoAdmin 的目標(biāo)是為開發(fā)者提供一個能夠單獨完成前后端開發(fā)的能力,約定優(yōu)于配置,配置優(yōu)于開發(fā),開發(fā)優(yōu)于重復(fù)。
主要特性
包括:
- 基于 Auth 驗證的權(quán)限管理系統(tǒng)
- 一鍵生成 CRUD
- 支持無限級父子級權(quán)限繼承,父級管理員可以任意增刪改子級管理員并設(shè)置權(quán)限
- 支持單管理員多角色
- 支持用戶部門管理
- 支持?jǐn)?shù)據(jù)權(quán)限,可以對管理員管轄的數(shù)據(jù)進(jìn)行權(quán)限限制
- 有插件應(yīng)用市場,可以進(jìn)行插件化開發(fā),實現(xiàn)即插即用的應(yīng)用
- 支持多語言,內(nèi)置簡體中文、繁體中文和英文
- 支持多模塊的開發(fā)
我們修改后的功能界面
我們把詳細(xì)頁面修改了一下




添加了插件管理功能
下面的部份代碼

//通用的查詢、新增、修改、刪除、查看 功能,由代碼產(chǎn)生后自帶CURD界面
func (a *openAuth) List(ctx context.Context, req *libModel.ApiPageReq) (total int, list []*entity.OpenAuth, err error) {
boAttachment := &libService.BackendOption{Model: dao.OpenAuth.Table(), Ctx: ctx, DataLimit: true}
total, err = libService.NewBackend(boAttachment).Index(req, &list)
return
}
func (a *openAuth) Add(ctx context.Context, req *model.OpenAuthRow) (res *libModel.AdminApiRes, err error) {
id, err := libService.NewBackend(&libService.BackendOption{Model: dao.OpenAuth.Table(), Ctx: ctx, DataLimit: true}).Add()
if err != nil {
return nil, gerror.New("添加失敗")
}
res = &libModel.AdminApiRes{
Count: 1,
Id: id,
}
return
}
func (a *openAuth) Edit(ctx context.Context, req *model.OpenAuthRow, id uint64) (res *libModel.AdminApiRes, err error) {
count, err := libService.NewBackend(&libService.BackendOption{Model: dao.OpenAuth.Table(), Ctx: ctx, DataLimit: true}).Edit(dao.OpenAuth.Columns().Id, id)
if err != nil {
return nil, gerror.New("修改失敗")
}
res = &libModel.AdminApiRes{
Count: count,
}
return
}
func (a *openAuth) Del(ctx context.Context, req *libModel.ApiDelReq) (res *libModel.AdminApiRes, err error) {
count, err := libService.NewBackend(&libService.BackendOption{Model: dao.OpenAuth.Table(), Ctx: ctx, DataLimit: true}).Del(dao.OpenAuth.Columns().Id, gstr.Split(req.Ids, ","))
if err != nil {
return nil, gerror.New("刪除失敗")
}
res = &libModel.AdminApiRes{
Count: count,
}
return
}
func (a *openAuth) GetDetailById(ctx context.Context, id uint64) (row *entity.OpenAuth, err error) {
err = libService.NewBackend(&libService.BackendOption{Model: dao.OpenAuth.Table(), Ctx: ctx, DataLimit: true}).GetDetailById(id, &row)
return
}以上就是goframe重寫FastAdmin后端實現(xiàn)實例詳解的詳細(xì)內(nèi)容,更多關(guān)于goframe重寫FastAdmin后端的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Go語言中動態(tài)調(diào)用不同簽名的函數(shù)的實現(xiàn)
本文主要介紹了Go語言中動態(tài)調(diào)用不同簽名的函數(shù)的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-05-05
golang如何使用指針靈活操作內(nèi)存及unsafe包原理解析
本文將深入探討unsafe包的功能和原理,同時,我們學(xué)習(xí)某種東西,一方面是為了實踐運用,另一方面則是出于功利性面試的目的,所以,本文還會為大家介紹unsafe?包的典型應(yīng)用以及高頻面試題,感興趣的朋友跟隨小編一起看看吧2024-07-07
提升編程技能:學(xué)習(xí)如何在Go語言中正確格式化時間
想知道如何在Go語言中輕松地格式化時間嗎?別再浪費時間了!本文將帶你快速入門,讓你的代碼更加優(yōu)雅高效,快來學(xué)習(xí)吧!2024-01-01

