system_init.go 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. package engine
  2. import (
  3. "fmt"
  4. "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
  5. "git.qianqiusoft.com/qianqiusoft/light-apiengine/utils"
  6. "git.qianqiusoft.com/qianqiusoft/light-apiengine/logs"
  7. "github.com/xormplus/xorm"
  8. "regexp"
  9. "time"
  10. )
  11. func createDatabase(orm *xorm.Engine) {
  12. if orm.DriverName() == "mysql" {
  13. dbname := orm.DataSourceName()
  14. reg := regexp.MustCompile("(.*)/(.*)(\\?.*)")
  15. //strings := reg.FindAllStringSubmatch(s, -1)
  16. strings := reg.FindStringSubmatch(dbname)
  17. fmt.Println(strings)
  18. if len(strings) > 3 {
  19. dbname = strings[2]
  20. db, _ := xorm.NewEngine(orm.DriverName(), strings[1]+"/")
  21. db.ShowSQL(true)
  22. _, err := db.Sql("CREATE DATABASE IF NOT EXISTS `" + dbname + "` default charset utf8 COLLATE utf8_general_ci").Execute()
  23. if err != nil {
  24. fmt.Println("create database error", err)
  25. } else {
  26. fmt.Println("create database success:", dbname)
  27. }
  28. }
  29. }
  30. }
  31. func initPlatformDbData(db *xorm.Engine) {
  32. orgs := []models.SysOrg{
  33. {
  34. Id: "287c50a4-caad-4557-80c8-aca81af9f370",
  35. Name: "千秋软件",
  36. CreateTime:time.Now(),
  37. LastUpdateDate: time.Now(),
  38. },
  39. }
  40. users := []models.SysUser{
  41. {
  42. Id: "187c50a4-caad-4557-80c8-aca81af9f370",
  43. Name: "管理员",
  44. LoginId: "admin",
  45. OrgId: "287c50a4-caad-4557-80c8-aca81af9f370",
  46. Password: "123456",
  47. CreateTime:time.Now(),
  48. LastUpdateDate: time.Now(),
  49. },
  50. }
  51. roles := []models.SysRole{
  52. {
  53. Id: "487c50a4-caad-4557-80c8-aca81af9f370",
  54. Name: "超级管理员",
  55. CreateTime:time.Now(),
  56. LastUpdateDate: time.Now(),
  57. },
  58. }
  59. userRoles := []models.SysUserRole{
  60. {
  61. Id: "587c50a4-caad-4557-80c8-aca81af9f370",
  62. RoleId: "387c50a4-caad-4557-80c8-aca81af9f370",
  63. UserId: "187c50a4-caad-4557-80c8-aca81af9f370",
  64. CreateTime:time.Now(),
  65. LastUpdateDate: time.Now(),
  66. },
  67. }
  68. menus := []models.SysMenu{
  69. {
  70. Id: "387c50a4-caad-4557-80c8-aca81af9f370",
  71. Name: "系统管理",
  72. CreateTime:time.Now(),
  73. LastUpdateDate: time.Now(),
  74. },
  75. {
  76. Id: "387c50a4-caad-4557-80c8-aca81af9f371",
  77. Name: "用户管理",
  78. Parent: "387c50a4-caad-4557-80c8-aca81af9f370",
  79. Url: "/sys/user",
  80. CreateTime:time.Now(),
  81. LastUpdateDate: time.Now(),
  82. },
  83. {
  84. Id: "387c50a4-caad-4557-80c8-aca81af9f372",
  85. Name: "组织架构",
  86. Parent: "387c50a4-caad-4557-80c8-aca81af9f370",
  87. Url: "/sys/org",
  88. CreateTime:time.Now(),
  89. LastUpdateDate: time.Now(),
  90. },
  91. {
  92. Id: "387c50a4-caad-4557-80c8-aca81af9f373",
  93. Name: "角色管理",
  94. Parent: "387c50a4-caad-4557-80c8-aca81af9f370",
  95. Url: "/sys/role",
  96. CreateTime:time.Now(),
  97. LastUpdateDate: time.Now(),
  98. },
  99. {
  100. Id: "387c50a4-caad-4557-80c8-aca81af9f374",
  101. Name: "菜单管理",
  102. Parent: "387c50a4-caad-4557-80c8-aca81af9f370",
  103. Url: "/sys/menu",
  104. CreateTime:time.Now(),
  105. LastUpdateDate: time.Now(),
  106. },
  107. {
  108. Id: "387c50a4-caad-4557-80c8-aca81af9f375",
  109. Name: "字典管理",
  110. Parent: "387c50a4-caad-4557-80c8-aca81af9f370",
  111. Url: "/sys/dict",
  112. CreateTime:time.Now(),
  113. LastUpdateDate: time.Now(),
  114. },
  115. {
  116. Id: "387c50a4-caad-4557-80c8-aca81af9f376",
  117. Name: "日志管理",
  118. Parent: "387c50a4-caad-4557-80c8-aca81af9f370",
  119. Url: "/sys/log",
  120. CreateTime:time.Now(),
  121. LastUpdateDate: time.Now(),
  122. },
  123. }
  124. models.SyncDb(db)
  125. _, err := db.Insert(orgs)
  126. printError(err)
  127. _, err = db.Insert(users)
  128. printError(err)
  129. _, err = db.Insert(roles)
  130. printError(err)
  131. _, err = db.Insert(userRoles)
  132. printError(err)
  133. _, err = db.Insert(menus)
  134. printError(err)
  135. }
  136. func initOrmEngine(orm *xorm.Engine, driverName string) {
  137. path, _ := utils.GetCurrentPath()
  138. sqldir := path + "/sqlconfig"
  139. //注册SqlMap配置,xml格式
  140. err := orm.RegisterSqlMap(xorm.Xml(sqldir, ".xml"))
  141. printError(err)
  142. //注册SqlTemplate配置,使用Pongo2模板引擎
  143. err = orm.RegisterSqlTemplate(xorm.Pongo2(sqldir, "_"+driverName+".stpl"))
  144. printError(err)
  145. //注册SqlTemplate配置,使用Jet模板引擎
  146. err = orm.RegisterSqlTemplate(xorm.Jet(sqldir, "_"+driverName+".jet"))
  147. printError(err)
  148. //注册SqlTemplate配置,使用html/template模板引擎
  149. err = orm.RegisterSqlTemplate(xorm.Default(sqldir, "_"+driverName+".tpl"))
  150. printError(err)
  151. //设置时区
  152. orm.DatabaseTZ = time.Local // 必须
  153. orm.TZLocation = time.Local // 必须
  154. time.LoadLocation("Asia/Shanghai")
  155. orm.StartFSWatcher()
  156. orm.ShowSQL(true)
  157. /*for k,_:=range orm.SqlMap.Sql{
  158. fmt.Println(k)
  159. }*/
  160. //orm.ShowExecTime(true)
  161. createDatabase(orm)
  162. }
  163. func printError(err error) {
  164. if err != nil {
  165. logs.Error(err.Error())
  166. }
  167. }