elego简介
这是一个基于restgo+element-admin的项目包
地址https://github.com/techidea8/elego.git
restgo简介
一个轻量的golang开发框架
restgo 框架 地址https://github.com/techidea8/restgo.git
restctl
一个根据表结构生成代码的工具,可以自定义模板
地址https://github.com/techidea8/restctl.git
下载elego项目
git clone https://github.com/techidea8/elego.git
- 后端项目结构描述(server)
├─args --存放请求参数
├─config --存放全局配置文件
├─ctrl --存放全部控制器
├─global --存放全局变量
├─initialize --初始化需要配置的一些功能
├─logs --存放日志文件
├─model --存放数据库模型文件
├─resource --存放静态资源文件,支持embedFs,需要go1.16支持
│ ├─console
│ ├─www
│ └─wxh5
├─service --存放service
└─utils --常用工具类
- 前端项目(console)
前端项目基于element-ui-admin,具体可以参考
安装restctl
go get github.com/techidea8/restctl
安装完成后可以使用restctl指令测试是否已经成功安装
>restctl
Usage of restctl.exe:
-c string
config file path (default "./restgo.yaml")
-dns string
dns link to mysql (default "root:root@(127.0.0.1:3306)/test")
-l string
code language,eg:go || java || php (default "go")
-m string
out model
-pkg string
application package (default "turinapp")
-t string
table name (default "test")
-tpldir string
templete for code (default "./tmpl-go")
-v show restctl version
配置restgo.yaml
在elego项目下配置restgo.yml文件
#数据库连接串,目前只支持mysql
dns: root:root@(127.0.0.1:3306)/turing_test?charset=utf8mb4&loc=Local
#后端代码语言:go|java
lang: go
#对应表名称
table: test
#生成模型文件
model: test
#对应项目package
package: turingapp
#代码模板
tpldir: ./tmpl-go
生成代码
turing_testbiz_activity
CREATE TABLE `biz_activity` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(60) DEFAULT NULL COMMENT '活动名称',
`pic` varchar(255) DEFAULT NULL COMMENT '图标',
`start_at` datetime DEFAULT NULL COMMENT '开始时间',
`end_at` varchar(255) DEFAULT NULL COMMENT '结束时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='活动表';
然后
restctl -m activity -t biz_activity
系统将自动生成如下文件
├─console
│ └─src
│ ├─api
│ │ activity.js
│ │
│ └─views
│ └─activity
│ list.vue
│
├─server
│ └─server
│ ├─args
│ │ activity.go
│ │
│ ├─ctrl
│ │ activity.go
│ │
│ ├─model
│ │ activity.go
│ │
│ └─service
│ activity.go
调整
配置文件
server\app.yml
# redis configuration
redis:
db: 0
addr: 'redis://127.0.0.1:6379'
password: 'root'
max-idle: 10
idle-timeout-sec: 30
# mysql connect configuration
database:
db-type: 'mysql' #sqlite3/mysql
db-name: "test"
addr: '127.0.0.1:3306'
query: 'charset=utf8mb4&parseTime=True&loc=Local'
username: '[username]'
password: '[password]'
max-idle-conns: 1
max-open-conns: 10
log-mode: 4 # 4 -info 1- 安静 2 :Error 3 警告
table-prefix: 'turing_'
路由配置
server\initialize\router.go
//注册控制器
func InitRouter() {
restgo.EnableCors()
new(ctrl.AuthCtrl).Router()
new(ctrl.OpenCtrl).Router()
new(ctrl.CaptchaCtrl).Router()
new(ctrl.AttachCtrl).Router()
new(ctrl.UserCtrl).Router()
new(ctrl.AreaCtrl).Router()
new(ctrl.WeixinCtrl).Router()
new(ctrl.WxmpApiCtrl).Router()
//添加activity控制器
new(ctrl.ActivityCtrl).Router()
global.Log.Debug("[√]完成控制器解析 ")
}
如果需要修改查询条件
service/args/activity.go
//分页
func (p *Activity) Condtions() func(db *gorm.DB) *gorm.DB {
return func(db *gorm.DB) *gorm.DB {
if !p.Datefrom.IsZero() {
db = db.Where("create_at >= ?", p.Datefrom.String())
}
if !p.Dateto.IsZero() {
db = db.Where("create_at < ?", p.Dateto.String())
}
//这里修改查询条件
return db
}
}
//结束
定制自己的模板
修改现有模板
tmp-go下存放了项目模板
api.js.html -- 生成console/src/api/xx.js的模板
args.go.html -- 生成server/arg/xx.go的模板
ctrl.go.html -- 生成server/ctrl/xx.go的模板
list.vue.html -- 生成console/src/views/xx/list.vue的模板
model.go.html -- 生成server/model/xx.go的模板
service.go.html ---- 生成server/service/xx.go的模板
修改模板生成路径
api.js.html"console/src/api/[model].js.tpl"console/src/api/[model].js[model]-m-m test{{define "console/src/api/[model].js.tpl"}}
diy自有模板
- 新建模板tpldiy
- 复制tmp-go下模板文件到tpldiy下
- 修改模板
- 修改配置文件restgo.yaml 中 tpldir
tpldir: ./tpldiy
- 通过restctl -m xx -t yy 生成代码
diy项目
可以用自有项目替换server 和console