gen.go 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. package code_gen
  2. import (
  3. "encoding/json"
  4. "encoding/xml"
  5. "fmt"
  6. "git.qianqiusoft.com/qianqiusoft/light-apiengine-client/code_gen/apigen"
  7. "git.qianqiusoft.com/qianqiusoft/light-apiengine-client/code_gen/utils"
  8. "io/ioutil"
  9. )
  10. /*type ResponeResult struct {
  11. Code int32 `json:"code"`
  12. //描述
  13. Msg string `json:"msg"`
  14. //数据
  15. Data []GenerateResult `json:"data"`
  16. }
  17. type GenerateResult struct {
  18. Name string `json:"name"`
  19. Content []byte `json:"content"`
  20. Type string `json:"type"`
  21. }*/
  22. func DoGenerate(xmlfile string, isCompress bool) []byte {
  23. bs, _ := ioutil.ReadFile(xmlfile)
  24. //body := &bytes.Buffer{}
  25. //body.Write(bs)
  26. app := utils.XmlApplication{}
  27. err := xml.Unmarshal(bs, &app)
  28. if err != nil {
  29. fmt.Println(err.Error())
  30. return nil
  31. }
  32. //fmt.Println(bs)
  33. res := utils.ResponeResult{Code: 200, Msg: ""}
  34. res.Data = []utils.GenerateResult{}
  35. tData := map[string]interface{}{}
  36. tData["app"] = app
  37. var gr *utils.GenerateResult
  38. for i := 0; i < len(app.Beans.BeanList); i++ {
  39. bean := app.Beans.BeanList[i]
  40. tData["data"] = bean
  41. gr = utils.NewResult(
  42. "model",
  43. fmt.Sprintf("%s/models/%s_gen.go", app.ApplicationName, utils.CamelizeStr(bean.Name, true)),
  44. apigen.GenBean,
  45. tData,
  46. isCompress)
  47. res.Data = append(res.Data, *gr)
  48. // var b bytes.Buffer
  49. // b.Write(result.Data[i].Content)
  50. // unzip := unzipbytes(&b)
  51. // result.Data[i].Content = unzip.Bytes()
  52. //model.Content = utils.ZipBytes(res.Data[i].Content)
  53. }
  54. for i := 0; i < len(app.Controllers.ControllerList); i++ {
  55. c := app.Controllers.ControllerList[i]
  56. tData["data"] = c
  57. gr = utils.NewResult(
  58. "controllers",
  59. fmt.Sprintf("%s/controllers/gen/%sController_gen.go", app.ApplicationName, utils.CamelizeStr(c.Name, true)),
  60. apigen.GenController,
  61. tData,
  62. isCompress)
  63. res.Data = append(res.Data, *gr)
  64. gr = utils.NewResult(
  65. "controllers",
  66. fmt.Sprintf("%s/controllers/partial/%s/%sController.go", app.ApplicationName, c.Dir, utils.CamelizeStr(c.Name, true)),
  67. apigen.GenPartial,
  68. tData,
  69. isCompress)
  70. //fmt.Println(string(gr.Content))
  71. res.Data = append(res.Data, *gr)
  72. gr = utils.NewResult(
  73. "routers",
  74. fmt.Sprintf("%s/routers/%s_gen.go", app.ApplicationName, c.Name),
  75. apigen.GenRouter,
  76. tData,
  77. isCompress)
  78. res.Data = append(res.Data, *gr)
  79. gr = utils.NewResult(
  80. "vue",
  81. fmt.Sprintf("%s/vue/api/modules/%s/index.js", app.ApplicationName, c.Name),
  82. apigen.GenVue,
  83. tData,
  84. isCompress)
  85. res.Data = append(res.Data, *gr)
  86. }
  87. gr = utils.NewResult(
  88. "routers",
  89. fmt.Sprintf("%s/routers/router_gen.go", app.ApplicationName),
  90. apigen.GenRouterGenGo,
  91. tData,
  92. isCompress)
  93. res.Data = append(res.Data, *gr)
  94. gr = utils.NewResult(
  95. "models",
  96. fmt.Sprintf("%s/models/model.go", app.ApplicationName),
  97. apigen.GenModelGo,
  98. tData,
  99. isCompress)
  100. res.Data = append(res.Data, *gr)
  101. for i := 0; i < len(app.Tables.TableList); i++ {
  102. table := app.Tables.TableList[i]
  103. tData["data"] = table
  104. gr = utils.NewResult(
  105. "models",
  106. fmt.Sprintf("%s/models/%s_gen.go", app.ApplicationName, utils.CamelizeStr(table.Name, true)),
  107. apigen.GenModel,
  108. tData,
  109. isCompress)
  110. res.Data = append(res.Data, *gr)
  111. gr = utils.NewResult(
  112. "sql",
  113. fmt.Sprintf("%s/sqlconfig/%s_controller/%s_page_count.tpl", app.ApplicationName, table.Name, table.Name),
  114. apigen.GenCount,
  115. tData,
  116. isCompress)
  117. res.Data = append(res.Data, *gr)
  118. gr = utils.NewResult(
  119. "sql",
  120. fmt.Sprintf("%s/sqlconfig/%s_controller/%s_page_select.tpl", app.ApplicationName, table.Name, table.Name),
  121. apigen.GenSelect,
  122. tData,
  123. isCompress)
  124. res.Data = append(res.Data, *gr)
  125. gr = utils.NewResult(
  126. "sql",
  127. fmt.Sprintf("%s/sqlconfig/%s/%s_gen.xml", app.ApplicationName, app.ApplicationName, table.Name),
  128. apigen.GenSql,
  129. tData,
  130. isCompress)
  131. res.Data = append(res.Data, *gr)
  132. }
  133. /*
  134. main := utils.GenerateResult{}
  135. main.Type = "main"
  136. main.Name ="main.go"
  137. apiTpl := utils.GenerateResult{}
  138. apiTpl.Type = "doc"
  139. apiTpl.Name ="doc/api.tpl"
  140. docker := utils.GenerateResult{}
  141. docker.Type = "ci"
  142. docker.Name ="Dockerfile"
  143. godep := utils.GenerateResult{}
  144. godep.Type = "ci"
  145. godep.Name ="godep.yaml"
  146. gitignore := utils.GenerateResult{}
  147. gitignore.Type = "ci"
  148. gitignore.Name =".gitignore"
  149. drone := utils.GenerateResult{}
  150. drone.Type = "ci"
  151. drone.Name =".drone.yml"
  152. vue := utils.GenerateResult{}
  153. vue.Type = "vue"
  154. vue.Name ="vue/api/modules/%s/index.js"
  155. charts := utils.GenerateResult{}
  156. charts.Type = "charts"
  157. charts.Name ="charts/values.yaml"
  158. chartsTmpl := utils.GenerateResult{}
  159. chartsTmpl.Type = "charts"
  160. chartsTmpl.Name ="charts/templates/config.yaml"
  161. */
  162. out, err := json.Marshal(res)
  163. if err != nil {
  164. fmt.Println(err.Error())
  165. return nil
  166. }
  167. return out
  168. }