gen_table.go 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. package admin
  2. import (
  3. "gfast/app/model/admin/gen_table"
  4. "gfast/app/service/admin/gen_service"
  5. "gfast/app/service/admin/user_service"
  6. "gfast/library/response"
  7. "github.com/gogf/gf/encoding/gjson"
  8. "github.com/gogf/gf/frame/g"
  9. "github.com/gogf/gf/net/ghttp"
  10. "github.com/gogf/gf/text/gstr"
  11. "github.com/gogf/gf/util/gconv"
  12. "github.com/gogf/gf/util/gvalid"
  13. "strings"
  14. )
  15. type Gen struct{}
  16. //查询数据库列表
  17. func (c *Gen) DataList(r *ghttp.Request) {
  18. var req *gen_table.SelectPageReq
  19. //获取参数
  20. if err := r.Parse(&req); err != nil {
  21. response.FailJson(true, r, err.(*gvalid.Error).FirstString())
  22. }
  23. total, list, err := gen_service.SelectDbTableList(req)
  24. if err != nil {
  25. response.FailJson(true, r, err.Error())
  26. }
  27. response.SusJson(true, r, "ok", g.Map{
  28. "total": total,
  29. "list": list,
  30. })
  31. }
  32. //表列表
  33. func (c *Gen) TableList(r *ghttp.Request) {
  34. var req *gen_table.SelectPageReq
  35. //获取参数
  36. if err := r.Parse(&req); err != nil {
  37. response.FailJson(true, r, err.(*gvalid.Error).FirstString())
  38. }
  39. total, list, err := gen_service.SelectListByPage(req)
  40. if err != nil {
  41. response.FailJson(true, r, err.Error())
  42. }
  43. response.SusJson(true, r, "ok", g.Map{
  44. "total": total,
  45. "list": list,
  46. })
  47. }
  48. //导入表结构操作
  49. func (c *Gen) ImportTableSave(r *ghttp.Request) {
  50. tables := r.GetString("tables")
  51. if tables == "" {
  52. response.FailJson(true, r, "请选择要导入的表格")
  53. }
  54. user := user_service.GetLoginAdminInfo(r)
  55. operName := user.UserName
  56. tableArr := strings.Split(tables, ",")
  57. tableList, err := gen_service.SelectDbTableListByNames(tableArr)
  58. if err != nil {
  59. response.FailJson(true, r, err.Error())
  60. }
  61. if tableList == nil {
  62. response.FailJson(true, r, "表信息不存在")
  63. }
  64. err = gen_service.ImportGenTable(tableList, operName)
  65. if err != nil {
  66. response.FailJson(true, r, err.Error())
  67. }
  68. response.SusJson(true, r, "导入数据表成功")
  69. }
  70. //根据表格ID获取表格字段列表数据
  71. func (c *Gen) ColumnList(r *ghttp.Request) {
  72. tableId := r.GetInt64("tableId")
  73. if tableId == 0 {
  74. response.FailJson(true, r, "参数错误")
  75. }
  76. list, err := gen_service.SelectGenTableColumnListByTableId(tableId)
  77. if err != nil {
  78. response.FailJson(true, r, err.Error())
  79. }
  80. var tableInfo *gen_table.Entity
  81. var tableMap g.Map
  82. tableInfo, err = gen_service.GetTableInfoByTableId(tableId)
  83. tableMap = gconv.Map(tableInfo)
  84. //如果是树表则设置树表配置
  85. if tableInfo != nil && tableInfo.TplCategory == "tree" {
  86. options := gjson.New(tableInfo.Options)
  87. tableMap["tree_code"] = options.Get("tree_code")
  88. tableMap["tree_parent_code"] = options.Get("tree_parent_code")
  89. tableMap["tree_name"] = options.Get("tree_name")
  90. }
  91. res := g.Map{
  92. "rows": list,
  93. "info": tableMap,
  94. }
  95. response.SusJson(true, r, "ok", res)
  96. }
  97. //编辑表格信息
  98. func (c *Gen) EditSave(r *ghttp.Request) {
  99. var req *gen_table.EditReq
  100. //获取参数
  101. if err := r.Parse(&req); err != nil {
  102. response.FailJson(true, r, err.(*gvalid.Error).FirstString())
  103. }
  104. userInfo := user_service.GetLoginAdminInfo(r)
  105. req.UserName = userInfo.UserName
  106. err := gen_service.SaveEdit(req)
  107. if err != nil {
  108. response.FailJson(true, r, err.Error())
  109. }
  110. response.SusJson(true, r, "设置成功")
  111. }
  112. //删除表格数据
  113. func (c *Gen) Delete(r *ghttp.Request) {
  114. ids := r.GetInts("ids")
  115. if len(ids) == 0 {
  116. response.FailJson(true, r, "参数错误")
  117. }
  118. err := gen_service.Delete(ids)
  119. if err != nil {
  120. response.FailJson(true, r, err.Error())
  121. }
  122. response.SusJson(true, r, "删除成功")
  123. }
  124. //代码生成预览
  125. func (c *Gen) Preview(r *ghttp.Request) {
  126. tableId := r.GetInt64("tableId")
  127. if tableId == 0 {
  128. response.FailJson(true, r, "参数错误")
  129. }
  130. entity, err := gen_service.SelectRecordById(tableId)
  131. if err != nil {
  132. response.FailJson(true, r, err.Error())
  133. }
  134. if entity == nil {
  135. response.FailJson(true, r, "表格数据不存在")
  136. }
  137. gen_service.SetPkColumn(entity, entity.Columns)
  138. controllerKey := "vm/go/" + entity.BusinessName + "_controller.go.vm"
  139. controllerValue := ""
  140. serviceKey := "vm/go/" + entity.BusinessName + "_service.go.vm"
  141. serviceValue := ""
  142. extendKey := "vm/go/" + entity.BusinessName + "_extend.go.vm"
  143. extendValue := ""
  144. apiJsKey := "vm/html/" + entity.BusinessName + "_api.js.vm"
  145. apiJsValue := ""
  146. vueKey := "vm/html/" + entity.BusinessName + "_vue.js.vm"
  147. vueValue := ""
  148. g.View().BindFuncMap(g.Map{
  149. "UcFirst": func(str string) string {
  150. return gstr.UcFirst(str)
  151. },
  152. })
  153. if tmpController, err := r.Response.ParseTpl("vm/go/controller.template", g.Map{"table": entity}); err == nil {
  154. controllerValue = tmpController
  155. }
  156. if tmpService, err := r.Response.ParseTpl("vm/go/service.template", g.Map{"table": entity}); err == nil {
  157. serviceValue = tmpService
  158. }
  159. if tmpExtend, err := r.Response.ParseTpl("vm/go/extend.template", g.Map{"table": entity}); err == nil {
  160. extendValue = tmpExtend
  161. }
  162. if tmpExtend, err := r.Response.ParseTpl("vm/html/js.template", g.Map{"table": entity}); err == nil {
  163. apiJsValue = tmpExtend
  164. }
  165. if tmpExtend, err := r.Response.ParseTpl("vm/html/vue.template", g.Map{"table": entity}); err == nil {
  166. vueValue = tmpExtend
  167. }
  168. response.SusJson(true, r, "ok", g.Map{
  169. extendKey: extendValue,
  170. serviceKey: serviceValue,
  171. controllerKey: controllerValue,
  172. apiJsKey: apiJsValue,
  173. vueKey: vueValue,
  174. })
  175. }