tools_gen_table.go 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. /*
  2. * @desc:代码生成
  3. * @company:云南省奇讯科技有限公司
  4. * @Author: yixiaohu
  5. * @Date: 2021/7/22 15:11
  6. */
  7. package api
  8. import (
  9. comModel "gfast/app/common/model"
  10. "gfast/app/system/dao"
  11. "gfast/app/system/model"
  12. "gfast/app/system/service"
  13. "github.com/gogf/gf/encoding/gjson"
  14. "github.com/gogf/gf/frame/g"
  15. "github.com/gogf/gf/net/ghttp"
  16. "github.com/gogf/gf/util/gconv"
  17. "github.com/gogf/gf/util/gvalid"
  18. "strings"
  19. )
  20. type toolsGenTable struct {
  21. SystemBase
  22. }
  23. var ToolsGenTable = new(toolsGenTable)
  24. // TableList 代码生成页列表数据
  25. func (c *toolsGenTable) TableList(r *ghttp.Request) {
  26. var req *dao.ToolsGenTableSearchReq
  27. //获取参数
  28. if err := r.Parse(&req); err != nil {
  29. c.FailJsonExit(r, err.(gvalid.Error).FirstString())
  30. }
  31. total, list, err := service.ToolsGenTable.SelectListByPage(req)
  32. if err != nil {
  33. c.FailJsonExit(r, err.Error())
  34. }
  35. c.SusJsonExit(r, g.Map{
  36. "total": total,
  37. "list": list,
  38. })
  39. }
  40. // DataList 导入表格页列表数据
  41. func (c *toolsGenTable) DataList(r *ghttp.Request) {
  42. var req *dao.ToolsGenTableSearchReq
  43. //获取参数
  44. if err := r.Parse(&req); err != nil {
  45. c.FailJsonExit(r, err.(gvalid.Error).FirstString())
  46. }
  47. total, list, err := service.ToolsGenTable.SelectDbTableList(req)
  48. if err != nil {
  49. c.FailJsonExit(r, err.Error())
  50. }
  51. c.SusJsonExit(r, g.Map{
  52. "total": total,
  53. "list": list,
  54. })
  55. }
  56. // ImportTableSave 导入表结构操作
  57. func (c *toolsGenTable) ImportTableSave(r *ghttp.Request) {
  58. tables := r.GetString("tables")
  59. if tables == "" {
  60. c.FailJsonExit(r, "请选择要导入的表格")
  61. }
  62. tableArr := strings.Split(tables, ",")
  63. tableList, err := service.ToolsGenTable.SelectDbTableListByNames(tableArr)
  64. if err != nil {
  65. c.FailJsonExit(r, err.Error())
  66. }
  67. if tableList == nil {
  68. c.FailJsonExit(r, "表信息不存在")
  69. }
  70. err = service.ToolsGenTable.ImportGenTable(tableList)
  71. if err != nil {
  72. c.FailJsonExit(r, err.Error())
  73. }
  74. c.SusJsonExit(r, "导入数据表成功")
  75. }
  76. // ColumnList 表格字段列表数据
  77. func (c *toolsGenTable) ColumnList(r *ghttp.Request) {
  78. tableId := r.GetInt64("tableId")
  79. if tableId == 0 {
  80. c.FailJsonExit(r, "参数错误")
  81. }
  82. list, err := service.ToolsGenTableColumn.SelectGenTableColumnListByTableId(tableId)
  83. if err != nil {
  84. c.FailJsonExit(r, err.Error())
  85. }
  86. var tableInfo *model.ToolsGenTable
  87. var tableMap g.Map
  88. tableInfo, err = service.ToolsGenTable.GetTableInfoByTableId(tableId)
  89. if err != nil {
  90. c.FailJsonExit(r, err.Error())
  91. }
  92. tableMap = gconv.Map(tableInfo)
  93. //如果是树表则设置树表配置
  94. if tableInfo != nil && tableInfo.TplCategory == "tree" {
  95. options := gjson.New(tableInfo.Options)
  96. tableMap["treeCode"] = options.Get("treeCode")
  97. tableMap["treeParentCode"] = options.Get("treeParentCode")
  98. tableMap["treeName"] = options.Get("treeName")
  99. }
  100. res := g.Map{
  101. "rows": list,
  102. "info": tableMap,
  103. }
  104. c.SusJsonExit(r, res)
  105. }
  106. // RelationTable 获取可选的关联表
  107. func (c *toolsGenTable) RelationTable(r *ghttp.Request) {
  108. //获取表数据列表
  109. _, tableList, err := service.ToolsGenTable.SelectListByPage(&dao.ToolsGenTableSearchReq{
  110. PageReq: comModel.PageReq{
  111. PageSize: 1000,
  112. },
  113. })
  114. if err != nil {
  115. c.FailJsonExit(r, err.Error())
  116. }
  117. //获取所有字段
  118. allColumns, err := service.ToolsGenTableColumn.GetAllTableColumns()
  119. if err != nil {
  120. c.FailJsonExit(r, err.Error())
  121. }
  122. tableColumns := make([]*dao.ToolsGenTableColumnsRes, len(tableList))
  123. for k, v := range tableList {
  124. tableColumns[k] = &dao.ToolsGenTableColumnsRes{
  125. ToolsGenTable: v,
  126. Columns: make([]*model.ToolsGenTableColumn, 0),
  127. }
  128. for _, cv := range allColumns {
  129. if cv.TableId == v.TableId {
  130. tableColumns[k].Columns = append(tableColumns[k].Columns, cv)
  131. }
  132. }
  133. }
  134. c.SusJsonExit(r, tableColumns)
  135. }
  136. // EditSave 编辑表格生成信息
  137. func (c *toolsGenTable) EditSave(r *ghttp.Request) {
  138. var req *dao.ToolsGenTableEditReq
  139. //获取参数
  140. if err := r.Parse(&req); err != nil {
  141. c.FailJsonExit(r, err.(gvalid.Error).FirstString())
  142. }
  143. err := service.ToolsGenTable.SaveEdit(req)
  144. if err != nil {
  145. c.FailJsonExit(r, err.Error())
  146. }
  147. c.SusJsonExit(r, "设置成功")
  148. }
  149. // Preview 代码预览
  150. func (c *toolsGenTable) Preview(r *ghttp.Request) {
  151. tableId := r.GetInt64("tableId")
  152. if tableId == 0 {
  153. c.FailJsonExit(r, "参数错误")
  154. }
  155. data, _, err := service.ToolsGenTable.GenData(tableId, r.GetCtx())
  156. if err != nil {
  157. c.FailJsonExit(r, err.Error())
  158. }
  159. c.SusJsonExit(r, data)
  160. }
  161. // BatchGenCode 代码生成
  162. func (c *toolsGenTable) BatchGenCode(r *ghttp.Request) {
  163. ids := r.GetInts("ids")
  164. if len(ids) == 0 {
  165. c.FailJsonExit(r, "参数错误")
  166. }
  167. err := service.ToolsGenTable.GenCode(ids, r.GetCtx())
  168. if err != nil {
  169. c.FailJsonExit(r, err.Error())
  170. }
  171. c.SusJsonExit(r, "生成成功")
  172. }
  173. // Delete 删除导入的表信息
  174. func (c *toolsGenTable) Delete(r *ghttp.Request) {
  175. ids := r.GetInts("ids")
  176. if len(ids) == 0 {
  177. c.FailJsonExit(r, "参数错误")
  178. }
  179. err := service.ToolsGenTable.Delete(ids)
  180. if err != nil {
  181. c.FailJsonExit(r, err.Error())
  182. }
  183. c.SusJsonExit(r, "删除成功")
  184. }