diff --git a/server/api/v1/sys_auto_code.go b/server/api/v1/sys_auto_code.go index fcffbd461dff61f8877ca61a718c474e77667556..43c0df8438dd6234be7356747fd8b9dd04c76169 100644 --- a/server/api/v1/sys_auto_code.go +++ b/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 diff --git a/server/model/sys_autocode_history.go b/server/model/sys_autocode_history.go index e0dc6df7e607ea91c5da6789eef9b0389d4b266e..9efd028da5655a39740a4bb4632fc5a32396cd4b 100644 --- a/server/model/sys_autocode_history.go +++ b/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 代表回滚 ... + } diff --git a/server/router/sys_auto_code.go b/server/router/sys_auto_code.go index c39605b78b538ccd52ae6fa6bdded51ec670ec68..76f6ed1d0855008e5f07a5b2f76de35233127408 100644 --- a/server/router/sys_auto_code.go +++ b/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) // 获取自动创建代码预览 diff --git a/server/service/sys_auto_code.go b/server/service/sys_auto_code.go index 528c654ca85c395fa80a7e4d7482caed08ba4168..efd116b8f1bbeb850ca8456c4763a24c62714e7c 100644 --- a/server/service/sys_auto_code.go +++ b/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 diff --git a/server/service/sys_autocode_history.go b/server/service/sys_autocode_history.go index 985cb612cedc8eea9a034d3a102ab1d39b5928f1..fbbc5b393f7887663243e7494e729c1acbd58bac 100644 --- a/server/service/sys_autocode_history.go +++ b/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 }