首页 > 其他分享 >我们用goframe重写了FastAdmin的后端,原来这么爽

我们用goframe重写了FastAdmin的后端,原来这么爽

时间:2023-11-20 18:31:55浏览次数:41  
标签:return err libService ctx libModel goframe FastAdmin OpenAuth 重写

时间大约是三年前,当时我所在的团队是最早接触 PHP 的,而团队其他成员都是用 Java。由于某些项目原因,我们决定全面转向使用 GO 进行开发。在当时,我们并不想花太多时间去折腾 REACT 和 VUE 这些前端框架,我们更倾向于使用 jQuery 来开发,因为我们喜欢它的快感。于是我想到了一个基于 ThinkPHP 和 Bootstrap 的快速后台开发框架,叫做 FastAdmin。我之前使用过它做过项目,发现速度很快,而且学习成本也很低。于是,我们决定将原本用 ThinkPHP 写的后端代码用 Goframe 重新实现了一遍,并且使用 FastAdmin 的前端规范和框架。我们内部把它叫做 FastGoAdmin。原本我想花点时间整理一下代码,将业务逻辑和框架分离,然后开源分享出来。但由于一直忙于产品开发,没有时间进行整理。今天我先在这里留个记录,如果有很多人关注的话,我就会花时间整理代码并开源出来。另外,我也要感谢 FastAdmin 的作者,他提供了一个简单易用的设计思想。

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

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

主要特性包括:

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

我们修改后的功能界面

我们用goframe重写了FastAdmin的后端,原来这么爽_数据

我们用goframe重写了FastAdmin的后端,原来这么爽_开发者_02

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

我们用goframe重写了FastAdmin的后端,原来这么爽_开发者_03

我们用goframe重写了FastAdmin的后端,原来这么爽_开发者_04

添加了插件管理功能

下面的部份代码

我们用goframe重写了FastAdmin的后端,原来这么爽_数据_05

//通用的查询、新增、修改、删除、查看 功能,由代码产生后自带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
}

标签:return,err,libService,ctx,libModel,goframe,FastAdmin,OpenAuth,重写
From: https://blog.51cto.com/u_16295751/8363501

相关文章

  • WPF --- 重写圆角DataGrid样式
    引言因要符合UI设计,需要一个圆角的DataGrid样式,其需要一个,所以需要重写DataGrid的样式,代码具体样式代码如下:<ResourceDictionaryxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"......
  • WPF --- 如何重写WPF原生控件样式
    引言上一篇中WPF---重写DataGrid样式,因新产品UI需要,重写了一下微软WPF原生的DataGrid的样式,包含如下内容:基础设置,一些基本背景色,字体颜色等。滚动条样式。实现圆角表格,重写表格的一些基础样式,例如CellStyle,RowStyle,RowHeaderStyle,ColumnHeaderStyle等。重写过......
  • 重写Java中Arrays数组工具类提供的sort()排序函数中的比较器类Comparator的compare()
    排序方法是我们日常开发或者写功能函数,或者实现算法时,常调用的方法。有时甚至,开发人员自己还要写一写排序算法。今天,我们来修改Java官方提供的Arrays工具类中的静态排序sort()方法。反问一下,为什么要重写呢?官方提供的还不够你用?回答:确实不够用,官方默认是对数字,特别是sort比较的......
  • vue2为什么只重写了7个数组方法
    首先看源码//即将要被劫持的数组letarr=[1,2,3];//先把要劫持的方法列出来letmethods=["push","pop","shift","unshift","reverse","sort","splice"];//既然要劫持原型,就要先把原型拿过来letarrayProto=Array.prototy......
  • 属性设置了configurable:false,表示该属性不可删除,删改无效,也不可再次修改其特性,但是属
    执行以下程序,下列选项中,说法正确的是()varobj={brand:'华为',price:1999};Object.defineProperty(obj,'id',{value:1})Object.defineProperty(obj,'price',{configurable:false})console.log(Object.keys(obj).length);...①for(varkinobj){con......
  • 重写equals方法
    前言:重写equals方法能够学习到多态、instanceof代码实现:publicclassSuper{publicstaticvoidmain(String[]args){Super.User1user1=newSuper.User1();Super.User2user2=newSuper.User2();System.out.println(user2.equals(use......
  • fastadmin框架控制器传值给Js文件
    1.传值 2.使用Config.xxx ......
  • fastAdmin框架点击表格内容切换状态以及js刷新表格的操作
    1.想实现效果:点击列表状态能切换已关闭或者已开启 2.操作步骤:(1)js表格内容: (2)表格点击事件 (3)后台代码: ......
  • 继承、覆盖(重写)
        ......
  • vue-router中重写push方法
    文章目的:看到一段代码不理解什么意思,查了一下是为了解决,重复跳转相同的路由,控制台报错。重写了方法后,能catch异常,不会在控制台报错了。代码:Router.prototype.push=functionpush(location){console.log(location,'location')returnrouterPush.call(this,locat......