diff --git a/apps/develop/api/gen.go b/apps/develop/api/gen.go index 1b347f7..cc4bbab 100644 --- a/apps/develop/api/gen.go +++ b/apps/develop/api/gen.go @@ -19,7 +19,7 @@ type GenApi struct { // @Router /develop/code/gen/preview/{tableId} [get] // @Security X-TOKEN func (e *GenApi) Preview(rc *ctx.ReqCtx) { - tableId := ginx.PathParamInt(rc.GinCtx, rc.GinCtx.Param("tableId")) + tableId := ginx.PathParamInt(rc.GinCtx, "tableId") rc.ResData = gen.Preview(int64(tableId)) } @@ -31,11 +31,6 @@ func (e *GenApi) Preview(rc *ctx.ReqCtx) { // @Router /develop/code/gen/code/{tableId} [get] // @Security X-TOKEN func (e *GenApi) GenCode(rc *ctx.ReqCtx) { - tableId := ginx.PathParamInt(rc.GinCtx, rc.GinCtx.Param("tableId")) + tableId := ginx.PathParamInt(rc.GinCtx, "tableId") gen.GenCode(int64(tableId)) } - -//自动创建菜单,api -func (e *GenApi) AutoApi(rc *ctx.ReqCtx) { - -} diff --git a/apps/develop/gen/gen.go b/apps/develop/gen/gen.go index 1c2c097..cdacf3b 100644 --- a/apps/develop/gen/gen.go +++ b/apps/develop/gen/gen.go @@ -8,6 +8,7 @@ import ( "pandax/apps/develop/services" "pandax/base/biz" "pandax/base/config" + "pandax/base/global" "pandax/base/utils" "strconv" "strings" @@ -222,6 +223,10 @@ func (s *toolsGenTableColumn) GenTableInit(tableName string) entity.DevGenTable data.PkColumn = dcs[i].ColumnName data.PkGoField = column.GoField data.PkJsonField = column.JsonField + global.Log.Info("是否自增主键", dcs[i].Extra) + if dcs[i].Extra == "auto_increment" { + column.IsIncrement = "1" + } } dataType := s.GetDbType(column.ColumnType) @@ -236,7 +241,7 @@ func (s *toolsGenTableColumn) GenTableInit(tableName string) entity.DevGenTable } } else if s.IsTimeObject(dataType) { //字段为时间类型 - column.GoType = "Time" + column.GoType = "time.Time" column.HtmlType = "datetime" } else if s.IsNumberObject(dataType) { //字段为数字类型 @@ -267,12 +272,12 @@ func (s *toolsGenTableColumn) GenTableInit(tableName string) entity.DevGenTable column.IsRequired = "0" column.IsInsert = "0" } else { + column.IsRequired = "0" column.IsInsert = "1" if strings.Index(column.ColumnName, "name") >= 0 || strings.Index(column.ColumnName, "status") >= 0 { column.IsRequired = "1" } } - // 编辑字段 if s.IsNotEdit(column.ColumnName) { column.IsEdit = "0" @@ -325,20 +330,20 @@ func Preview(tableId int64) map[string]interface{} { t2, err := template.ParseFiles("resource/template/go/service.template") biz.ErrIsNil(err, "service模版读取失败") - //t3, err := template.ParseFiles("resource/template/go/api.template") - //biz.ErrIsNil(err, "api模版读取失败!") - // - //t4, err := template.ParseFiles("resource/template/go/router.template") - //biz.ErrIsNil(err, "router模版读取失败") - // - //t5, err := template.ParseFiles("resource/template/js/api.template") - //biz.ErrIsNil(err, "js模版读取失败") - // - //t6, err := template.ParseFiles("resource/template/vue/list-vue.template") - //biz.ErrIsNil(err, "vue列表模版读取失败!") - // - //t7, err := template.ParseFiles("resource/template/vue/edit-vue.template") - //biz.ErrIsNil(err,"vue编辑模版读取失败!") + t3, err := template.ParseFiles("resource/template/go/api.template") + biz.ErrIsNil(err, "api模版读取失败!") + + t4, err := template.ParseFiles("resource/template/go/router.template") + biz.ErrIsNil(err, "router模版读取失败") + + t5, err := template.ParseFiles("resource/template/js/api.template") + biz.ErrIsNil(err, "js模版读取失败") + + t6, err := template.ParseFiles("resource/template/vue/list-vue.template") + biz.ErrIsNil(err, "vue列表模版读取失败!") + + t7, err := template.ParseFiles("resource/template/vue/edit-vue.template") + biz.ErrIsNil(err, "vue编辑模版读取失败!") tab := services.DevGenTableModelDao.FindOne(entity.DevGenTable{TableId: tableId}, false) @@ -346,25 +351,25 @@ func Preview(tableId int64) map[string]interface{} { err = t1.Execute(&b1, tab) var b2 bytes.Buffer err = t2.Execute(&b2, tab) - //var b3 bytes.Buffer - //err = t3.Execute(&b3, tab) - //var b4 bytes.Buffer - //err = t4.Execute(&b4, tab) - //var b5 bytes.Buffer - //err = t5.Execute(&b5, tab) - //var b6 bytes.Buffer - //err = t6.Execute(&b6, tab) - //var b7 bytes.Buffer - //err = t7.Execute(&b7, tab) + var b3 bytes.Buffer + err = t3.Execute(&b3, tab) + var b4 bytes.Buffer + err = t4.Execute(&b4, tab) + var b5 bytes.Buffer + err = t5.Execute(&b5, tab) + var b6 bytes.Buffer + err = t6.Execute(&b6, tab) + var b7 bytes.Buffer + err = t7.Execute(&b7, tab) mp := make(map[string]interface{}) mp["template/entity.template"] = b1.String() mp["template/service.template"] = b2.String() - //mp["template/api.template"] = b3.String() - //mp["template/router.template"] = b4.String() - //mp["template/jsApi.template"] = b5.String() - //mp["template/listVue.template"] = b6.String() - //mp["template/editVue.template"] = b7.String() + mp["template/api.template"] = b3.String() + mp["template/router.template"] = b4.String() + mp["template/jsApi.template"] = b5.String() + mp["template/listVue.template"] = b6.String() + mp["template/editVue.template"] = b7.String() return mp } @@ -380,19 +385,19 @@ func GenCode(tableId int64) { t2, err := template.ParseFiles("resource/template/go/service.template") biz.ErrIsNil(err, "service模版读取失败!") - //t3, err := template.ParseFiles("resource/template/go/api.template") - //biz.ErrIsNil(err, "api模版读取失败!") - // - //t4, err := template.ParseFiles("resource/template/go/router.template") - //biz.ErrIsNil(err, "router模版读取失败!") - // - //t5, err := template.ParseFiles("resource/template/js/api.template") - //biz.ErrIsNil(err, "js模版读取失败!") - // - //t6, err := template.ParseFiles("resource/template/vue/list-vue.template") - //biz.ErrIsNil(err, "vue列表模版读取失败!") - //t7, err := template.ParseFiles("resource/template/vue/edit-vue.template") - //biz.ErrIsNil(err, "vue编辑模版读取失败!") + t3, err := template.ParseFiles("resource/template/go/api.template") + biz.ErrIsNil(err, "api模版读取失败!") + + t4, err := template.ParseFiles("resource/template/go/router.template") + biz.ErrIsNil(err, "router模版读取失败!") + + t5, err := template.ParseFiles("resource/template/js/api.template") + biz.ErrIsNil(err, "js模版读取失败!") + + t6, err := template.ParseFiles("resource/template/vue/list-vue.template") + biz.ErrIsNil(err, "vue列表模版读取失败!") + t7, err := template.ParseFiles("resource/template/vue/edit-vue.template") + biz.ErrIsNil(err, "vue编辑模版读取失败!") kgo.KFile.Mkdir("./apps/"+tab.PackageName+"/api/", os.ModePerm) kgo.KFile.Mkdir("./apps/"+tab.PackageName+"/entity/", os.ModePerm) @@ -406,22 +411,22 @@ func GenCode(tableId int64) { err = t1.Execute(&b1, tab) var b2 bytes.Buffer err = t2.Execute(&b2, tab) - //var b3 bytes.Buffer - //err = t3.Execute(&b3, tab) - //var b4 bytes.Buffer - //err = t4.Execute(&b4, tab) - //var b5 bytes.Buffer - //err = t5.Execute(&b5, tab) - //var b6 bytes.Buffer - //err = t6.Execute(&b6, tab) - //var b7 bytes.Buffer - //err = t7.Execute(&b7, tab) + var b3 bytes.Buffer + err = t3.Execute(&b3, tab) + var b4 bytes.Buffer + err = t4.Execute(&b4, tab) + var b5 bytes.Buffer + err = t5.Execute(&b5, tab) + var b6 bytes.Buffer + err = t6.Execute(&b6, tab) + var b7 bytes.Buffer + err = t7.Execute(&b7, tab) kgo.KFile.WriteFile("./apps/"+tab.PackageName+"/entity/"+tab.TableName+".go", b1.Bytes()) kgo.KFile.WriteFile("./apps/"+tab.PackageName+"/services/"+tab.TableName+".go", b2.Bytes()) - //kgo.KFile.WriteFile("./apps/"+tab.PackageName+"/api/"+tab.TableName+".go", b3.Bytes()) - //kgo.KFile.WriteFile("./apps/"+tab.PackageName+"/router/"+tab.TableName+".go", b4.Bytes()) - //kgo.KFile.WriteFile(config.Conf.Gen.Frontpath+"/api/"+tab.PackageName+"/"+tab.ModuleName+".js", b5.Bytes()) - //kgo.KFile.WriteFile(config.Conf.Gen.Frontpath+"/views/"+tab.PackageName+"/"+tab.ModuleName+"/index.vue", b6.Bytes()) - //kgo.KFile.WriteFile(config.Conf.Gen.Frontpath+"/views/"+tab.PackageName+"/"+tab.ModuleName+"/"+"component"+"/index.vue", b7.Bytes()) + kgo.KFile.WriteFile("./apps/"+tab.PackageName+"/api/"+tab.TableName+".go", b3.Bytes()) + kgo.KFile.WriteFile("./apps/"+tab.PackageName+"/router/"+tab.TableName+".go", b4.Bytes()) + kgo.KFile.WriteFile(config.Conf.Gen.Frontpath+"/api/"+tab.PackageName+"/"+tab.ModuleName+".js", b5.Bytes()) + kgo.KFile.WriteFile(config.Conf.Gen.Frontpath+"/views/"+tab.PackageName+"/"+tab.ModuleName+"/index.vue", b6.Bytes()) + kgo.KFile.WriteFile(config.Conf.Gen.Frontpath+"/views/"+tab.PackageName+"/"+tab.ModuleName+"/"+"component"+"/editModule.vue", b7.Bytes()) } diff --git a/apps/develop/router/gen.go b/apps/develop/router/gen.go index 37de3e4..b55428d 100644 --- a/apps/develop/router/gen.go +++ b/apps/develop/router/gen.go @@ -23,10 +23,4 @@ func InitGenRouter(router *gin.RouterGroup) { gen.GET("code/:tableId", func(c *gin.Context) { ctx.NewReqCtxWithGin(c).WithLog(genCodeLog).Handle(genApi.GenCode) }) - - genApiLog := ctx.NewLogInfo("生成菜单和api配置") - gen.GET("menuAndApi/:tableId", func(c *gin.Context) { - ctx.NewReqCtxWithGin(c).WithLog(genApiLog).Handle(genApi.AutoApi) - }) - } diff --git a/apps/develop/services/gen_table.go b/apps/develop/services/gen_table.go index 31337ca..4668dcd 100644 --- a/apps/develop/services/gen_table.go +++ b/apps/develop/services/gen_table.go @@ -133,7 +133,7 @@ func (m *devGenTableModelImpl) FindTree(data entity.DevGenTable) *[]entity.DevGe db = db.Where("table_comment = ?", data.TableComment) } err := db.Find(&resData).Error - biz.ErrIsNil(err, err.Error()) + biz.ErrIsNil(err, "获取TableTree失败") for i := 0; i < len(resData); i++ { var col entity.DevGenTableColumn col.TableId = resData[i].TableId diff --git a/apps/system/api/post.go b/apps/system/api/post.go index a59cbcc..e80c712 100644 --- a/apps/system/api/post.go +++ b/apps/system/api/post.go @@ -3,8 +3,8 @@ package api import ( "errors" "fmt" - entity "pandax/apps/system/entity" - services "pandax/apps/system/services" + "pandax/apps/system/entity" + "pandax/apps/system/services" "pandax/base/biz" "pandax/base/ctx" "pandax/base/ginx" diff --git a/config.yml b/config.yml index ea82029..47b7ca3 100644 --- a/config.yml +++ b/config.yml @@ -37,7 +37,7 @@ redis: port: 6379 mysql: - host: 127.0.0.1:3306 + host: 47.104.252.2:3306 username: pandax password: pandax db-name: pandax diff --git a/resource/template/go/api.template b/resource/template/go/api.template index 8d83378..55ee496 100644 --- a/resource/template/go/api.template +++ b/resource/template/go/api.template @@ -1,188 +1,99 @@ // ========================================================================== -// GFast自动生成控制器相关代码,只生成一次,按需修改,再次生成不会覆盖. -// 生成日期:{{.table.CreateTime}} -// 生成路径: {{.table.PackageName}}/api/{{.table.BusinessName}}.go -// 生成人:{{.table.FunctionAuthor}} +// 生成日期:{{.CreatedAt}} +// 生成路径: apps/{{.PackageName}}/api/{{.TableName}}.go +// 生成人:{{.FunctionAuthor}} // ========================================================================== -//// -{{$structName := .table.BusinessName | CaseCamelLower}} - -package api - -{{$hasGStr:=false}} -{{$gjsonTag:=false}} -{{$libTag:=false}} -{{range $index,$column:=.table.Columns}} -{{if eq $column.HtmlType "checkbox"}} -{{$hasGStr = true}} -{{else if eq $column.HtmlType "images" "file" "files"}} -{{$gjsonTag = true}} -{{$libTag = true}} -{{end}} -{{end}} - import ( - {{if ne $.table.ModuleName "system"}} - sysApi "gfast/app/system/api" - {{end}} - {{if $libTag}} - "gfast/library" - {{end}} - "{{.table.PackageName}}/dao" - "{{.table.PackageName}}/service" - "github.com/gogf/gf/frame/g" - "github.com/gogf/gf/net/ghttp" - "github.com/gogf/gf/util/gvalid" - {{if $hasGStr}} - "github.com/gogf/gf/text/gstr" - {{end}} - {{if $gjsonTag}} - "github.com/gogf/gf/encoding/gjson" - {{end}} + "pandax/apps/{{.PackageName}}/entity" + "pandax/apps/{{.PackageName}}/services" + "pandax/base/ctx" + "pandax/base/ginx" + "pandax/base/utils" ) -type {{$structName}} struct { - {{if ne $.table.ModuleName "system"}} - sysApi.SystemBase - {{else}} - SystemBase - {{end}} +type {{.ClassName}}Api struct { + {{.ClassName}}App services.{{.ClassName}}Model } -var {{.table.ClassName}} = new({{$structName}}) +// @Summary {{.FunctionName}}列表数据 +// @Tags {{.FunctionName}} +// @Param pageSize query int false "页条数" +// @Param pageNum query int false "页码" +// @Success 200 {string} string "{"code": 200, "data": [...]}" +// @Router /{{.PackageName}}/{{.BusinessName}}/list [get] +// @Security +func (p *{{.ClassName}}Api) Get{{.ClassName}}List(rc *ctx.ReqCtx) { -// List 列表 -func (c *{{$structName}}) List(r *ghttp.Request) { - var req *dao.{{.table.ClassName}}SearchReq - //获取参数 - if err := r.Parse(&req); err != nil { - c.FailJsonExit(r, err.(gvalid.Error).FirstString()) + pageNum := ginx.QueryInt(rc.GinCtx, "pageNum", 1) + pageSize := ginx.QueryInt(rc.GinCtx, "pageSize", 10) + + data := entity.{{.ClassName}}{} + list, total := p.{{.ClassName}}App.FindListPage(pageNum, pageSize, data) + + rc.ResData = map[string]interface{}{ + "data": list, + "total": total, + "pageNum": pageNum, + "pageSize": pageSize, } - req.Ctx = r.GetCtx() - total, page, list, err := service.{{.table.ClassName}}.GetList(req) - if err != nil { - c.FailJsonExit(r, err.Error()) - } - result := g.Map{ - "currentPage": page, - "total": total, - "list": list, - } - c.SusJsonExit(r, result) } -// Add 添加 -func (c *{{$structName}}) Add(r *ghttp.Request) { - var req *dao.{{.table.ClassName}}AddReq - //获取参数 - if err := r.Parse(&req); err != nil { - c.FailJsonExit(r, err.(gvalid.Error).FirstString()) - } - {{range $index,$column:= .table.Columns}} - {{if eq $column.ColumnName "created_by"}} - req.CreatedBy = c.GetCurrentUser(r.GetCtx()).GetUserId() - {{end}} - {{if eq $column.HtmlType "checkbox"}} - {{$column.HtmlField}} := r.GetStrings("{{$column.HtmlField}}") - if len({{$column.HtmlField}})>0{ - req.{{$column.GoField}} = gstr.Join({{$column.HtmlField}},",") - }else{ - req.{{$column.GoField}} = "" - } - {{else if eq $column.HtmlType "images" "file" "files"}} - up{{$column.GoField}}:=gjson.New(req.{{$column.GoField}}) - for _,obj:=range up{{$column.GoField}}.Array(){ - mp := obj.(g.MapStrAny) - var err error - mp["url"],err = library.GetFilesPath(mp["url"].(string)) - if err!=nil{ - c.FailJsonExit(r, err.Error()) - } - } - req.{{$column.GoField}} = up{{$column.GoField}}.MustToJsonString() - {{end}} - {{end}} - err := service.{{.table.ClassName}}.Add(r.GetCtx(),req) - if err != nil { - c.FailJsonExit(r, err.Error()) - } - c.SusJsonExit(r, "添加成功") +// @Summary 获取{{.FunctionName}} +// @Description 获取JSON +// @Tags {{.FunctionName}} +// @Param {{.PkJsonField}} path int true "{{.PkJsonField}}" +// @Success 200 {string} string "{"code": 200, "data": [...]}" +// @Router /{{.PackageName}}/{{.BusinessName}}/{{ "{" }}{{.PkJsonField}} {{"}"}}[get] +// @Security +func (p *{{.ClassName}}Api) Get{{.ClassName}}(rc *ctx.ReqCtx) { + {{.PkJsonField}} := ginx.PathParamInt(rc.GinCtx, "{{.PkJsonField}}") + p.{{.ClassName}}App.FindOne(int64({{.PkJsonField}})) } +// @Summary 添加{{.FunctionName}} +// @Description 获取JSON +// @Tags {{.FunctionName}} +// @Accept application/json +// @Product application/json +// @Param data body entity.{{.ClassName}} true "data" +// @Success 200 {string} string "{"code": 200, "message": "添加成功"}" +// @Success 200 {string} string "{"code": 400, "message": "添加失败"}" +// @Router /{{.PackageName}}/{{.BusinessName}} [post] +// @Security X-TOKEN +func (p *{{.ClassName}}Api) Insert{{.ClassName}}(rc *ctx.ReqCtx) { + var data entity.{{.ClassName}} + ginx.BindJsonAndValid(rc.GinCtx, &data) -// Get 获取 -func (c *{{$structName}}) Get(r *ghttp.Request) { - id := r.Get{{$.table.PkColumn.GoType | CaseCamel}}("id") - info, err := service.{{.table.ClassName}}.GetInfoById(r.GetCtx(),id) - if err != nil { - c.FailJsonExit(r, err.Error()) - } - c.SusJsonExit(r, info) + p.{{.ClassName}}App.Insert(data) } -// Edit 修改 -func (c *{{$structName}}) Edit(r *ghttp.Request) { - var req *dao.{{.table.ClassName}}EditReq - //获取参数 - if err := r.Parse(&req); err != nil { - c.FailJsonExit(r, err.(gvalid.Error).FirstString()) - } - {{range $index,$column:= .table.Columns}} - {{if eq $column.ColumnName "updated_by"}} - req.UpdatedBy = c.GetCurrentUser(r.GetCtx()).GetUserId() //获取登陆用户id - {{end}} - {{if eq $column.HtmlType "checkbox"}} - {{$column.HtmlField}} := r.GetStrings("{{$column.HtmlField}}") - if len({{$column.HtmlField}})>0{ - req.{{$column.GoField}} = gstr.Join({{$column.HtmlField}},",") - }else{ - req.{{$column.GoField}} = "" - } - {{else if eq $column.HtmlType "images" "file" "files"}} - up{{$column.GoField}}:=gjson.New(req.{{$column.GoField}}) - for _,obj:=range up{{$column.GoField}}.Array(){ - mp := obj.(g.MapStrAny) - var err error - mp["url"],err = library.GetFilesPath(mp["url"].(string)) - if err!=nil{ - c.FailJsonExit(r, err.Error()) - } - } - req.{{$column.GoField}} = up{{$column.GoField}}.MustToJsonString() - {{end}} - {{end}} - err := service.{{.table.ClassName}}.Edit(r.GetCtx(),req) - if err != nil { - c.FailJsonExit(r, err.Error()) - } - c.SusJsonExit(r, "修改成功") +// @Summary 修改{{.FunctionName}} +// @Description 获取JSON +// @Tags {{.FunctionName}} +// @Accept application/json +// @Product application/json +// @Param data body entity.{{.ClassName}} true "body" +// @Success 200 {string} string "{"code": 200, "message": "添加成功"}" +// @Success 200 {string} string "{"code": 400, "message": "添加失败"}" +// @Router /{{.PackageName}}/{{.BusinessName}} [put] +// @Security X-TOKEN +func (p *{{.ClassName}}Api) Update{{.ClassName}}(rc *ctx.ReqCtx) { + var data entity.{{.ClassName}} + ginx.BindJsonAndValid(rc.GinCtx, &data) + + p.{{.ClassName}}App.Update(post) } +// @Summary 删除{{.FunctionName}} +// @Description 删除数据 +// @Tags {{.FunctionName}} +// @Param {{.PkJsonField}} path string true "{{.PkJsonField}}" +// @Success 200 {string} string "{"code": 200, "message": "删除成功"}" +// @Success 200 {string} string "{"code": 400, "message": "删除失败"}" +// @Router /{{.PackageName}}/{{.BusinessName}}/{{ "{" }}{{.PkJsonField}} {{"}"}} [delete] +func (p *{{.ClassName}}Api) Delete{{.ClassName}}(rc *ctx.ReqCtx) { -// Delete 删除 -func (c *{{$structName}}) Delete(r *ghttp.Request) { - ids := r.GetInts("ids") - err := service.{{.table.ClassName}}.DeleteByIds(r.GetCtx(),ids) - if err != nil { - c.FailJsonExit(r, err.Error()) - } - c.SusJsonExit(r, "删除成功") -} - -{{range $index,$column:= .table.Columns}} -{{if and (HasSuffix $column.ColumnName "status") (eq $column.IsList "1") }} -// Change{{$column.GoField}} 修改状态 -func (c *{{$structName}}) Change{{$column.GoField}}(r *ghttp.Request){ - var req *dao.{{$.table.ClassName}}{{$column.GoField}}Req - //获取参数 - if err := r.Parse(&req); err != nil { - c.FailJsonExit(r, err.(gvalid.Error).FirstString()) - } - if err := service.{{$.table.ClassName}}.Change{{$column.GoField}}(r.GetCtx(),req); err != nil { - c.FailJsonExit(r, err.Error()) - } else { - c.SusJsonExit(r, "状态设置成功") - } -} -{{end}} -{{end}} \ No newline at end of file + {{.PkJsonField}} := rc.GinCtx.Param("{{.PkJsonField}}") + {{.PkJsonField}}s := utils.IdsStrToIdsIntGroup({{.PkJsonField}}) + p.{{.ClassName}}App.Delete({{.PkJsonField}}s) +} \ No newline at end of file diff --git a/resource/template/go/entity.template b/resource/template/go/entity.template index 4dfb53a..b627590 100644 --- a/resource/template/go/entity.template +++ b/resource/template/go/entity.template @@ -4,20 +4,17 @@ // 生成人:{{.FunctionAuthor}} // ========================================================================== package entity +{{$hasGTime:=true}} -import ( - import "pandax/base/model" -) +{{if $hasGTime}}import "time"{{end}} -type {{.FunctionName}} struct { - model.BaseAutoModel - {{- range .Columns -}} - {{- if eq .IsQuery "1" }} - {{.GoField}} {{.GoType}} `json:"{{.JsonField}}" gorm:"type:{{.ColumnType}};comment:{{.ColumnComment}}" binding:"required"` - {{- end }} - {{- end }} + +type {{.ClassName}} struct { + {{range $index, $column := .Columns}} + {{if eq $column.IsPk "1"}} {{$column.GoField}} {{if eq $column.GoType "Time"}}time.Time{{else}}{{$column.GoType}}{{end}} `gorm:"primary_key;{{if eq $column.IsIncrement "1"}}AUTO_INCREMENT{{end}}" json:"{{$column.JsonField}}"` // {{$column.ColumnComment}} {{else}} {{$column.GoField}} {{if eq $column.GoType "Time"}}time.Time{{else}}{{$column.GoType}}{{end}} `gorm:"{{$column.ColumnName}};type:{{$column.ColumnType}};comment:{{$column.ColumnComment}}" json:"{{$column.JsonField}}" {{if eq $column.IsRequired "1"}}binding:"required"{{end}}` // {{$column.ColumnComment}} {{end}} + {{end}} } -func ({{.FunctionName}}) TableName() string { +func ({{.ClassName}}) TableName() string { return "{{.TableName}}" } diff --git a/resource/template/go/router.template b/resource/template/go/router.template index 761bfda..3a9248a 100644 --- a/resource/template/go/router.template +++ b/resource/template/go/router.template @@ -1,57 +1,46 @@ // ========================================================================== -// GFast自动生成路由代码,只生成一次,按需修改,再次生成不会覆盖. -// 生成日期:{{.table.CreateTime}} -// 生成路径: {{.table.PackageName}}/router/{{.table.BusinessName}}.go -// 生成人:{{.table.FunctionAuthor}} +// 生成日期:{{.CreatedAt}} +// 生成路径: apps/{{.PackageName}}/router/{{.TableName}}.go +// 生成人:{{.FunctionAuthor}} // ========================================================================== -//// package router import ( - "{{.table.PackageName}}/api" - "gfast/middleware" - "github.com/gogf/gf/frame/g" - "github.com/gogf/gf/net/ghttp" - {{if ne $.table.ModuleName "system"}} - sysApi "gfast/app/system/api" - {{end}} + "github.com/gin-gonic/gin" + "pandax/apps/{{.PackageName}}/api" + "pandax/apps/{{.PackageName}}/services" + "pandax/base/ctx" ) -{{$plugin:=""}} -{{if ContainsI $.table.PackageName "plugins"}} -{{$plugin = "plugins/"}} -{{end}} +func Init{{.ClassName}}Router(router *gin.RouterGroup) { + s := &api.{{.ClassName}}Api{ + {{.ClassName}}App: services.{{.ClassName}}ModelDao, + } + routerGroup := router.Group("{{.BusinessName}}") + {{.ClassName}}ListLog := ctx.NewLogInfo("获取{{.FunctionName}}分页列表") + routerGroup.GET("list", func(c *gin.Context) { + ctx.NewReqCtxWithGin(c).WithLog({{.ClassName}}ListLog).Handle(s.Get{{.ClassName}}List) + }) -//加载路由 -func init() { - s := g.Server() - s.Group("/", func(group *ghttp.RouterGroup) { - group.Group("/{{$plugin}}{{.table.ModuleName}}", func(group *ghttp.RouterGroup) { - group.Group("/{{.table.BusinessName | CaseCamelLower}}", func(group *ghttp.RouterGroup) { - //gToken拦截器 - {{if ne $.table.ModuleName "system"}} - sysApi.GfToken.AuthMiddleware(group) - {{else}} - api.GfToken.AuthMiddleware(group) - {{end}} - //context拦截器 - group.Middleware(middleware.Ctx, middleware.Auth) - {{if ne $.table.ModuleName "system"}} - //后台操作日志记录 - group.Hook("/*", ghttp.HookAfterOutput, sysApi.SysOperLog.OperationLog) - {{end}} - group.GET("list", api.{{.table.ClassName}}.List) - group.GET("get", api.{{.table.ClassName}}.Get) - group.POST("add", api.{{.table.ClassName}}.Add) - group.PUT("edit", api.{{.table.ClassName}}.Edit) - group.DELETE("delete", api.{{.table.ClassName}}.Delete) - {{range $index,$column:= .table.Columns}} - {{if and (HasSuffix $column.ColumnName "status") (eq $column.IsList "1") }} - group.PUT("change{{$column.GoField}}",api.{{$.table.ClassName}}.Change{{$column.GoField}}) - {{end}} - {{end}} - }) - }) - }) + {{.ClassName}}Log := ctx.NewLogInfo("获取{{.FunctionName}}信息") + routerGroup.GET(":{{.PkJsonField}}", func(c *gin.Context) { + ctx.NewReqCtxWithGin(c).WithLog({{.ClassName}}Log).Handle(s.Get{{.ClassName}}) + }) + + insert{{.ClassName}}Log := ctx.NewLogInfo("添加{{.FunctionName}}信息") + routerGroup.POST("", func(c *gin.Context) { + ctx.NewReqCtxWithGin(c).WithLog(insert{{.ClassName}}Log).Handle(s.Insert{{.ClassName}}) + }) + + update{{.ClassName}}Log := ctx.NewLogInfo("修改{{.FunctionName}}信息") + routerGroup.PUT("", func(c *gin.Context) { + ctx.NewReqCtxWithGin(c).WithLog(update{{.ClassName}}Log).Handle(s.Update{{.ClassName}}) + }) + + delete{{.ClassName}}Log := ctx.NewLogInfo("删除{{.FunctionName}}信息") + routerGroup.DELETE(":{{.PkJsonField}}", func(c *gin.Context) { + ctx.NewReqCtxWithGin(c).WithLog(delete{{.ClassName}}Log).Handle(s.Delete{{.ClassName}}) + }) } + diff --git a/resource/template/go/service.template b/resource/template/go/service.template index 7dc97ae..f8063ed 100644 --- a/resource/template/go/service.template +++ b/resource/template/go/service.template @@ -13,12 +13,12 @@ import ( ) type ( - {{.FunctionName}}Model interface { - Insert(data entity.{{.FunctionName}}) *entity.{{.FunctionName}} - FindOne({{.PkJsonField}} int64) *entity.{{.FunctionName}} - FindListPage(page, pageSize int, data entity.{{.FunctionName}}) (*[]entity.{{.FunctionName}}, int64) - FindList(data entity.{{ .FunctionName }}) *[]entity.{{.FunctionName}} - Update(data entity.{{.FunctionName}}) *entity.{{.FunctionName}} + {{.ClassName}}Model interface { + Insert(data entity.{{.ClassName}}) *entity.{{.ClassName}} + FindOne({{.PkJsonField}} int64) *entity.{{.ClassName}} + FindListPage(page, pageSize int, data entity.{{.ClassName}}) (*[]entity.{{.ClassName}}, int64) + FindList(data entity.{{ .ClassName }}) *[]entity.{{.ClassName}} + Update(data entity.{{.ClassName}}) *entity.{{.ClassName}} Delete({{.PkJsonField}}s []int64) } @@ -26,10 +26,9 @@ type ( table string } ) +{{$model := .ClassName }} -{{$model := .FunctionName }} - -var {{.FunctionName}}ModelDao {{.FunctionName}}Model = &{{.BusinessName}}ModelImpl{ +var {{.ClassName}}ModelDao {{.ClassName}}Model = &{{.BusinessName}}ModelImpl{ table: `{{.TableName}}`, } diff --git a/resource/template/js/api.template b/resource/template/js/api.template index 8b8a99e..af6c6a4 100644 --- a/resource/template/js/api.template +++ b/resource/template/js/api.template @@ -1,102 +1,44 @@ -import request from '@/utils/request' +import request from '/@/utils/request'; -{{$businessName := .table.BusinessName | CaseCamelLower}} - -{{$plugin:=""}} -{{if ContainsI $.table.PackageName "plugins"}} -{{$plugin = "plugins/"}} -{{end}} - - -// 查询{{.table.FunctionName}}列表 -export function list{{.table.ClassName}}(query) { - return request({ - url: '/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}/list', - method: 'get', - params: query - }) +// 查询{{.FunctionName}}列表 +export function list{{.ClassName}}(query:any) { + return request({ + url: '/{{.PackageName}}/{{.BusinessName}}/list', + method: 'get', + params: query + }) } -// 查询{{.table.FunctionName}}详细 -export function get{{.table.ClassName}}({{.table.PkColumn.HtmlField}}) { - return request({ - url: '/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}/get', - method: 'get', - params: { - id: {{.table.PkColumn.HtmlField}}.toString() - } - }) +// 查询{{.FunctionName}}详细 +export function get{{.ClassName}}({{.PkJsonField}}:number) { + return request({ + url: '/{{.PackageName}}/{{.BusinessName}}/' + {{.PkJsonField}}, + method: 'get' + }) } -// 新增{{.table.FunctionName}} -export function add{{.table.ClassName}}(data) { - return request({ - url: '/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}/add', - method: 'post', - data: data - }) +// 新增{{.FunctionName}} +export function add{{.ClassName}}(data:any) { + return request({ + url: '/{{.PackageName}}/{{.BusinessName}}', + method: 'post', + data: data + }) } -// 修改{{.table.FunctionName}} -export function update{{.table.ClassName}}(data) { - return request({ - url: '/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}/edit', - method: 'put', - data: data - }) +// 修改{{.FunctionName}} +export function update{{.ClassName}}(data:any) { + return request({ + url: '/{{.PackageName}}/{{.BusinessName}}', + method: 'put', + data: data + }) } -// 删除{{.table.FunctionName}} -export function del{{.table.ClassName}}({{.table.PkColumn.HtmlField}}s) { - return request({ - url: '/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}/delete', - method: 'delete', - data:{ - ids:{{.table.PkColumn.HtmlField}}s - } - }) -} - - -{{$getUserList:=false}} - -{{range $index,$column:= .table.Columns}} -{{if and (HasSuffix $column.ColumnName "status") (eq $column.IsList "1") }} -// {{$.table.FunctionName}}{{$column.ColumnComment}}修改 -export function change{{$.table.ClassName}}{{$column.GoField}}({{$.table.PkColumn.HtmlField}},{{$column.HtmlField}}) { - const data = { - {{$.table.PkColumn.HtmlField}}, - {{$column.HtmlField}} - } - return request({ - url: '/{{$plugin}}{{$.table.ModuleName}}/{{$businessName}}/change{{$column.GoField}}', - method: 'put', - data:data - }) -} -{{end}} -{{if ne $column.LinkTableName ""}} -// 关联{{$column.LinkTableName}}表选项 -export function list{{$column.LinkTableClass}}(query){ - return request({ - url: '/{{$plugin}}{{$.table.ModuleName}}/{{$column.LinkTableName | CaseCamelLower}}/list', - method: 'get', - params: query - }) -} -{{end}} -{{if eq $column.HtmlField "createdBy" "updatedBy"}} -{{$getUserList = true}} -{{end}} -{{end}} - -{{if $getUserList}} -//获取用户信息列表 -export function getUserList(uIds){ - return request({ - url: '/system/auth/usersGet', - method: 'get', - params: {ids:uIds} - }) -} -{{end}} \ No newline at end of file +// 删除{{.FunctionName}} +export function del{{.ClassName}}({{.PkJsonField}}: string) { + return request({ + url: '/{{.PackageName}}/{{.BusinessName}}/' + {{.PkJsonField}}, + method: 'delete' + }) +} \ No newline at end of file diff --git a/resource/template/vue/edit-vue.template b/resource/template/vue/edit-vue.template index 17e9815..62e77e9 100644 --- a/resource/template/vue/edit-vue.template +++ b/resource/template/vue/edit-vue.template @@ -1,536 +1,151 @@ - \ No newline at end of file + diff --git a/resource/template/vue/list-vue.template b/resource/template/vue/list-vue.template index 3153192..a419a40 100644 --- a/resource/template/vue/list-vue.template +++ b/resource/template/vue/list-vue.template @@ -1,290 +1,161 @@