瀏覽代碼

Merge pull request #581 from songzhibin97/gva_gormv2_dev

feat:新存储了meta信息,完善了记录逻辑
奇淼(piexlmax 3 年之前
父節點
當前提交
86d1f1ffaf

+ 22 - 2
server/api/v1/sys_auto_code.go

@@ -23,7 +23,7 @@ import (
 // @Produce application/json
 // @Param data body request.SysAutoHistory true "查询回滚记录"
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
-// @Router /autoCode/preview [post]
+// @Router /autoCode/getSysHistory [post]
 func GetSysHistory(c *gin.Context) {
 	var search request.SysAutoHistory
 	_ = c.ShouldBindJSON(&search)
@@ -48,7 +48,7 @@ func GetSysHistory(c *gin.Context) {
 // @Produce application/json
 // @Param data body request.AutoHistoryByID true "回滚自动生成代码"
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"回滚成功"}"
-// @Router /autoCode/preview [post]
+// @Router /autoCode/rollback [post]
 func RollBack(c *gin.Context) {
 	var id request.AutoHistoryByID
 	_ = c.ShouldBindJSON(&id)
@@ -59,6 +59,26 @@ func RollBack(c *gin.Context) {
 	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
 // @Summary 预览创建后的代码
 // @Security ApiKeyAuth

+ 4 - 2
server/model/sys_autocode_history.go

@@ -7,8 +7,10 @@ import "gin-vue-admin/global"
 type SysAutoCodeHistory struct {
 	global.GVA_MODEL
 	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表注册内容
 	Flag          int    // 表示对应状态 0 代表创建, 1 代表回滚 ...
+
 }

+ 1 - 0
server/router/sys_auto_code.go

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

+ 20 - 12
server/service/sys_auto_code.go

@@ -1,6 +1,7 @@
 package service
 
 import (
+	"encoding/json"
 	"errors"
 	"fmt"
 	"gin-vue-admin/global"
@@ -105,6 +106,7 @@ func CreateTemp(autoCode model.AutoCodeStruct, ids ...uint) (err error) {
 	if err != nil {
 		return err
 	}
+	meta, _ := json.Marshal(autoCode)
 	// 写入文件前,先创建文件夹
 	if err = utils.CreateDir(needMkdir...); err != nil {
 		return err
@@ -179,18 +181,24 @@ func CreateTemp(autoCode model.AutoCodeStruct, ids ...uint) (err error) {
 			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 {
 		return err

+ 12 - 8
server/service/sys_autocode_history.go

@@ -1,7 +1,6 @@
 package service
 
 import (
-	"errors"
 	"gin-vue-admin/global"
 	"gin-vue-admin/model"
 	"gin-vue-admin/model/request"
@@ -12,9 +11,10 @@ import (
 )
 
 // 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{
-		AutoCodeMeta:  autoCodeMeta,
+		RequestMeta:   meta,
+		AutoCodePath:  autoCodePath,
 		InjectionMeta: injectionMeta,
 		TableName:     tableName,
 		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)
 	}
 	// 清除注入
 	for _, v := range strings.Split(md.InjectionMeta, ";") {
 		// RouterPath@functionName@RouterString
 		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
 	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) {
 	limit := info.PageSize
 	offset := info.PageSize * (info.Page - 1)
 	db := global.GVA_DB
 	var fileLists []model.SysAutoCodeHistory
 	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
 }