sys_auto_code.go 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. package v1
  2. import (
  3. "errors"
  4. "fmt"
  5. "gin-vue-admin/global"
  6. "gin-vue-admin/model"
  7. "gin-vue-admin/model/response"
  8. "gin-vue-admin/service"
  9. "gin-vue-admin/utils"
  10. "net/url"
  11. "os"
  12. "github.com/gin-gonic/gin"
  13. "go.uber.org/zap"
  14. )
  15. // @Tags AutoCode
  16. // @Summary 预览创建后的代码
  17. // @Security ApiKeyAuth
  18. // @accept application/json
  19. // @Produce application/json
  20. // @Param data body model.AutoCodeStruct true "预览创建代码"
  21. // @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}"
  22. // @Router /autoCode/preview [post]
  23. func PreviewTemp(c *gin.Context) {
  24. var a model.AutoCodeStruct
  25. _ = c.ShouldBindJSON(&a)
  26. if err := utils.Verify(a, utils.AutoCodeVerify); err != nil {
  27. response.FailWithMessage(err.Error(), c)
  28. return
  29. }
  30. if a.AutoCreateApiToSql {
  31. if err := service.AutoCreateApi(&a); err != nil {
  32. global.GVA_LOG.Error("自动化创建失败!请自行清空垃圾数据!", zap.Any("err", err))
  33. c.Writer.Header().Add("success", "false")
  34. c.Writer.Header().Add("msg", url.QueryEscape("自动化创建失败!请自行清空垃圾数据!"))
  35. return
  36. }
  37. }
  38. m, err := service.PreviewTemp(a)
  39. if err != nil {
  40. c.Writer.Header().Add("success", "false")
  41. c.Writer.Header().Add("msg", url.QueryEscape(err.Error()))
  42. } else {
  43. c.Writer.Header().Add("Content-Type", "application/json")
  44. c.Writer.Header().Add("success", "true")
  45. c.JSON(200, m)
  46. }
  47. }
  48. // @Tags AutoCode
  49. // @Summary 自动代码模板
  50. // @Security ApiKeyAuth
  51. // @accept application/json
  52. // @Produce application/json
  53. // @Param data body model.AutoCodeStruct true "创建自动代码"
  54. // @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}"
  55. // @Router /autoCode/createTemp [post]
  56. func CreateTemp(c *gin.Context) {
  57. var a model.AutoCodeStruct
  58. _ = c.ShouldBindJSON(&a)
  59. if err := utils.Verify(a, utils.AutoCodeVerify); err != nil {
  60. response.FailWithMessage(err.Error(), c)
  61. return
  62. }
  63. if a.AutoCreateApiToSql {
  64. if err := service.AutoCreateApi(&a); err != nil {
  65. global.GVA_LOG.Error("自动化创建失败!请自行清空垃圾数据!", zap.Any("err", err))
  66. c.Writer.Header().Add("success", "false")
  67. c.Writer.Header().Add("msg", url.QueryEscape("自动化创建失败!请自行清空垃圾数据!"))
  68. return
  69. }
  70. }
  71. err := service.CreateTemp(a)
  72. if err != nil {
  73. if errors.Is(err, model.AutoMoveErr) {
  74. c.Writer.Header().Add("success", "false")
  75. c.Writer.Header().Add("msgtype", "success")
  76. c.Writer.Header().Add("msg", url.QueryEscape(err.Error()))
  77. } else {
  78. c.Writer.Header().Add("success", "false")
  79. c.Writer.Header().Add("msg", url.QueryEscape(err.Error()))
  80. _ = os.Remove("./ginvueadmin.zip")
  81. }
  82. } else {
  83. c.Writer.Header().Add("Content-Disposition", fmt.Sprintf("attachment; filename=%s", "ginvueadmin.zip")) // fmt.Sprintf("attachment; filename=%s", filename)对下载的文件重命名
  84. c.Writer.Header().Add("Content-Type", "application/json")
  85. c.Writer.Header().Add("success", "true")
  86. c.File("./ginvueadmin.zip")
  87. _ = os.Remove("./ginvueadmin.zip")
  88. }
  89. }
  90. // @Tags AutoCode
  91. // @Summary 获取当前数据库所有表
  92. // @Security ApiKeyAuth
  93. // @accept application/json
  94. // @Produce application/json
  95. // @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
  96. // @Router /autoCode/getTables [get]
  97. func GetTables(c *gin.Context) {
  98. dbName := c.DefaultQuery("dbName", global.GVA_CONFIG.Mysql.Dbname)
  99. err, tables := service.GetTables(dbName)
  100. if err != nil {
  101. global.GVA_LOG.Error("查询table失败!", zap.Any("err", err))
  102. response.FailWithMessage("查询table失败", c)
  103. } else {
  104. response.OkWithDetailed(gin.H{"tables": tables}, "获取成功", c)
  105. }
  106. }
  107. // @Tags AutoCode
  108. // @Summary 获取当前所有数据库
  109. // @Security ApiKeyAuth
  110. // @accept application/json
  111. // @Produce application/json
  112. // @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
  113. // @Router /autoCode/getDatabase [get]
  114. func GetDB(c *gin.Context) {
  115. if err, dbs := service.GetDB(); err != nil {
  116. global.GVA_LOG.Error("获取失败!", zap.Any("err", err))
  117. response.FailWithMessage("获取失败", c)
  118. } else {
  119. response.OkWithDetailed(gin.H{"dbs": dbs}, "获取成功", c)
  120. }
  121. }
  122. // @Tags AutoCode
  123. // @Summary 获取当前表所有字段
  124. // @Security ApiKeyAuth
  125. // @accept application/json
  126. // @Produce application/json
  127. // @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
  128. // @Router /autoCode/getColumn [get]
  129. func GetColumn(c *gin.Context) {
  130. dbName := c.DefaultQuery("dbName", global.GVA_CONFIG.Mysql.Dbname)
  131. tableName := c.Query("tableName")
  132. if err, columns := service.GetColumn(tableName, dbName); err != nil {
  133. global.GVA_LOG.Error("获取失败!", zap.Any("err", err))
  134. response.FailWithMessage("获取失败", c)
  135. } else {
  136. response.OkWithDetailed(gin.H{"columns": columns}, "获取成功", c)
  137. }
  138. }