This commit is contained in:
XM-GO
2023-08-22 15:53:15 +08:00
parent 332d7721c9
commit 707308157a
41 changed files with 292 additions and 1880 deletions

View File

@@ -1,48 +1,30 @@
package api
import (
"github.com/XM-GO/PandaKit/restfulx"
"pandax/apps/develop/gen"
"pandax/apps/develop/services"
"pandax/base/ginx"
)
type GenApi struct {
GenTableApp services.SysGenTableModel
}
// @Summary 代码视图
// @Description 获取JSON
// @Tags 工具 / 生成工具
// @Param tableId path int true "tableId"
// @Success 200 {string} string "{"code": 200, "data": [...]}"
// @Router /develop/code/gen/preview/{tableId} [get]
// @Security X-TOKEN
func (e *GenApi) Preview(rc *ginx.ReqCtx) {
tableId := ginx.PathParamInt(rc.GinCtx, "tableId")
// Preview 代码视图
func (e *GenApi) Preview(rc *restfulx.ReqCtx) {
tableId := restfulx.PathParamInt(rc, "tableId")
rc.ResData = gen.Preview(int64(tableId))
}
// @Summary 代码生成
// @Description 获取JSON
// @Tags 工具 / 生成工具
// @Param tableId path int true "tableId"
// @Success 200 {string} string "{"code": 200, "data": [...]}"
// @Router /develop/code/gen/code/{tableId} [get]
// @Security X-TOKEN
func (e *GenApi) GenCode(rc *ginx.ReqCtx) {
tableId := ginx.PathParamInt(rc.GinCtx, "tableId")
// GenCode 代码生成
func (e *GenApi) GenCode(rc *restfulx.ReqCtx) {
tableId := restfulx.PathParamInt(rc, "tableId")
gen.GenCode(int64(tableId))
}
// @Summary 配置生成
// @Description 生成API和菜单
// @Tags 工具 / 生成工具
// @Param tableId path int true "tableId"
// @Success 200 {string} string "{"code": 200, "data": [...]}"
// @Router /develop/code/gen/configure/{tableId} [get]
// @Security X-TOKEN
func (e *GenApi) GenConfigure(rc *ginx.ReqCtx) {
tableId := ginx.PathParamInt(rc.GinCtx, "tableId")
menuId := ginx.QueryInt(rc.GinCtx, "menuId", 0)
// GenConfigure 配置生成
func (e *GenApi) GenConfigure(rc *restfulx.ReqCtx) {
tableId := restfulx.PathParamInt(rc, "tableId")
menuId := restfulx.QueryInt(rc, "menuId", 0)
gen.GenConfigure(tableId, menuId)
}

View File

@@ -1,11 +1,13 @@
package api
import (
"github.com/XM-GO/PandaKit/model"
"github.com/XM-GO/PandaKit/restfulx"
"github.com/XM-GO/PandaKit/utils"
"pandax/apps/develop/api/vo"
"pandax/apps/develop/entity"
"pandax/apps/develop/gen"
"pandax/apps/develop/services"
"pandax/base/ginx"
"pandax/base/utils"
"strings"
"sync"
)
@@ -14,104 +16,65 @@ type GenTableApi struct {
GenTableApp services.SysGenTableModel
}
// @Summary 分页列表数据 / page list data
// @Description 数据库表列分页列表 / database table column page list
// @Tags 工具 / 生成工具
// @Param tableName query string false "tableName / 数据表名称"
// @Param pageSize query int false "pageSize / 页条数"
// @Param pageNum query int false "pageNum / 页码"
// @Success 200 {string} string "{"code": 200, "data": [...]}"
// @Router /develop/code/table/db/list [get]
func (g *GenTableApi) GetDBTableList(rc *ginx.ReqCtx) {
pageNum := ginx.QueryInt(rc.GinCtx, "pageNum", 1)
pageSize := ginx.QueryInt(rc.GinCtx, "pageSize", 10)
tableName := rc.GinCtx.Query("tableName")
// GetDBTableList 分页列表数据 / page list data
func (g *GenTableApi) GetDBTableList(rc *restfulx.ReqCtx) {
pageNum := restfulx.QueryInt(rc, "pageNum", 1)
pageSize := restfulx.QueryInt(rc, "pageSize", 10)
tableName := restfulx.QueryParam(rc, "tableName")
list, total := g.GenTableApp.FindDbTablesListPage(pageNum, pageSize, entity.DBTables{TableName: tableName})
rc.ResData = map[string]any{
"data": list,
"total": total,
"pageNum": pageNum,
"pageSize": pageSize,
rc.ResData = model.ResultPage{
Total: total,
PageNum: int64(pageNum),
PageSize: int64(pageNum),
Data: list,
}
}
// @Summary 分页列表数据
// @Description 生成表分页列表
// @Tags 工具 / 生成工具
// @Param tableName query string false "tableName / 数据表名称"
// @Param tableComment query string false "tableComment / 数据表描述"
// @Param pageSize query int false "pageSize / 页条数"
// @Param pageIndex query int false "pageIndex / 页码"
// @Success 200 {string} string "{"code": 200, "data": [...]}"
// @Router /develop/code/table/list [get]
func (g *GenTableApi) GetTablePage(rc *ginx.ReqCtx) {
pageNum := ginx.QueryInt(rc.GinCtx, "pageNum", 1)
pageSize := ginx.QueryInt(rc.GinCtx, "pageSize", 10)
tableName := rc.GinCtx.Query("tableName")
tableComment := rc.GinCtx.Query("tableComment")
// GetTablePage 分页列表数据
func (g *GenTableApi) GetTablePage(rc *restfulx.ReqCtx) {
pageNum := restfulx.QueryInt(rc, "pageNum", 1)
pageSize := restfulx.QueryInt(rc, "pageSize", 10)
tableName := restfulx.QueryParam(rc, "tableName")
tableComment := restfulx.QueryParam(rc, "tableComment")
list, total := g.GenTableApp.FindListPage(pageNum, pageSize, entity.DevGenTable{TableName: tableName, TableComment: tableComment})
rc.ResData = map[string]any{
"data": list,
"total": total,
"pageNum": pageNum,
"pageSize": pageSize,
rc.ResData = model.ResultPage{
Total: total,
PageNum: int64(pageNum),
PageSize: int64(pageNum),
Data: list,
}
}
// @Summary 获取表信息
// @Description 获取JSON
// @Tags 工具 / 生成工具
// @Param tableId path int true "tableId"
// @Success 200 {string} string "{"code": 200, "data": [...]}"
// @Router /develop/code/table/info/{tableId} [get]
// @Security Bearer
func (g *GenTableApi) GetTableInfo(rc *ginx.ReqCtx) {
tableId := ginx.PathParamInt(rc.GinCtx, "tableId")
// GetTableInfo 获取表信息
func (g *GenTableApi) GetTableInfo(rc *restfulx.ReqCtx) {
tableId := restfulx.PathParamInt(rc, "tableId")
result := g.GenTableApp.FindOne(entity.DevGenTable{TableId: int64(tableId)}, true)
mp := make(map[string]any)
mp["list"] = result.Columns
mp["info"] = result
rc.ResData = mp
rc.ResData = vo.TableInfoVo{
List: result.Columns,
Info: *result,
}
}
// @Summary 获取表信息
// @Description 获取JSON
// @Tags 工具 / 生成工具
// @Param tableName query string false "tableName / 数据表名称"
// @Success 200 {string} string "{"code": 200, "data": [...]}"
// @Router /develop/code/table/info/tableName [get]
// @Security X-TOKEN
func (g *GenTableApi) GetTableInfoByName(rc *ginx.ReqCtx) {
tableName := rc.GinCtx.Query("tableName")
// GetTableInfoByName 获取表信息
func (g *GenTableApi) GetTableInfoByName(rc *restfulx.ReqCtx) {
tableName := restfulx.QueryParam(rc, "tableName")
result := g.GenTableApp.FindOne(entity.DevGenTable{TableName: tableName}, true)
mp := make(map[string]any)
mp["list"] = result.Columns
mp["info"] = result
rc.ResData = mp
rc.ResData = vo.TableInfoVo{
List: result.Columns,
Info: *result,
}
}
// @Summary 获取树表信息
// @Description 获取JSON
// @Tags 工具 / 生成工具
// @Success 200 {string} string "{"code": 200, "data": [...]}"
// @Router /develop/code/table/tableTree [get]
// @Security X-TOKEN
func (g *GenTableApi) GetTableTree(rc *ginx.ReqCtx) {
// GetTableTree 获取树表信息
func (g *GenTableApi) GetTableTree(rc *restfulx.ReqCtx) {
rc.ResData = g.GenTableApp.FindTree(entity.DevGenTable{})
}
// @Summary 添加表结构
// @Description 添加表结构
// @Tags 工具 / 生成工具
// @Accept application/json
// @Product application/json
// @Param tableName query string false "tableName / 数据表名称"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /develop/code/table [post]
// @Security Bearer
func (g *GenTableApi) Insert(rc *ginx.ReqCtx) {
tablesList := strings.Split(rc.GinCtx.Query("tables"), ",")
// Insert 添加表结构
func (g *GenTableApi) Insert(rc *restfulx.ReqCtx) {
tablesList := strings.Split(restfulx.QueryParam(rc, "tables"), ",")
wg := sync.WaitGroup{}
for i := 0; i < len(tablesList); i++ {
@@ -126,32 +89,16 @@ func (g *GenTableApi) Insert(rc *ginx.ReqCtx) {
wg.Wait()
}
// @Summary 修改表结构
// @Description 修改表结构
// @Tags 工具 / 生成工具
// @Accept application/json
// @Product application/json
// @Param data body entity.DevGenTable true "body"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /develop/code/table [put]
// @Security Bearer
func (g *GenTableApi) Update(rc *ginx.ReqCtx) {
// Update 修改表结构
func (g *GenTableApi) Update(rc *restfulx.ReqCtx) {
var data entity.DevGenTable
ginx.BindJsonAndValid(rc.GinCtx, &data)
restfulx.BindJsonAndValid(rc, &data)
g.GenTableApp.Update(data)
}
// Delete
// @Summary 删除表结构
// @Description 删除表结构
// @Tags 工具 / 生成工具
// @Param tableId path int true "tableId"
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
// @Success 200 {string} string "{"code": -1, "message": "删除失败"}"
// @Router /develop/code/table/{tableId} [delete]
func (g *GenTableApi) Delete(rc *ginx.ReqCtx) {
tableIds := rc.GinCtx.Param("tableId")
// Delete 删除表结构
func (g *GenTableApi) Delete(rc *restfulx.ReqCtx) {
tableIds := restfulx.PathParam(rc, "tableId")
group := utils.IdsStrToIdsIntGroup(tableIds)
g.GenTableApp.Delete(group)
}

View File

@@ -6,7 +6,6 @@ import (
"github.com/XM-GO/PandaKit/biz"
"github.com/XM-GO/PandaKit/utils"
"github.com/kakuilan/kgo"
"log"
"os"
"pandax/apps/develop/entity"
"pandax/apps/develop/services"
@@ -380,7 +379,7 @@ func Preview(tableId int64) map[string]any {
mp := make(map[string]any)
mp["template/entity.template"] = b1.String()
mp["template/service.template"] = b2.String()
mp["template/services.template"] = b2.String()
mp["template/api.template"] = b3.String()
mp["template/router.template"] = b4.String()
mp["template/jsApi.template"] = b5.String()
@@ -398,7 +397,7 @@ func GenCode(tableId int64) {
t1, err := template.ParseFiles("resource/template/go/entity.template")
biz.ErrIsNil(err, "entity模版读取失败")
t2, err := template.ParseFiles("resource/template/go/service.template")
t2, err := template.ParseFiles("resource/template/go/services.template")
biz.ErrIsNil(err, "service模版读取失败")
t3, err := template.ParseFiles("resource/template/go/api.template")
@@ -473,7 +472,6 @@ func GenConfigure(tableId, parentId int) {
CreateBy: "admin",
}
insert := sysServices.SysMenuModelDao.Insert(menu)
log.Println("insert", insert.MenuId)
//新增按钮
menuA := sysEntity.SysMenu{
ParentId: insert.MenuId,

View File

@@ -1,28 +1,50 @@
package router
import (
"github.com/gin-gonic/gin"
"github.com/XM-GO/PandaKit/restfulx"
restfulspec "github.com/emicklei/go-restful-openapi/v2"
"github.com/emicklei/go-restful/v3"
"pandax/apps/develop/api"
"pandax/apps/develop/services"
"pandax/base/ginx"
)
func InitGenRouter(router *gin.RouterGroup) {
func InitGenRouter(container *restful.Container) {
// 登录日志
genApi := &api.GenApi{
s := &api.GenApi{
GenTableApp: services.DevGenTableModelDao,
}
gen := router.Group("gen")
gen.GET("preview/:tableId", func(c *gin.Context) {
ginx.NewReqCtx(c).WithLog("获取生成代码视图").Handle(genApi.Preview)
})
ws := new(restful.WebService)
ws.Path("/develop/code/gen").Produces(restful.MIME_JSON)
tags := []string{"codegen"}
gen.GET("code/:tableId", func(c *gin.Context) {
ginx.NewReqCtx(c).WithLog("生成代码").Handle(genApi.GenCode)
})
ws.Route(ws.GET("/preview/{tableId}").To(func(request *restful.Request, response *restful.Response) {
restfulx.NewReqCtx(request, response).WithLog("获取生成代码视图").Handle(s.Preview)
}).
Doc("获取生成代码视图").
Param(ws.PathParameter("tableId", "Id").DataType("int").DefaultValue("1")).
Metadata(restfulspec.KeyOpenAPITags, tags).
Returns(200, "OK", map[string]any{}).
Returns(404, "Not Found", nil))
gen.GET("configure/:tableId", func(c *gin.Context) {
ginx.NewReqCtx(c).WithLog("生成配置").Handle(genApi.GenConfigure)
})
ws.Route(ws.GET("/code/{tableId}").To(func(request *restful.Request, response *restful.Response) {
restfulx.NewReqCtx(request, response).WithLog("生成代码").Handle(s.GenCode)
}).
Doc("生成代码").
Param(ws.PathParameter("tableId", "Id").DataType("int").DefaultValue("1")).
Metadata(restfulspec.KeyOpenAPITags, tags).
Returns(200, "OK", map[string]any{}).
Returns(404, "Not Found", nil))
ws.Route(ws.GET("/configure/{tableId}").To(func(request *restful.Request, response *restful.Response) {
restfulx.NewReqCtx(request, response).WithLog("生成配置").Handle(s.GenConfigure)
}).
Doc("生成配置").
Param(ws.PathParameter("tableId", "Id").DataType("int").DefaultValue("1")).
Metadata(restfulspec.KeyOpenAPITags, tags).
Returns(200, "OK", map[string]any{}).
Returns(404, "Not Found", nil))
container.Add(ws)
}

View File

@@ -1,48 +1,81 @@
package router
import (
"github.com/gin-gonic/gin"
"github.com/XM-GO/PandaKit/model"
"github.com/XM-GO/PandaKit/restfulx"
restfulspec "github.com/emicklei/go-restful-openapi/v2"
"github.com/emicklei/go-restful/v3"
"pandax/apps/develop/api"
"pandax/apps/develop/api/vo"
"pandax/apps/develop/entity"
"pandax/apps/develop/services"
"pandax/base/ginx"
)
func InitGenTableRouter(router *gin.RouterGroup) {
func InitGenTableRouter(container *restful.Container) {
// 登录日志
genApi := &api.GenTableApi{
s := &api.GenTableApi{
GenTableApp: services.DevGenTableModelDao,
}
gen := router.Group("table")
gen.GET("/db/list", func(c *gin.Context) {
ginx.NewReqCtx(c).WithLog("获取数据库列表").Handle(genApi.GetDBTableList)
})
ws := new(restful.WebService)
ws.Path("/develop/code/table").Produces(restful.MIME_JSON)
tags := []string{"codetable"}
gen.GET("list", func(c *gin.Context) {
ginx.NewReqCtx(c).WithLog("获取列表").Handle(genApi.GetTablePage)
})
ws.Route(ws.GET("/db/list").To(func(request *restful.Request, response *restful.Response) {
restfulx.NewReqCtx(request, response).WithLog("获取数据库列表").Handle(s.GetDBTableList)
}).
Doc("获取数据库列表").
Metadata(restfulspec.KeyOpenAPITags, tags).
Returns(200, "OK", model.ResultPage{}))
gen.GET("/info/tableName", func(c *gin.Context) {
ginx.NewReqCtx(c).WithLog("获取表信息By tableName").Handle(genApi.GetTableInfoByName)
})
ws.Route(ws.GET("/list").To(func(request *restful.Request, response *restful.Response) {
restfulx.NewReqCtx(request, response).WithLog("获取表列表").Handle(s.GetTablePage)
}).
Doc("获取表列表").
Metadata(restfulspec.KeyOpenAPITags, tags).
Returns(200, "OK", model.ResultPage{}))
gen.GET("info/:tableId", func(c *gin.Context) {
ginx.NewReqCtx(c).WithLog("获取表信息").Handle(genApi.GetTableInfo)
})
ws.Route(ws.GET("/info/tableName").To(func(request *restful.Request, response *restful.Response) {
restfulx.NewReqCtx(request, response).WithLog("获取表信息By tableName").Handle(s.GetTableInfoByName)
}).
Doc("获取表信息By tableName").
Metadata(restfulspec.KeyOpenAPITags, tags).
Returns(200, "OK", vo.TableInfoVo{}))
gen.GET("tableTree", func(c *gin.Context) {
ginx.NewReqCtx(c).WithLog("获取表").Handle(genApi.GetTableTree)
})
ws.Route(ws.GET("/info/{tableId}").To(func(request *restful.Request, response *restful.Response) {
restfulx.NewReqCtx(request, response).WithLog("获取表信息").Handle(s.GetTableInfo)
}).
Doc("获取表信息").
Param(ws.PathParameter("tenantId", "租户Id").DataType("int").DefaultValue("1")).
Metadata(restfulspec.KeyOpenAPITags, tags).
Returns(200, "OK", vo.TableInfoVo{}).
Returns(404, "Not Found", nil))
gen.POST("", func(c *gin.Context) {
ginx.NewReqCtx(c).WithLog("新增表").Handle(genApi.Insert)
})
ws.Route(ws.GET("/tableTree").To(func(request *restful.Request, response *restful.Response) {
restfulx.NewReqCtx(request, response).WithLog("获取表树").Handle(s.GetTableTree)
}).
Doc("获取表树").
Metadata(restfulspec.KeyOpenAPITags, tags).
Returns(200, "OK", []entity.DevGenTable{}))
gen.PUT("", func(c *gin.Context) {
ginx.NewReqCtx(c).WithLog("修改表").Handle(genApi.Update)
})
ws.Route(ws.POST("").To(func(request *restful.Request, response *restful.Response) {
restfulx.NewReqCtx(request, response).WithLog("新增表").Handle(s.Insert)
}).
Doc("新增表").
Metadata(restfulspec.KeyOpenAPITags, tags)) // from the request
gen.DELETE(":tableId", func(c *gin.Context) {
ginx.NewReqCtx(c).WithLog("删除表").Handle(genApi.Delete)
})
ws.Route(ws.PUT("").To(func(request *restful.Request, response *restful.Response) {
restfulx.NewReqCtx(request, response).WithLog("修改表").Handle(s.Update)
}).
Doc("修改表").
Metadata(restfulspec.KeyOpenAPITags, tags)) // from the request
ws.Route(ws.DELETE("/{tableId}").To(func(request *restful.Request, response *restful.Response) {
restfulx.NewReqCtx(request, response).WithLog("删除表").Handle(s.Delete)
}).
Doc("删除表").
Metadata(restfulspec.KeyOpenAPITags, tags).
Param(ws.PathParameter("tableId", "多id 1,2,3").DataType("string")))
container.Add(ws)
}

View File

@@ -53,7 +53,7 @@ func (m *devGenTableModelImpl) FindDbTablesListPage(page, pageSize int, data ent
if global.Conf.Server.DbType == "postgresql" {
db = db.Where("table_schema = ? ", "public")
}
db = db.Where("table_name NOT LIKE 'dev_%'")
//db = db.Where("table_name NOT LIKE 'dev_%'")
if data.TableName != "" {
db = db.Where("table_name like ?", "%"+data.TableName+"%")
}