gen.go 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408
  1. package tools
  2. import (
  3. "bytes"
  4. "net/http"
  5. "text/template"
  6. "github.com/gin-gonic/gin"
  7. "device-manage/app/admin/models"
  8. "device-manage/app/admin/models/tools"
  9. tools2 "device-manage/tools"
  10. "device-manage/tools/app"
  11. "device-manage/tools/config"
  12. )
  13. func Preview(c *gin.Context) {
  14. table := tools.SysTables{}
  15. id, err := tools2.StringToInt(c.Param("tableId"))
  16. tools2.HasError(err, "", -1)
  17. table.TableId = id
  18. t1, err := template.ParseFiles("template/v3/model.go.template")
  19. tools2.HasError(err, "", -1)
  20. t2, err := template.ParseFiles("template/v3/no_actions/api.go.template")
  21. tools2.HasError(err, "", -1)
  22. t3, err := template.ParseFiles("template/v3/js.go.template")
  23. tools2.HasError(err, "", -1)
  24. t4, err := template.ParseFiles("template/v3/vue.go.template")
  25. tools2.HasError(err, "", -1)
  26. t5, err := template.ParseFiles("template/v3/no_actions/router_check_role.go.template")
  27. tools2.HasError(err, "", -1)
  28. t6, err := template.ParseFiles("template/v3/no_actions/dto.go.template")
  29. tools2.HasError(err, "", -1)
  30. tab, _ := table.Get()
  31. var b1 bytes.Buffer
  32. err = t1.Execute(&b1, tab)
  33. var b2 bytes.Buffer
  34. err = t2.Execute(&b2, tab)
  35. var b3 bytes.Buffer
  36. err = t3.Execute(&b3, tab)
  37. var b4 bytes.Buffer
  38. err = t4.Execute(&b4, tab)
  39. var b5 bytes.Buffer
  40. err = t5.Execute(&b5, tab)
  41. var b6 bytes.Buffer
  42. err = t6.Execute(&b6, tab)
  43. mp := make(map[string]interface{})
  44. mp["template/model.go.template"] = b1.String()
  45. mp["template/api.go.template"] = b2.String()
  46. mp["template/js.go.template"] = b3.String()
  47. mp["template/vue.go.template"] = b4.String()
  48. mp["template/router.go.template"] = b5.String()
  49. mp["template/dto.go.template"] = b6.String()
  50. var res app.Response
  51. res.Data = mp
  52. c.JSON(http.StatusOK, res.ReturnOK())
  53. }
  54. func GenCodeV3(c *gin.Context) {
  55. table := tools.SysTables{}
  56. id, err := tools2.StringToInt(c.Param("tableId"))
  57. tools2.HasError(err, "", -1)
  58. table.TableId = id
  59. tab, _ := table.Get()
  60. if tab.IsActions == 1 {
  61. ActionsGenV3(tab)
  62. } else {
  63. NOActionsGenV3(tab)
  64. }
  65. app.OK(c, "", "Code generated successfully!")
  66. }
  67. func NOActionsGenV3(tab tools.SysTables) {
  68. basePath := "template/v3/"
  69. routerFile := basePath + "no_actions/router_check_role.go.template"
  70. if tab.IsAuth == 2 {
  71. routerFile = basePath + "no_actions/router_no_check_role.go.template"
  72. }
  73. t1, err := template.ParseFiles(basePath + "model.go.template")
  74. tools2.HasError(err, "", -1)
  75. t2, err := template.ParseFiles(basePath + "no_actions/apis.go.template")
  76. tools2.HasError(err, "", -1)
  77. t3, err := template.ParseFiles(routerFile)
  78. tools2.HasError(err, "", -1)
  79. t4, err := template.ParseFiles(basePath + "js.go.template")
  80. tools2.HasError(err, "", -1)
  81. t5, err := template.ParseFiles(basePath + "vue.go.template")
  82. tools2.HasError(err, "", -1)
  83. t6, err := template.ParseFiles(basePath + "dto.go.template")
  84. tools2.HasError(err, "", -1)
  85. t7, err := template.ParseFiles(basePath + "no_actions/service.go.template")
  86. tools2.HasError(err, "", -1)
  87. _ = tools2.PathCreate("./app/" + tab.PackageName + "/apis/" + tab.ModuleName)
  88. _ = tools2.PathCreate("./app/" + tab.PackageName + "/models/")
  89. _ = tools2.PathCreate("./app/" + tab.PackageName + "/router/")
  90. _ = tools2.PathCreate("./app/" + tab.PackageName + "/service/dto/")
  91. _ = tools2.PathCreate(config.GenConfig.FrontPath + "/api/")
  92. _ = tools2.PathCreate(config.GenConfig.FrontPath + "/views/" + tab.BusinessName)
  93. var b1 bytes.Buffer
  94. err = t1.Execute(&b1, tab)
  95. var b2 bytes.Buffer
  96. err = t2.Execute(&b2, tab)
  97. var b3 bytes.Buffer
  98. err = t3.Execute(&b3, tab)
  99. var b4 bytes.Buffer
  100. err = t4.Execute(&b4, tab)
  101. var b5 bytes.Buffer
  102. err = t5.Execute(&b5, tab)
  103. var b6 bytes.Buffer
  104. err = t6.Execute(&b6, tab)
  105. var b7 bytes.Buffer
  106. err = t7.Execute(&b7, tab)
  107. tools2.FileCreate(b1, "./app/"+tab.PackageName+"/models/"+tab.BusinessName+".go")
  108. tools2.FileCreate(b2, "./app/"+tab.PackageName+"/apis/"+tab.ModuleName+"/"+tab.BusinessName+".go")
  109. tools2.FileCreate(b3, "./app/"+tab.PackageName+"/router/"+tab.BusinessName+".go")
  110. tools2.FileCreate(b4, config.GenConfig.FrontPath+"/api/"+tab.BusinessName+".js")
  111. tools2.FileCreate(b5, config.GenConfig.FrontPath+"/views/"+tab.BusinessName+"/index.vue")
  112. tools2.FileCreate(b6, "./app/"+tab.PackageName+"/service/dto/"+tab.BusinessName+".go")
  113. tools2.FileCreate(b7, "./app/"+tab.PackageName+"/service/"+tab.BusinessName+".go")
  114. }
  115. func ActionsGenV3(tab tools.SysTables) {
  116. basePath := "template/v3/"
  117. routerFile := basePath + "actions/router_check_role.go.template"
  118. if tab.IsAuth == 2 {
  119. routerFile = basePath + "actions/router_no_check_role.go.template"
  120. }
  121. t1, err := template.ParseFiles(basePath + "model.go.template")
  122. tools2.HasError(err, "", -1)
  123. t3, err := template.ParseFiles(routerFile)
  124. tools2.HasError(err, "", -1)
  125. t4, err := template.ParseFiles(basePath + "js.go.template")
  126. tools2.HasError(err, "", -1)
  127. t5, err := template.ParseFiles(basePath + "vue.go.template")
  128. tools2.HasError(err, "", -1)
  129. t6, err := template.ParseFiles(basePath + "dto.go.template")
  130. tools2.HasError(err, "", -1)
  131. _ = tools2.PathCreate("./app/" + tab.PackageName + "/models/")
  132. _ = tools2.PathCreate("./app/" + tab.PackageName + "/router/")
  133. _ = tools2.PathCreate("./app/" + tab.PackageName + "/service/dto/")
  134. _ = tools2.PathCreate(config.GenConfig.FrontPath + "/api/")
  135. _ = tools2.PathCreate(config.GenConfig.FrontPath + "/views/" + tab.BusinessName)
  136. var b1 bytes.Buffer
  137. err = t1.Execute(&b1, tab)
  138. var b3 bytes.Buffer
  139. err = t3.Execute(&b3, tab)
  140. var b4 bytes.Buffer
  141. err = t4.Execute(&b4, tab)
  142. var b5 bytes.Buffer
  143. err = t5.Execute(&b5, tab)
  144. var b6 bytes.Buffer
  145. err = t6.Execute(&b6, tab)
  146. tools2.FileCreate(b1, "./app/"+tab.PackageName+"/models/"+tab.BusinessName+".go")
  147. tools2.FileCreate(b3, "./app/"+tab.PackageName+"/router/"+tab.BusinessName+".go")
  148. tools2.FileCreate(b4, config.GenConfig.FrontPath+"/api/"+tab.BusinessName+".js")
  149. tools2.FileCreate(b5, config.GenConfig.FrontPath+"/views/"+tab.BusinessName+"/index.vue")
  150. tools2.FileCreate(b6, "./app/"+tab.PackageName+"/service/dto/"+tab.BusinessName+".go")
  151. }
  152. func GenMenuAndApi(c *gin.Context) {
  153. table := tools.SysTables{}
  154. timeNow := tools2.GetCurrentTime()
  155. id, err := tools2.StringToInt(c.Param("tableId"))
  156. tools2.HasError(err, "", -1)
  157. table.TableId = id
  158. tab, _ := table.Get()
  159. Mmenu := models.Menu{}
  160. Mmenu.MenuName = tab.TBName + "Manage"
  161. Mmenu.Title = tab.TableComment
  162. Mmenu.Icon = "pass"
  163. Mmenu.Path = "/" + tab.TBName
  164. Mmenu.MenuType = "M"
  165. Mmenu.Action = "无"
  166. Mmenu.ParentId = 0
  167. Mmenu.NoCache = false
  168. Mmenu.Component = "Layout"
  169. Mmenu.Sort = 0
  170. Mmenu.Visible = "0"
  171. Mmenu.IsFrame = "0"
  172. Mmenu.CreateBy = "1"
  173. Mmenu.UpdateBy = "1"
  174. Mmenu.CreatedAt = timeNow
  175. Mmenu.UpdatedAt = timeNow
  176. Mmenu.MenuId, err = Mmenu.Create()
  177. Cmenu := models.Menu{}
  178. Cmenu.MenuName = tab.TBName
  179. Cmenu.Title = tab.TableComment
  180. Cmenu.Icon = "pass"
  181. Cmenu.Path = tab.TBName
  182. Cmenu.MenuType = "C"
  183. Cmenu.Action = "无"
  184. Cmenu.Permission = tab.ModuleName + ":" + tab.BusinessName + ":list"
  185. Cmenu.ParentId = Mmenu.MenuId
  186. Cmenu.NoCache = false
  187. Cmenu.Component = "/" + tab.BusinessName + "/index"
  188. Cmenu.Sort = 0
  189. Cmenu.Visible = "0"
  190. Cmenu.IsFrame = "0"
  191. Cmenu.CreateBy = "1"
  192. Cmenu.UpdateBy = "1"
  193. Cmenu.CreatedAt = timeNow
  194. Cmenu.UpdatedAt = timeNow
  195. Cmenu.MenuId, err = Cmenu.Create()
  196. MList := models.Menu{}
  197. MList.MenuName = ""
  198. MList.Title = "分页获取" + tab.TableComment
  199. MList.Icon = ""
  200. MList.Path = tab.TBName
  201. MList.MenuType = "F"
  202. MList.Action = "无"
  203. MList.Permission = tab.ModuleName + ":" + tab.BusinessName + ":query"
  204. MList.ParentId = Cmenu.MenuId
  205. MList.NoCache = false
  206. MList.Sort = 0
  207. MList.Visible = "0"
  208. MList.IsFrame = "0"
  209. MList.CreateBy = "1"
  210. MList.UpdateBy = "1"
  211. MList.CreatedAt = timeNow
  212. MList.UpdatedAt = timeNow
  213. MList.MenuId, err = MList.Create()
  214. MCreate := models.Menu{}
  215. MCreate.MenuName = ""
  216. MCreate.Title = "创建" + tab.TableComment
  217. MCreate.Icon = ""
  218. MCreate.Path = tab.TBName
  219. MCreate.MenuType = "F"
  220. MCreate.Action = "无"
  221. MCreate.Permission = tab.ModuleName + ":" + tab.BusinessName + ":add"
  222. MCreate.ParentId = Cmenu.MenuId
  223. MCreate.NoCache = false
  224. MCreate.Sort = 0
  225. MCreate.Visible = "0"
  226. MCreate.IsFrame = "0"
  227. MCreate.CreateBy = "1"
  228. MCreate.UpdateBy = "1"
  229. MCreate.CreatedAt = timeNow
  230. MCreate.UpdatedAt = timeNow
  231. MCreate.MenuId, err = MCreate.Create()
  232. MUpdate := models.Menu{}
  233. MUpdate.MenuName = ""
  234. MUpdate.Title = "修改" + tab.TableComment
  235. MUpdate.Icon = ""
  236. MUpdate.Path = tab.TBName
  237. MUpdate.MenuType = "F"
  238. MUpdate.Action = "无"
  239. MUpdate.Permission = tab.ModuleName + ":" + tab.BusinessName + ":edit"
  240. MUpdate.ParentId = Cmenu.MenuId
  241. MUpdate.NoCache = false
  242. MUpdate.Sort = 0
  243. MUpdate.Visible = "0"
  244. MUpdate.IsFrame = "0"
  245. MUpdate.CreateBy = "1"
  246. MUpdate.UpdateBy = "1"
  247. MUpdate.CreatedAt = timeNow
  248. MUpdate.UpdatedAt = timeNow
  249. MUpdate.MenuId, err = MUpdate.Create()
  250. MDelete := models.Menu{}
  251. MDelete.MenuName = ""
  252. MDelete.Title = "删除" + tab.TableComment
  253. MDelete.Icon = ""
  254. MDelete.Path = tab.TBName
  255. MDelete.MenuType = "F"
  256. MDelete.Action = "无"
  257. MDelete.Permission = tab.ModuleName + ":" + tab.BusinessName + ":remove"
  258. MDelete.ParentId = Cmenu.MenuId
  259. MDelete.NoCache = false
  260. MDelete.Sort = 0
  261. MDelete.Visible = "0"
  262. MDelete.IsFrame = "0"
  263. MDelete.CreateBy = "1"
  264. MDelete.UpdateBy = "1"
  265. MDelete.CreatedAt = timeNow
  266. MDelete.UpdatedAt = timeNow
  267. MDelete.MenuId, err = MDelete.Create()
  268. var InterfaceId = 63
  269. Amenu := models.Menu{}
  270. Amenu.MenuName = tab.TBName
  271. Amenu.Title = tab.TableComment
  272. Amenu.Icon = "bug"
  273. Amenu.Path = tab.TBName
  274. Amenu.MenuType = "M"
  275. Amenu.Action = "无"
  276. Amenu.ParentId = InterfaceId
  277. Amenu.NoCache = false
  278. Amenu.Sort = 0
  279. Amenu.Visible = "1"
  280. Amenu.IsFrame = "0"
  281. Amenu.CreateBy = "1"
  282. Amenu.UpdateBy = "1"
  283. Amenu.CreatedAt = timeNow
  284. Amenu.UpdatedAt = timeNow
  285. Amenu.MenuId, err = Amenu.Create()
  286. AList := models.Menu{}
  287. AList.MenuName = ""
  288. AList.Title = "分页获取" + tab.TableComment
  289. AList.Icon = "bug"
  290. AList.Path = "/api/v1/" + tab.ModuleName
  291. AList.MenuType = "A"
  292. AList.Action = "GET"
  293. AList.ParentId = Amenu.MenuId
  294. AList.NoCache = false
  295. AList.Sort = 0
  296. AList.Visible = "1"
  297. AList.IsFrame = "0"
  298. AList.CreateBy = "1"
  299. AList.UpdateBy = "1"
  300. AList.CreatedAt = timeNow
  301. AList.UpdatedAt = timeNow
  302. AList.MenuId, err = AList.Create()
  303. AGet := models.Menu{}
  304. AGet.MenuName = ""
  305. AGet.Title = "根据id获取" + tab.TableComment
  306. AGet.Icon = "bug"
  307. AGet.Path = "/api/v1/" + tab.ModuleName + "/:id"
  308. AGet.MenuType = "A"
  309. AGet.Action = "GET"
  310. AGet.ParentId = Amenu.MenuId
  311. AGet.NoCache = false
  312. AGet.Sort = 0
  313. AGet.Visible = "1"
  314. AGet.IsFrame = "0"
  315. AGet.CreateBy = "1"
  316. AGet.UpdateBy = "1"
  317. AGet.CreatedAt = timeNow
  318. AGet.UpdatedAt = timeNow
  319. AGet.MenuId, err = AGet.Create()
  320. ACreate := models.Menu{}
  321. ACreate.MenuName = ""
  322. ACreate.Title = "创建" + tab.TableComment
  323. ACreate.Icon = "bug"
  324. ACreate.Path = "/api/v1/" + tab.ModuleName
  325. ACreate.MenuType = "A"
  326. ACreate.Action = "POST"
  327. ACreate.ParentId = Amenu.MenuId
  328. ACreate.NoCache = false
  329. ACreate.Sort = 0
  330. ACreate.Visible = "1"
  331. ACreate.IsFrame = "0"
  332. ACreate.CreateBy = "1"
  333. ACreate.UpdateBy = "1"
  334. ACreate.CreatedAt = timeNow
  335. ACreate.UpdatedAt = timeNow
  336. ACreate.MenuId, err = ACreate.Create()
  337. AUpdate := models.Menu{}
  338. AUpdate.MenuName = ""
  339. AUpdate.Title = "修改" + tab.TableComment
  340. AUpdate.Icon = "bug"
  341. AUpdate.Path = "/api/v1/" + tab.ModuleName + "/:id"
  342. AUpdate.MenuType = "A"
  343. AUpdate.Action = "PUT"
  344. AUpdate.ParentId = Amenu.MenuId
  345. AUpdate.NoCache = false
  346. AUpdate.Sort = 0
  347. AUpdate.Visible = "1"
  348. AUpdate.IsFrame = "0"
  349. AUpdate.CreateBy = "1"
  350. AUpdate.UpdateBy = "1"
  351. AUpdate.CreatedAt = timeNow
  352. AUpdate.UpdatedAt = timeNow
  353. AUpdate.MenuId, err = AUpdate.Create()
  354. ADelete := models.Menu{}
  355. ADelete.MenuName = ""
  356. ADelete.Title = "删除" + tab.TableComment
  357. ADelete.Icon = "bug"
  358. ADelete.Path = "/api/v1/" + tab.ModuleName
  359. ADelete.MenuType = "A"
  360. ADelete.Action = "DELETE"
  361. ADelete.ParentId = Amenu.MenuId
  362. ADelete.NoCache = false
  363. ADelete.Sort = 0
  364. ADelete.Visible = "1"
  365. ADelete.IsFrame = "0"
  366. ADelete.CreateBy = "1"
  367. ADelete.UpdateBy = "1"
  368. ADelete.CreatedAt = timeNow
  369. ADelete.UpdatedAt = timeNow
  370. ADelete.MenuId, err = ADelete.Create()
  371. app.OK(c, "", "数据生成成功!")
  372. }