gt-crud
- 简单方式(两步自动crud)
// 1.定义模型,参考models/client/client.go
type Client struct {
ID uint64 `gorm:"type:bigint(20)" json:"id"`
Name string `gorm:"type:varchar(30);" json:"name" valid:"required,len=2-20"` // 昵称
}
// 步骤二可省略, 最新方式可通过路由直接初始化调用DB
// 如需额外定义数据库, 可建立模型初始化放入其中
// 2.初始化数据库表,参考util/db/db.go
gt.DB().AutoMigrate(client.Client{})
// 3.路由router中定义,参考routers/dreamlu/router.go
// 定制方法需要确定该结构体实现了models/models_service.go中对应的接口
// 路由定义
Route(map[string]interface{}{
// 客户
"/client": client2.Client{},
// admin
"/admin/applet": applet2.Applet{},
})
// cls["/client"] = controllers.New(client.Client{}, models.Update(&client.Client{}))
- 更新
1.增加完善casbin权限,routers/router中开启权限中间间
//router.Use(authz.NewAuthorizer(authz.Enforcer))
, main中//go policy.InitPolicy()
开启角色权限配置
2.增加路由封装记录所有路由api+Method
gt-crud 是一个gin + gorm + gt 的使用案例
-
特点
1.gin 提供核心的请求处理(了解)
2.gorm 数据库处理(了解)
3.gt 提供常用的操作工具类以及一些开发约定(封装了gin+gorm形成常用业务链,须知) -
api文档参考:
1.api.html(或者在线api.html)
2.此处单机部署开发,单机docker化参考docker目录,微服务go参考micro-go -
数据库模型生成,代码
模型定义需遵循:模型定义
- 插件代码
插件提供了一些其他常见功能
-
开箱即用
1.针对小程序
2.如用到支付回调和退款回调,请修改conf/中notifyUrl为你自己本地测试域名和上线域名,并根据注释掉的代码书写自己的逻辑
3.默认多账号小程序;单账号:注释掉models/global.go中AdminCom的adminID字段,(ps:为了方便部署, 全局搜索initApplet()
,打开注释,填入单账号的appid等参数)`
n.更多用法参考gt -
关于crud
var crud = gt.NewCrud(
gt.Model(Client{}),
)
案例中使用是当前页面全局性的变量, 如果新增了方法, 修改了Model(),如:
crud.Params(gt.Model(Client2{}))
这种情况下,其他使用相同变量的crud的Model都会收到影响,解决方法如下:
1.新增的方法中使用gt.NewCrud(gt.Model(Client2{}))
解决
2.可将crud.Params(gt.Model(Client{}))
添加至每个使用的crud变量中
3.项目使用,全局替换gt-crud,另修改conf/和docker中数据库名称和密码