systables.go 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. package tools
  2. import (
  3. "net/http"
  4. "strings"
  5. "github.com/gin-gonic/gin"
  6. "device-manage/app/admin/models/tools"
  7. tools2 "device-manage/tools"
  8. "device-manage/tools/app"
  9. )
  10. // @Summary 分页列表数据
  11. // @Description 生成表分页列表
  12. // @Tags 工具 - 生成表
  13. // @Param tableName query string false "tableName / 数据表名称"
  14. // @Param pageSize query int false "pageSize / 页条数"
  15. // @Param pageIndex query int false "pageIndex / 页码"
  16. // @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
  17. // @Router /api/v1/sys/tables/page [get]
  18. func GetSysTableList(c *gin.Context) {
  19. var data tools.SysTables
  20. var err error
  21. var pageSize = 10
  22. var pageIndex = 1
  23. if size := c.Request.FormValue("pageSize"); size != "" {
  24. pageSize, err = tools2.StringToInt(size)
  25. }
  26. if index := c.Request.FormValue("pageIndex"); index != "" {
  27. pageIndex, err = tools2.StringToInt(index)
  28. }
  29. data.TBName = c.Request.FormValue("tableName")
  30. data.TableComment = c.Request.FormValue("tableComment")
  31. result, count, err := data.GetPage(pageSize, pageIndex)
  32. tools2.HasError(err, "", -1)
  33. var mp = make(map[string]interface{}, 3)
  34. mp["list"] = result
  35. mp["count"] = count
  36. mp["pageIndex"] = pageIndex
  37. mp["pageSize"] = pageSize
  38. var res app.Response
  39. res.Data = mp
  40. c.JSON(http.StatusOK, res.ReturnOK())
  41. }
  42. // @Summary 获取配置
  43. // @Description 获取JSON
  44. // @Tags 工具 - 生成表
  45. // @Param configKey path int true "configKey"
  46. // @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
  47. // @Router /api/v1/sys/tables/info/{tableId} [get]
  48. // @Security Bearer
  49. func GetSysTables(c *gin.Context) {
  50. var data tools.SysTables
  51. data.TableId, _ = tools2.StringToInt(c.Param("tableId"))
  52. result, err := data.Get()
  53. tools2.HasError(err, "抱歉未找到相关信息", -1)
  54. var res app.Response
  55. res.Data = result
  56. mp := make(map[string]interface{})
  57. mp["list"] = result.Columns
  58. mp["info"] = result
  59. res.Data = mp
  60. c.JSON(http.StatusOK, res.ReturnOK())
  61. }
  62. func GetSysTablesInfo(c *gin.Context) {
  63. var data tools.SysTables
  64. if c.Request.FormValue("tableName") != "" {
  65. data.TBName = c.Request.FormValue("tableName")
  66. }
  67. result, err := data.Get()
  68. tools2.HasError(err, "抱歉未找到相关信息", -1)
  69. var res app.Response
  70. res.Data = result
  71. mp := make(map[string]interface{})
  72. mp["list"] = result.Columns
  73. mp["info"] = result
  74. res.Data = mp
  75. c.JSON(http.StatusOK, res.ReturnOK())
  76. }
  77. func GetSysTablesTree(c *gin.Context) {
  78. var data tools.SysTables
  79. result, err := data.GetTree()
  80. tools2.HasError(err, "抱歉未找到相关信息", -1)
  81. var res app.Response
  82. res.Data = result
  83. c.JSON(http.StatusOK, res.ReturnOK())
  84. }
  85. // @Summary 添加表结构
  86. // @Description 添加表结构
  87. // @Tags 工具 - 生成表
  88. // @Accept application/json
  89. // @Product application/json
  90. // @Param tables query string false "tableName / 数据表名称"
  91. // @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
  92. // @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
  93. // @Router /api/v1/sys/tables/info [post]
  94. // @Security Bearer
  95. func InsertSysTable(c *gin.Context) {
  96. tablesList := strings.Split(c.Request.FormValue("tables"), ",")
  97. for i := 0; i < len(tablesList); i++ {
  98. data, err := genTableInit(tablesList, i, c)
  99. _, err = data.Create()
  100. tools2.HasError(err, "", -1)
  101. }
  102. var res app.Response
  103. res.Msg = "添加成功!"
  104. c.JSON(http.StatusOK, res.ReturnOK())
  105. }
  106. func genTableInit(tablesList []string, i int, c *gin.Context) (tools.SysTables, error) {
  107. var data tools.SysTables
  108. var dbTable tools.DBTables
  109. var dbColumn tools.DBColumns
  110. data.TBName = tablesList[i]
  111. data.CreateBy = tools2.GetUserIdStr(c)
  112. dbTable.TableName = data.TBName
  113. dbtable, err := dbTable.Get()
  114. dbColumn.TableName = data.TBName
  115. tablenamelist := strings.Split(dbColumn.TableName, "_")
  116. for i := 0; i < len(tablenamelist); i++ {
  117. strStart := string([]byte(tablenamelist[i])[:1])
  118. strend := string([]byte(tablenamelist[i])[1:])
  119. data.ClassName += strings.ToUpper(strStart) + strend
  120. //data.PackageName += strings.ToLower(strStart) + strings.ToLower(strend)
  121. data.ModuleName += strings.ToLower(strStart) + strings.ToLower(strend)
  122. }
  123. data.PackageName = "admin"
  124. data.TplCategory = "crud"
  125. data.Crud = true
  126. dbcolumn, err := dbColumn.GetList()
  127. data.CreateBy = tools2.GetUserIdStr(c)
  128. data.TableComment = dbtable.TableComment
  129. if dbtable.TableComment == "" {
  130. data.TableComment = data.ClassName
  131. }
  132. data.FunctionName = data.TableComment
  133. data.BusinessName = data.ModuleName
  134. data.IsLogicalDelete = "1"
  135. data.LogicalDelete = true
  136. data.LogicalDeleteColumn = "is_del"
  137. data.IsActions = 1
  138. data.IsDataScope = 1
  139. data.IsAuth = 1
  140. data.FunctionAuthor = "wenjianzhang"
  141. for i := 0; i < len(dbcolumn); i++ {
  142. var column tools.SysColumns
  143. column.ColumnComment = dbcolumn[i].ColumnComment
  144. column.ColumnName = dbcolumn[i].ColumnName
  145. column.ColumnType = dbcolumn[i].ColumnType
  146. column.Sort = i + 1
  147. column.Insert = true
  148. column.IsInsert = "1"
  149. column.QueryType = "EQ"
  150. column.IsPk = "0"
  151. namelist := strings.Split(dbcolumn[i].ColumnName, "_")
  152. for i := 0; i < len(namelist); i++ {
  153. strStart := string([]byte(namelist[i])[:1])
  154. strend := string([]byte(namelist[i])[1:])
  155. column.GoField += strings.ToUpper(strStart) + strend
  156. if i == 0 {
  157. column.JsonField = strings.ToLower(strStart) + strend
  158. } else {
  159. column.JsonField += strings.ToUpper(strStart) + strend
  160. }
  161. }
  162. if strings.Contains(dbcolumn[i].ColumnKey, "PR") {
  163. column.IsPk = "1"
  164. column.Pk = true
  165. data.PkColumn = dbcolumn[i].ColumnName
  166. column.GoField = strings.ToUpper(column.GoField)
  167. column.JsonField = strings.ToUpper(column.JsonField)
  168. data.PkGoField = column.GoField
  169. data.PkJsonField = column.JsonField
  170. }
  171. column.IsRequired = "0"
  172. if strings.Contains(dbcolumn[i].IsNullable, "NO") {
  173. column.IsRequired = "1"
  174. column.Required = true
  175. }
  176. if strings.Contains(dbcolumn[i].ColumnType, "int") {
  177. if strings.Contains(dbcolumn[i].ColumnKey, "PR") {
  178. column.GoType = "uint"
  179. } else if strings.Contains(dbcolumn[i].ColumnType, "unsigned") {
  180. column.GoType = "uint"
  181. } else {
  182. column.GoType = "string"
  183. }
  184. column.HtmlType = "input"
  185. } else if strings.Contains(dbcolumn[i].ColumnType, "timestamp") {
  186. column.GoType = "time.Time"
  187. column.HtmlType = "datetime"
  188. } else if strings.Contains(dbcolumn[i].ColumnType, "datetime") {
  189. column.GoType = "time.Time"
  190. column.HtmlType = "datetime"
  191. } else {
  192. column.GoType = "string"
  193. column.HtmlType = "input"
  194. }
  195. data.Columns = append(data.Columns, column)
  196. }
  197. return data, err
  198. }
  199. // @Summary 修改表结构
  200. // @Description 修改表结构
  201. // @Tags 工具 - 生成表
  202. // @Accept application/json
  203. // @Product application/json
  204. // @Param data body tools.SysTables true "body"
  205. // @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
  206. // @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
  207. // @Router /api/v1/sys/tables/info [put]
  208. // @Security Bearer
  209. func UpdateSysTable(c *gin.Context) {
  210. var data tools.SysTables
  211. err := c.Bind(&data)
  212. tools2.HasError(err, "数据解析失败", 500)
  213. data.UpdateBy = tools2.GetUserIdStr(c)
  214. result, err := data.Update()
  215. tools2.HasError(err, "", -1)
  216. var res app.Response
  217. res.Data = result
  218. res.Msg = "修改成功"
  219. c.JSON(http.StatusOK, res.ReturnOK())
  220. }
  221. // @Summary 删除表结构
  222. // @Description 删除表结构
  223. // @Tags 工具 - 生成表
  224. // @Param tableId path int true "tableId"
  225. // @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
  226. // @Success 200 {string} string "{"code": -1, "message": "删除失败"}"
  227. // @Router /api/v1/sys/tables/info/{tableId} [delete]
  228. func DeleteSysTables(c *gin.Context) {
  229. var data tools.SysTables
  230. IDS := tools2.IdsStrToIdsIntGroup("tableId", c)
  231. _, err := data.BatchDelete(IDS)
  232. tools2.HasError(err, "删除失败", 500)
  233. var res app.Response
  234. res.Msg = "删除成功"
  235. c.JSON(http.StatusOK, res.ReturnOK())
  236. }