代码生成

This commit is contained in:
yxh
2021-08-04 22:35:31 +08:00
parent 26e0689367
commit ba8ea9c8cf
21 changed files with 3440 additions and 10 deletions
+198
View File
@@ -0,0 +1,198 @@
/*
* @desc:代码生成
* @company:云南省奇讯科技有限公司
* @Author: yixiaohu
* @Date: 2021/7/22 15:11
*/
package api
import (
comModel "gfast/app/common/model"
"gfast/app/system/dao"
"gfast/app/system/model"
"gfast/app/system/service"
"github.com/gogf/gf/encoding/gjson"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/net/ghttp"
"github.com/gogf/gf/util/gconv"
"github.com/gogf/gf/util/gvalid"
"strings"
)
type toolsGenTable struct {
systemBase
}
var ToolsGenTable = new(toolsGenTable)
// TableList 代码生成页列表数据
func (c *toolsGenTable) TableList(r *ghttp.Request) {
var req *dao.ToolsGenTableSearchReq
//获取参数
if err := r.Parse(&req); err != nil {
c.FailJsonExit(r, err.(gvalid.Error).FirstString())
}
total, list, err := service.ToolsGenTable.SelectListByPage(req)
if err != nil {
c.FailJsonExit(r, err.Error())
}
c.SusJsonExit(r, g.Map{
"total": total,
"list": list,
})
}
// DataList 导入表格页列表数据
func (c *toolsGenTable) DataList(r *ghttp.Request) {
var req *dao.ToolsGenTableSearchReq
//获取参数
if err := r.Parse(&req); err != nil {
c.FailJsonExit(r, err.(gvalid.Error).FirstString())
}
total, list, err := service.ToolsGenTable.SelectDbTableList(req)
if err != nil {
c.FailJsonExit(r, err.Error())
}
c.SusJsonExit(r, g.Map{
"total": total,
"list": list,
})
}
// ImportTableSave 导入表结构操作
func (c *toolsGenTable) ImportTableSave(r *ghttp.Request) {
tables := r.GetString("tables")
if tables == "" {
c.FailJsonExit(r, "请选择要导入的表格")
}
tableArr := strings.Split(tables, ",")
tableList, err := service.ToolsGenTable.SelectDbTableListByNames(tableArr)
if err != nil {
c.FailJsonExit(r, err.Error())
}
if tableList == nil {
c.FailJsonExit(r, "表信息不存在")
}
err = service.ToolsGenTable.ImportGenTable(tableList)
if err != nil {
c.FailJsonExit(r, err.Error())
}
c.SusJsonExit(r, "导入数据表成功")
}
// ColumnList 表格字段列表数据
func (c *toolsGenTable) ColumnList(r *ghttp.Request) {
tableId := r.GetInt64("tableId")
if tableId == 0 {
c.FailJsonExit(r, "参数错误")
}
list, err := service.ToolsGenTableColumn.SelectGenTableColumnListByTableId(tableId)
if err != nil {
c.FailJsonExit(r, err.Error())
}
var tableInfo *model.ToolsGenTable
var tableMap g.Map
tableInfo, err = service.ToolsGenTable.GetTableInfoByTableId(tableId)
if err != nil {
c.FailJsonExit(r, err.Error())
}
tableMap = gconv.Map(tableInfo)
//如果是树表则设置树表配置
if tableInfo != nil && tableInfo.TplCategory == "tree" {
options := gjson.New(tableInfo.Options)
tableMap["treeCode"] = options.Get("treeCode")
tableMap["treeParentCode"] = options.Get("treeParentCode")
tableMap["treeName"] = options.Get("treeName")
}
res := g.Map{
"rows": list,
"info": tableMap,
}
c.SusJsonExit(r, res)
}
// RelationTable 获取可选的关联表
func (c *toolsGenTable) RelationTable(r *ghttp.Request) {
//获取表数据列表
_, tableList, err := service.ToolsGenTable.SelectListByPage(&dao.ToolsGenTableSearchReq{
PageReq: comModel.PageReq{
PageSize: 1000,
},
})
if err != nil {
c.FailJsonExit(r, err.Error())
}
//获取所有字段
allColumns, err := service.ToolsGenTableColumn.GetAllTableColumns()
if err != nil {
c.FailJsonExit(r, err.Error())
}
tableColumns := make([]*dao.ToolsGenTableColumnsRes, len(tableList))
for k, v := range tableList {
tableColumns[k] = &dao.ToolsGenTableColumnsRes{
ToolsGenTable: v,
Columns: make([]*model.ToolsGenTableColumn, 0),
}
for _, cv := range allColumns {
if cv.TableId == v.TableId {
tableColumns[k].Columns = append(tableColumns[k].Columns, cv)
}
}
}
c.SusJsonExit(r, tableColumns)
}
// EditSave 编辑表格生成信息
func (c *toolsGenTable) EditSave(r *ghttp.Request) {
var req *dao.ToolsGenTableEditReq
//获取参数
if err := r.Parse(&req); err != nil {
c.FailJsonExit(r, err.(gvalid.Error).FirstString())
}
err := service.ToolsGenTable.SaveEdit(req)
if err != nil {
c.FailJsonExit(r, err.Error())
}
c.SusJsonExit(r, "设置成功")
}
// Preview 代码预览
func (c *toolsGenTable) Preview(r *ghttp.Request) {
tableId := r.GetInt64("tableId")
if tableId == 0 {
c.FailJsonExit(r, "参数错误")
}
data, _, err := service.ToolsGenTable.GenData(tableId, r.GetCtx())
if err != nil {
c.FailJsonExit(r, err.Error())
}
c.SusJsonExit(r, data)
}
// BatchGenCode 代码生成
func (c *toolsGenTable) BatchGenCode(r *ghttp.Request) {
ids := r.GetInts("ids")
if len(ids) == 0 {
c.FailJsonExit(r, "参数错误")
}
err := service.ToolsGenTable.GenCode(ids, r.GetCtx())
if err != nil {
c.FailJsonExit(r, err.Error())
}
c.SusJsonExit(r, "生成成功")
}
// Delete 删除导入的表信息
func (c *toolsGenTable) Delete(r *ghttp.Request) {
ids := r.GetInts("ids")
if len(ids) == 0 {
c.FailJsonExit(r, "参数错误")
}
err := service.ToolsGenTable.Delete(ids)
if err != nil {
c.FailJsonExit(r, err.Error())
}
c.SusJsonExit(r, "删除成功")
}