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

1 篇文章 0 订阅
1 篇文章 0 订阅

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

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

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

主要特性包括:

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

我们修改后的功能界面

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

添加了插件管理功能

下面的部份代码

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 haproxy 中,植入 cookie、植入 cookie 前缀、重写 cookie、后端 cookie 这几种类型都是用来处理 cookie 的方式,它们的区别如下: 1. 植入 cookie 植入 cookie 是指将一个新的 cookie 添加到 HTTP 响应头中,这个 cookie 可以包含服务器信息、用户信息等。植入 cookie 可以使用 haproxy 提供的 cookie 插件,也可以使用 ACL 和 set-cookie 指令。植入 cookie 的作用是在后续的请求中保存一些信息,例如会话 ID、用户信息等。 2. 植入 cookie 前缀 植入 cookie 前缀是指在已有的 cookie 名称前添加一个前缀。植入 cookie 前缀可以使用 cookie 插件中的 "prefix" 选项来实现。植入 cookie 前缀的作用是在后续的请求中识别自己添加的 cookie,避免与其他 cookie 发生冲突。 3. 重写 cookie 重写 cookie 是指修改 HTTP 请求或响应头中的 cookie。重写 cookie 可以使用 haproxy 提供的 cookie 插件中的 "rewrite" 选项或者 ACL 和 set-cookie 指令来实现。重写 cookie 的作用是更改 cookie 的值或属性,例如将 cookie 的过期时间延长、将 cookie 的值修改为加密后的字符串等。 4. 后端 cookie 后端 cookie 是指在将请求转发给后端服务器之前,haproxy 会从请求中提取 cookie 值,并将其发送给后端服务器。后端 cookie 可以使用 cookie 插件中的 "forward" 选项来实现。后端 cookie 的作用是让后端服务器可以获取到客户端的状态信息,例如会话 ID、用户信息等。 综上所述,植入 cookie、植入 cookie 前缀、重写 cookie、后端 cookie 这几种类型都是处理 cookie 的方式,它们的作用略有不同。在实际使用中,可以根据需求选择合适的方式来处理 cookie。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值