Browse Source

Merge pull request #581 from songzhibin97/gva_gormv2_dev

feat:新存储了meta信息,完善了记录逻辑
main
奇淼(piexlmax 3 years ago
committed by GitHub
parent
commit
86d1f1ffaf
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 24
      server/api/v1/sys_auto_code.go
  2. 6
      server/model/sys_autocode_history.go
  3. 1
      server/router/sys_auto_code.go
  4. 32
      server/service/sys_auto_code.go
  5. 20
      server/service/sys_autocode_history.go

24
server/api/v1/sys_auto_code.go

@ -23,7 +23,7 @@ import (
// @Produce application/json // @Produce application/json
// @Param data body request.SysAutoHistory true "查询回滚记录" // @Param data body request.SysAutoHistory true "查询回滚记录"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" // @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
// @Router /autoCode/preview [post]
// @Router /autoCode/getSysHistory [post]
func GetSysHistory(c *gin.Context) { func GetSysHistory(c *gin.Context) {
var search request.SysAutoHistory var search request.SysAutoHistory
_ = c.ShouldBindJSON(&search) _ = c.ShouldBindJSON(&search)
@ -48,7 +48,7 @@ func GetSysHistory(c *gin.Context) {
// @Produce application/json // @Produce application/json
// @Param data body request.AutoHistoryByID true "回滚自动生成代码" // @Param data body request.AutoHistoryByID true "回滚自动生成代码"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"回滚成功"}" // @Success 200 {string} string "{"success":true,"data":{},"msg":"回滚成功"}"
// @Router /autoCode/preview [post]
// @Router /autoCode/rollback [post]
func RollBack(c *gin.Context) { func RollBack(c *gin.Context) {
var id request.AutoHistoryByID var id request.AutoHistoryByID
_ = c.ShouldBindJSON(&id) _ = c.ShouldBindJSON(&id)
@ -59,6 +59,26 @@ func RollBack(c *gin.Context) {
response.OkWithMessage("回滚成功", c) response.OkWithMessage("回滚成功", c)
} }
// @Tags AutoCode
// @Summary 回滚
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body request.AutoHistoryByID true "获取meta信息"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
// @Router /autoCode/getMeta [post]
func GetMeta(c *gin.Context) {
var id request.AutoHistoryByID
_ = c.ShouldBindJSON(&id)
if v, err := service.GetMeta(id.ID); err != nil {
response.FailWithMessage(err.Error(), c)
return
} else {
response.OkWithDetailed(gin.H{"meta": v}, "获取成功", c)
}
}
// @Tags AutoCode // @Tags AutoCode
// @Summary 预览创建后的代码 // @Summary 预览创建后的代码
// @Security ApiKeyAuth // @Security ApiKeyAuth

6
server/model/sys_autocode_history.go

@ -7,8 +7,10 @@ import "gin-vue-admin/global"
type SysAutoCodeHistory struct { type SysAutoCodeHistory struct {
global.GVA_MODEL global.GVA_MODEL
TableName string TableName string
AutoCodeMeta string `gorm:"type:text"` // 其他meta信息 path;path
InjectionMeta string `gorm:"type:text"` // 注入的内容 RouterPath@functionName@RouterString;
RequestMeta string `gorm:"type:text" json:"request_meta,omitempty"` // 前端传入的结构化信息
AutoCodePath string `gorm:"type:text"` // 其他meta信息 path;path
InjectionMeta string `gorm:"type:text"` // 注入的内容 RouterPath@functionName@RouterString;
ApiIDs string // api表注册内容 ApiIDs string // api表注册内容
Flag int // 表示对应状态 0 代表创建, 1 代表回滚 ... Flag int // 表示对应状态 0 代表创建, 1 代表回滚 ...
} }

1
server/router/sys_auto_code.go

@ -8,6 +8,7 @@ import (
func InitAutoCodeRouter(Router *gin.RouterGroup) { func InitAutoCodeRouter(Router *gin.RouterGroup) {
AutoCodeRouter := Router.Group("autoCode") AutoCodeRouter := Router.Group("autoCode")
{ {
AutoCodeRouter.POST("getMeta", v1.GetMeta) // 根据id获取meta信息
AutoCodeRouter.POST("getSysHistory", v1.GetSysHistory) // 获取回滚记录分页 AutoCodeRouter.POST("getSysHistory", v1.GetSysHistory) // 获取回滚记录分页
AutoCodeRouter.POST("rollback", v1.RollBack) // 回滚 AutoCodeRouter.POST("rollback", v1.RollBack) // 回滚
AutoCodeRouter.POST("preview", v1.PreviewTemp) // 获取自动创建代码预览 AutoCodeRouter.POST("preview", v1.PreviewTemp) // 获取自动创建代码预览

32
server/service/sys_auto_code.go

@ -1,6 +1,7 @@
package service package service
import ( import (
"encoding/json"
"errors" "errors"
"fmt" "fmt"
"gin-vue-admin/global" "gin-vue-admin/global"
@ -105,6 +106,7 @@ func CreateTemp(autoCode model.AutoCodeStruct, ids ...uint) (err error) {
if err != nil { if err != nil {
return err return err
} }
meta, _ := json.Marshal(autoCode)
// 写入文件前,先创建文件夹 // 写入文件前,先创建文件夹
if err = utils.CreateDir(needMkdir...); err != nil { if err = utils.CreateDir(needMkdir...); err != nil {
return err return err
@ -179,18 +181,24 @@ func CreateTemp(autoCode model.AutoCodeStruct, ids ...uint) (err error) {
return err return err
} }
} }
if autoCode.TableName != "" {
err = CreateAutoCodeHistory(bf.String(),
injectionCodeMeta.String(),
autoCode.TableName,
idBf.String(),
)
} else {
err = CreateAutoCodeHistory(bf.String(),
injectionCodeMeta.String(),
autoCode.StructName,
idBf.String(),
)
if autoCode.AutoMoveFile || autoCode.AutoCreateApiToSql {
if autoCode.TableName != "" {
err = CreateAutoCodeHistory(
string(meta),
bf.String(),
injectionCodeMeta.String(),
autoCode.TableName,
idBf.String(),
)
} else {
err = CreateAutoCodeHistory(
string(meta),
bf.String(),
injectionCodeMeta.String(),
autoCode.StructName,
idBf.String(),
)
}
} }
if err != nil { if err != nil {
return err return err

20
server/service/sys_autocode_history.go

@ -1,7 +1,6 @@
package service package service
import ( import (
"errors"
"gin-vue-admin/global" "gin-vue-admin/global"
"gin-vue-admin/model" "gin-vue-admin/model"
"gin-vue-admin/model/request" "gin-vue-admin/model/request"
@ -12,9 +11,10 @@ import (
) )
// CreateAutoCodeHistory RouterPath : RouterPath@RouterString;RouterPath2@RouterString2 // CreateAutoCodeHistory RouterPath : RouterPath@RouterString;RouterPath2@RouterString2
func CreateAutoCodeHistory(autoCodeMeta string, injectionMeta string, tableName string, apiIds string) error {
func CreateAutoCodeHistory(meta, autoCodePath string, injectionMeta string, tableName string, apiIds string) error {
return global.GVA_DB.Create(&model.SysAutoCodeHistory{ return global.GVA_DB.Create(&model.SysAutoCodeHistory{
AutoCodeMeta: autoCodeMeta,
RequestMeta: meta,
AutoCodePath: autoCodePath,
InjectionMeta: injectionMeta, InjectionMeta: injectionMeta,
TableName: tableName, TableName: tableName,
ApiIDs: apiIds, ApiIDs: apiIds,
@ -48,28 +48,32 @@ func RollBack(id uint) error {
} }
} }
// 删除文件 // 删除文件
for _, path := range strings.Split(md.AutoCodeMeta, ";") {
for _, path := range strings.Split(md.AutoCodePath, ";") {
_ = utils.DeLFile(path) _ = utils.DeLFile(path)
} }
// 清除注入 // 清除注入
for _, v := range strings.Split(md.InjectionMeta, ";") { for _, v := range strings.Split(md.InjectionMeta, ";") {
// RouterPath@functionName@RouterString // RouterPath@functionName@RouterString
meta := strings.Split(v, "@") meta := strings.Split(v, "@")
if len(meta) != 3 {
return errors.New("split InjectionMeta Err")
if len(meta) == 3 {
_ = utils.AutoClearCode(meta[0], meta[2])
} }
_ = utils.AutoClearCode(meta[0], meta[2])
} }
md.Flag = 1 md.Flag = 1
return global.GVA_DB.Save(&md).Error return global.GVA_DB.Save(&md).Error
} }
func GetMeta(id uint) (string, error) {
var meta string
return meta, global.GVA_DB.Model(model.SysAutoCodeHistory{}).Select("request_meta").First(&meta, id).Error
}
func GetSysHistoryPage(info request.PageInfo) (err error, list interface{}, total int64) { func GetSysHistoryPage(info request.PageInfo) (err error, list interface{}, total int64) {
limit := info.PageSize limit := info.PageSize
offset := info.PageSize * (info.Page - 1) offset := info.PageSize * (info.Page - 1)
db := global.GVA_DB db := global.GVA_DB
var fileLists []model.SysAutoCodeHistory var fileLists []model.SysAutoCodeHistory
err = db.Find(&fileLists).Count(&total).Error err = db.Find(&fileLists).Count(&total).Error
err = db.Limit(limit).Offset(offset).Order("updated_at desc").Find(&fileLists).Error
err = db.Limit(limit).Offset(offset).Order("updated_at desc").Select("id,created_at,updated_at,table_name,auto_code_path,injection_meta,api_ids,flag").Find(&fileLists).Error
return err, fileLists, total return err, fileLists, total
} }
Loading…
Cancel
Save