项目作者: dreamlu

项目描述 :
gin+gorm+mysql+api
高级语言: Go
项目地址: git://github.com/dreamlu/gt-crud.git
创建时间: 2018-08-25T13:39:08Z
项目社区:https://github.com/dreamlu/gt-crud

开源协议:MIT License

下载


gt-crud

  • 简单方式(两步自动crud)
    ``go // 1.定义模型,参考models/client/client.go type Client struct { ID uint64gorm:”type:bigint(20)” json:”id”Name stringgorm:”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. - 更新
  2. 1.增加完善casbin权限,routers/router中开启权限中间间`//router.Use(authz.NewAuthorizer(authz.Enforcer))`, main`//go policy.InitPolicy()`开启角色权限配置
  3. 2.增加路由封装记录所有路由api+Method
  4. gt-crud 是一个gin + gorm + gt 的使用案例
  5. - 特点
  6. 1.[gin](https://github.com/gin-gonic/gin) 提供核心的请求处理(了解)
  7. 2.[gorm](https://github.com/jinzhu/gorm) 数据库处理(了解)
  8. 3.[gt](https://github.com/dreamlu/gt) 提供常用的操作工具类以及一些开发约定(封装了gin+gorm形成常用业务链,须知)
  9. - api文档参考:
  10. 1.api.html(或者在线[api.html](https://www.eolinker.com/#/share/project/api/?groupID=-1&shareCode=pgnwpF&shareToken=$2y$10$QMWRQU4fEfGOLkZgLwGFX.UHcWaaR1Eutrh6DCG8u0XKDRwwcUv76&shareID=120217))
  11. 2.此处单机部署开发,单机docker化参考docker目录,微服务go参考[micro-go](https://github.com/dreamlu/micro-go)
  12. - 数据库模型生成,[代码](util/init/db/db.go)
  13. > 模型定义需遵循:[模型定义](https://gorm.io/zh_CN/docs/models.html)
  14. - 插件[代码](./util/plugin/README.md)
  15. > 插件提供了一些其他常见功能
  16. - 开箱即用
  17. 1.针对小程序
  18. 2.如用到支付回调和退款回调,请修改conf/中notifyUrl为你自己本地测试域名和上线域名,并根据注释掉的代码书写自己的逻辑
  19. 3.默认多账号小程序;单账号:注释掉models/global.goAdminComadminID字段,(ps:为了方便部署, 全局搜索`initApplet()`,打开注释,填入单账号的appid等参数)`
  20. n.更多用法参考[gt](https://github.com/dreamlu/gt)
  21. - 关于crud
  22. ```go
  23. var crud = gt.NewCrud(
  24. gt.Model(Client{}),
  25. )

案例中使用是当前页面全局性的变量, 如果新增了方法, 修改了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中数据库名称和密码