mirror of
https://gitee.com/xiangheng/x_admin.git
synced 2025-10-13 03:43:50 +08:00
161 lines
4.3 KiB
Go
161 lines
4.3 KiB
Go
package gen
|
|
|
|
import (
|
|
"x_admin/core"
|
|
"x_admin/core/request"
|
|
"x_admin/core/response"
|
|
|
|
"net/http"
|
|
"strings"
|
|
"x_admin/middleware"
|
|
"x_admin/util"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func GenRoute(rg *gin.RouterGroup) {
|
|
db := core.GetDB()
|
|
// permSrv := system.NewSystemAuthPermService(db)
|
|
// roleSrv := system.NewSystemAuthRoleService(db, permSrv)
|
|
// adminSrv := system.NewSystemAuthAdminService(db, permSrv, roleSrv)
|
|
// service := system.NewSystemLoginService(db, adminSrv)
|
|
|
|
server := NewGenerateService(db)
|
|
|
|
handle := genHandler{Service: server}
|
|
|
|
rg = rg.Group("/gen", middleware.TokenAuth())
|
|
rg.GET("/db", handle.dbTables)
|
|
rg.GET("/list", handle.List)
|
|
rg.GET("/detail", handle.Detail)
|
|
rg.POST("/importTable", handle.importTable)
|
|
rg.POST("/syncTable", handle.syncTable)
|
|
rg.POST("/editTable", handle.editTable)
|
|
rg.POST("/delTable", handle.delTable)
|
|
rg.GET("/previewCode", handle.previewCode)
|
|
rg.GET("/downloadCode", handle.downloadCode)
|
|
}
|
|
|
|
type genHandler struct {
|
|
Service IGenerateService
|
|
}
|
|
|
|
// dbTables 数据表列表
|
|
func (gh genHandler) dbTables(c *gin.Context) {
|
|
var page request.PageReq
|
|
var tbReq DbTablesReq
|
|
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &page)) {
|
|
return
|
|
}
|
|
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &tbReq)) {
|
|
return
|
|
}
|
|
res, err := gh.Service.DbTables(page, tbReq)
|
|
response.CheckAndRespWithData(c, res, err)
|
|
}
|
|
|
|
// list 生成列表
|
|
func (gh genHandler) List(c *gin.Context) {
|
|
var page request.PageReq
|
|
var listReq ListTableReq
|
|
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &page)) {
|
|
return
|
|
}
|
|
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) {
|
|
return
|
|
}
|
|
res, err := gh.Service.List(page, listReq)
|
|
response.CheckAndRespWithData(c, res, err)
|
|
}
|
|
|
|
// detail 生成详情
|
|
func (gh genHandler) Detail(c *gin.Context) {
|
|
var detailReq DetailTableReq
|
|
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &detailReq)) {
|
|
return
|
|
}
|
|
res, err := gh.Service.Detail(detailReq.ID)
|
|
response.CheckAndRespWithData(c, res, err)
|
|
}
|
|
|
|
// importTable 导入表结构
|
|
func (gh genHandler) importTable(c *gin.Context) {
|
|
var importReq ImportTableReq
|
|
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &importReq)) {
|
|
return
|
|
}
|
|
err := gh.Service.ImportTable(strings.Split(importReq.Tables, ","))
|
|
response.CheckAndResp(c, err)
|
|
}
|
|
|
|
// syncTable 同步表结构
|
|
func (gh genHandler) syncTable(c *gin.Context) {
|
|
var syncReq SyncTableReq
|
|
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &syncReq)) {
|
|
return
|
|
}
|
|
err := gh.Service.SyncTable(syncReq.ID)
|
|
response.CheckAndResp(c, err)
|
|
}
|
|
|
|
// editTable 编辑表结构
|
|
func (gh genHandler) editTable(c *gin.Context) {
|
|
var editReq EditTableReq
|
|
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &editReq)) {
|
|
return
|
|
}
|
|
err := gh.Service.EditTable(editReq)
|
|
response.CheckAndResp(c, err)
|
|
}
|
|
|
|
// delTable 删除表结构
|
|
func (gh genHandler) delTable(c *gin.Context) {
|
|
var delReq DelTableReq
|
|
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &delReq)) {
|
|
return
|
|
}
|
|
err := gh.Service.DelTable(delReq.Ids)
|
|
response.CheckAndResp(c, err)
|
|
}
|
|
|
|
// previewCode 预览代码
|
|
func (gh genHandler) previewCode(c *gin.Context) {
|
|
var previewReq PreviewCodeReq
|
|
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &previewReq)) {
|
|
return
|
|
}
|
|
res, err := gh.Service.PreviewCode(previewReq.ID)
|
|
response.CheckAndRespWithData(c, res, err)
|
|
}
|
|
|
|
// // genCode 生成代码,生成到服务器自定义路径存在风险,禁止使用
|
|
// func (gh genHandler) genCode(c *gin.Context) {
|
|
// var genReq GenCodeReq
|
|
// if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &genReq)) {
|
|
// return
|
|
// }
|
|
// for _, table := range strings.Split(genReq.Tables, ",") {
|
|
// err := gh.Service.GenCode(table)
|
|
// if response.IsFailWithResp(c, err) {
|
|
// return
|
|
// }
|
|
// }
|
|
// response.Ok(c)
|
|
// }
|
|
|
|
// downloadCode 下载代码
|
|
func (gh genHandler) downloadCode(c *gin.Context) {
|
|
var downloadReq DownloadReq
|
|
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &downloadReq)) {
|
|
return
|
|
}
|
|
zipBytes, err := gh.Service.DownloadCode(strings.Split(downloadReq.Tables, ","))
|
|
if response.IsFailWithResp(c, err) {
|
|
return
|
|
}
|
|
contentType := "application/zip"
|
|
c.Header("Content-Type", contentType)
|
|
c.Header("Content-Disposition", "attachment; filename=gen-"+downloadReq.Tables+".zip")
|
|
c.Data(http.StatusOK, contentType, zipBytes)
|
|
}
|