开发者

goframe重写FastAdmin后端实现实例详解

开发者 https://www.devze.com 2023-12-11 10:28 出处:网络 作者: IoTFast
目录引言FastGoAdmin 框架主要特性我们修改后的功能界面下面的部份代码引言 时间大约是三年前,当时我所在的团队是最早接触 php 的,而团队其他成员都是用 Java。由于某些项目原因,我们决定全面转向使用 GO 进行开发
目录
  • 引言
  • FastGoAdmin 框架
    • 主要特性
    • 我们修改后的功能界面
    • 下面的部份代码

引言

时间大约是三年前,当时我所在的团队是最早接触 php 的,而团队其他成员都是用 Java。由于某些项目原因,我们决定全面转向使用 GO 进行开发。在当时,我们并不想花太多时间去折腾 REACT 和 vue 这些前端框架,我们更倾向于使用 jquery 来开发,因为我们喜欢它的快感。

于是我想到了一个基于 ThinkPHP 和 Bootstrap 的快速后台开发框架,叫做 FastAdmin。我之前使用过它做过项目,发现速度很快,而且学习成本也很低。于是,我们决定将原本用 ThinkPHP 写的后端代码用 Goframe 重新实现了一遍,并且使用 FastAdmin 的前端规范和框架。我们内部把它叫做 FastGoAdmin。

原本我想花点时间整理一下代码,将业务逻辑和框架分离,然后开源分享出来。但由于一直忙于产品开发,没有时间进行整理。今天我先在这里留个记录,如果有很多人关注的话,我就会花时间整理代码并开源出来编程。另外,我也要感谢 FastAdmin 的作者,他提供了一个简单易用的设计思想。

FastGoAdmin 框架

FastGoAdmin 框架支持一键生成 CRUD,根据数据表可以自动产生控制器、模型、视图、js、语言包、菜单、回收站等。

FastGoAdmin 的目标是为开发者提供一个能够单独完成前后端开发的能力,约定优于配置,配置优于开发,开发优于重复。

主要特性

包括:

  • 基于 Auth 验证的权限管理系统
  • 一键生成 CRUD
  • 支持无限级父子级权限继承,父级管理员可以任意增删改子级管理员并设置权限
  • 支持单管理员多角色
  • 支持用户部门管理
  • 支持数据权限,可以对管理员管辖的数据进行权限限制
  • 有插件应用市场,可以进行插件化开发,实现即插即用的应用
  • 支持多语言,内置简体中文、繁体中文和英文
  • 支持多模块的开发

我们修改后的功能界面

我们把详细页面修改了一下

goframe重写FastAdmin后端实现实例详解

goframe重写FastAdmin后端实现实例详解

goframe重写FastAdmin后端实现实例详解

goframe重写FastAdmin后端实现实例详解

添加了插件管理功能

下面的部份代码

goframe重写FastAdmin后端实现实例详解

//通用的查询、新增、修改、删除、查看 功能,由代码产生后自带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 *libphpModel.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,
	}
javascript	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后端实现实例详解的详细内容,更多关于goframe重写FastAdmin后端的资料请关注编程客栈(www.devze.com)其它相关文章!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号