gen_table.go 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  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. // @Summary 查询数据库列表
  17. // @Description 查询数据库列表
  18. // @Tags 系统工具
  19. // @Param data body gen_table.SelectPageReq true "data"
  20. // @Success 0 {object} response.Response "{"code": 200, "data": [...]}"
  21. // @Router /system/tools/gen/dataList [get]
  22. // @Security
  23. func (c *Gen) DataList(r *ghttp.Request) {
  24. var req *gen_table.SelectPageReq
  25. //获取参数
  26. if err := r.Parse(&req); err != nil {
  27. response.FailJson(true, r, err.(*gvalid.Error).FirstString())
  28. }
  29. total, list, err := gen_service.SelectDbTableList(req)
  30. if err != nil {
  31. response.FailJson(true, r, err.Error())
  32. }
  33. response.SusJson(true, r, "ok", g.Map{
  34. "total": total,
  35. "list": list,
  36. })
  37. }
  38. // @Summary 表列表
  39. // @Description 表列表
  40. // @Tags 系统工具
  41. // @Param data body gen_table.SelectPageReq true "data"
  42. // @Success 0 {object} response.Response "{"code": 200, "data": [...]}"
  43. // @Router /system/tools/gen/tableList [post]
  44. // @Security
  45. func (c *Gen) TableList(r *ghttp.Request) {
  46. var req *gen_table.SelectPageReq
  47. //获取参数
  48. if err := r.Parse(&req); err != nil {
  49. response.FailJson(true, r, err.(*gvalid.Error).FirstString())
  50. }
  51. total, list, err := gen_service.SelectListByPage(req)
  52. if err != nil {
  53. response.FailJson(true, r, err.Error())
  54. }
  55. response.SusJson(true, r, "ok", g.Map{
  56. "total": total,
  57. "list": list,
  58. })
  59. }
  60. // @Summary 导入表结构操作
  61. // @Description 导入表结构操作
  62. // @Tags 系统工具
  63. // @Param tables body string true "tables"
  64. // @Success 0 {object} response.Response "{"code": 200, "data": [...]}"
  65. // @Router /system/tools/gen/importTableSave [post]
  66. // @Security
  67. func (c *Gen) ImportTableSave(r *ghttp.Request) {
  68. tables := r.GetString("tables")
  69. if tables == "" {
  70. response.FailJson(true, r, "请选择要导入的表格")
  71. }
  72. user := user_service.GetLoginAdminInfo(r)
  73. operName := user.UserName
  74. tableArr := strings.Split(tables, ",")
  75. tableList, err := gen_service.SelectDbTableListByNames(tableArr)
  76. if err != nil {
  77. response.FailJson(true, r, err.Error())
  78. }
  79. if tableList == nil {
  80. response.FailJson(true, r, "表信息不存在")
  81. }
  82. err = gen_service.ImportGenTable(tableList, operName)
  83. if err != nil {
  84. response.FailJson(true, r, err.Error())
  85. }
  86. response.SusJson(true, r, "导入数据表成功")
  87. }
  88. // @Summary 根据表格ID获取表格字段列表数据
  89. // @Description 根据表格ID获取表格字段列表数据
  90. // @Tags 系统工具
  91. // @Param tableId body integer true "tableId"
  92. // @Success 0 {object} response.Response "{"code": 200, "data": [...]}"
  93. // @Router /system/tools/gen/columnList [post]
  94. // @Security
  95. func (c *Gen) ColumnList(r *ghttp.Request) {
  96. tableId := r.GetInt64("tableId")
  97. if tableId == 0 {
  98. response.FailJson(true, r, "参数错误")
  99. }
  100. list, err := gen_service.SelectGenTableColumnListByTableId(tableId)
  101. if err != nil {
  102. response.FailJson(true, r, err.Error())
  103. }
  104. var tableInfo *gen_table.Entity
  105. var tableMap g.Map
  106. tableInfo, err = gen_service.GetTableInfoByTableId(tableId)
  107. tableMap = gconv.Map(tableInfo)
  108. //如果是树表则设置树表配置
  109. if tableInfo != nil && tableInfo.TplCategory == "tree" {
  110. options := gjson.New(tableInfo.Options)
  111. tableMap["tree_code"] = options.Get("tree_code")
  112. tableMap["tree_parent_code"] = options.Get("tree_parent_code")
  113. tableMap["tree_name"] = options.Get("tree_name")
  114. }
  115. res := g.Map{
  116. "rows": list,
  117. "info": tableMap,
  118. }
  119. response.SusJson(true, r, "ok", res)
  120. }
  121. // @Summary 编辑表格信息
  122. // @Description 编辑表格信息
  123. // @Tags 系统工具
  124. // @Param data body gen_table.EditReq true "data"
  125. // @Success 0 {object} response.Response "{"code": 200, "data": [...]}"
  126. // @Router /system/tools/gen/editSave [post]
  127. // @Security
  128. func (c *Gen) EditSave(r *ghttp.Request) {
  129. var req *gen_table.EditReq
  130. //获取参数
  131. if err := r.Parse(&req); err != nil {
  132. response.FailJson(true, r, err.(*gvalid.Error).FirstString())
  133. }
  134. userInfo := user_service.GetLoginAdminInfo(r)
  135. req.UserName = userInfo.UserName
  136. err := gen_service.SaveEdit(req)
  137. if err != nil {
  138. response.FailJson(true, r, err.Error())
  139. }
  140. response.SusJson(true, r, "设置成功")
  141. }
  142. // @Summary 删除表格数据
  143. // @Description 删除表格数据
  144. // @Tags 系统工具
  145. // @Param ids body integer true "ids[1,2,3...]"
  146. // @Success 0 {object} response.Response "{"code": 200, "data": [...]}"
  147. // @Router /system/tools/gen/delete [delete]
  148. // @Security
  149. func (c *Gen) Delete(r *ghttp.Request) {
  150. ids := r.GetInts("ids")
  151. if len(ids) == 0 {
  152. response.FailJson(true, r, "参数错误")
  153. }
  154. err := gen_service.Delete(ids)
  155. if err != nil {
  156. response.FailJson(true, r, err.Error())
  157. }
  158. response.SusJson(true, r, "删除成功")
  159. }
  160. // @Summary 代码生成预览
  161. // @Description 代码生成预览
  162. // @Tags 系统工具
  163. // @Param tableId body integer true "tableId"
  164. // @Success 0 {object} response.Response "{"code": 200, "data": [...]}"
  165. // @Router /system/tools/gen/preview [post]
  166. // @Security
  167. func (c *Gen) Preview(r *ghttp.Request) {
  168. tableId := r.GetInt64("tableId")
  169. if tableId == 0 {
  170. response.FailJson(true, r, "参数错误")
  171. }
  172. entity, err := gen_service.SelectRecordById(tableId)
  173. if err != nil {
  174. response.FailJson(true, r, err.Error())
  175. }
  176. if entity == nil {
  177. response.FailJson(true, r, "表格数据不存在")
  178. }
  179. gen_service.SetPkColumn(entity, entity.Columns)
  180. controllerKey := "vm/go/" + entity.BusinessName + "_controller.go.vm"
  181. controllerValue := ""
  182. serviceKey := "vm/go/" + entity.BusinessName + "_service.go.vm"
  183. serviceValue := ""
  184. extendKey := "vm/go/" + entity.BusinessName + "_extend.go.vm"
  185. extendValue := ""
  186. apiJsKey := "vm/html/" + entity.BusinessName + "_api.js.vm"
  187. apiJsValue := ""
  188. vueKey := "vm/html/" + entity.BusinessName + "_vue.js.vm"
  189. vueValue := ""
  190. g.View().BindFuncMap(g.Map{
  191. "UcFirst": func(str string) string {
  192. return gstr.UcFirst(str)
  193. },
  194. })
  195. if tmpController, err := r.Response.ParseTpl("vm/go/controller.template", g.Map{"table": entity}); err == nil {
  196. controllerValue = tmpController
  197. }
  198. if tmpService, err := r.Response.ParseTpl("vm/go/service.template", g.Map{"table": entity}); err == nil {
  199. serviceValue = tmpService
  200. }
  201. if tmpExtend, err := r.Response.ParseTpl("vm/go/extend.template", g.Map{"table": entity}); err == nil {
  202. extendValue = tmpExtend
  203. }
  204. if tmpExtend, err := r.Response.ParseTpl("vm/html/js.template", g.Map{"table": entity}); err == nil {
  205. apiJsValue = tmpExtend
  206. }
  207. if tmpExtend, err := r.Response.ParseTpl("vm/html/vue.template", g.Map{"table": entity}); err == nil {
  208. vueValue = tmpExtend
  209. }
  210. response.SusJson(true, r, "ok", g.Map{
  211. extendKey: extendValue,
  212. serviceKey: serviceValue,
  213. controllerKey: controllerValue,
  214. apiJsKey: apiJsValue,
  215. vueKey: vueValue,
  216. })
  217. }