system_init.go 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  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. domains := []models.SysDomain{
  33. {
  34. Id: "287c50a4-caad-4557-80c8-aca81af9f370",
  35. Name: "千秋软件",
  36. Domain: "qianqiusoft.com",
  37. DataSource: "root:qian@123@tcp(localhost:3306)/ssm-qianqiusoft?charset=utf8&loc=Local",
  38. CreateTime:time.Now(),
  39. LastUpdateDate: time.Now(),
  40. },
  41. }
  42. orgs := []models.SysOrg{
  43. {
  44. Id: "287c50a4-caad-4557-80c8-aca81af9f370",
  45. Name: "千秋软件",
  46. CreateTime:time.Now(),
  47. LastUpdateDate: time.Now(),
  48. },
  49. }
  50. users := []models.SysUser{
  51. {
  52. Id: "187c50a4-caad-4557-80c8-aca81af9f370",
  53. Name: "管理员",
  54. LoginId: "admin",
  55. OrgId: "287c50a4-caad-4557-80c8-aca81af9f370",
  56. Password: utils.HashPassword("123456", ""),
  57. CreateTime:time.Now(),
  58. LastUpdateDate: time.Now(),
  59. },
  60. }
  61. roles := []models.SysRole{
  62. {
  63. Id: "487c50a4-caad-4557-80c8-aca81af9f370",
  64. Name: "超级管理员",
  65. CreateTime:time.Now(),
  66. LastUpdateDate: time.Now(),
  67. },
  68. }
  69. userRoles := []models.SysUserRole{
  70. {
  71. Id: "587c50a4-caad-4557-80c8-aca81af9f370",
  72. RoleId: "387c50a4-caad-4557-80c8-aca81af9f370",
  73. UserId: "187c50a4-caad-4557-80c8-aca81af9f370",
  74. CreateTime:time.Now(),
  75. LastUpdateDate: time.Now(),
  76. },
  77. }
  78. menus := []models.SysMenu{
  79. {
  80. Id: "387c50a4-caad-4557-80c8-aca81af9f370",
  81. Name: "系统管理",
  82. CreateTime:time.Now(),
  83. LastUpdateDate: time.Now(),
  84. },
  85. {
  86. Id: "387c50a4-caad-4557-80c8-aca81af9f371",
  87. Name: "用户管理",
  88. Parent: "387c50a4-caad-4557-80c8-aca81af9f370",
  89. Url: "/sys/user",
  90. CreateTime:time.Now(),
  91. LastUpdateDate: time.Now(),
  92. },
  93. {
  94. Id: "387c50a4-caad-4557-80c8-aca81af9f372",
  95. Name: "组织架构",
  96. Parent: "387c50a4-caad-4557-80c8-aca81af9f370",
  97. Url: "/sys/org",
  98. CreateTime:time.Now(),
  99. LastUpdateDate: time.Now(),
  100. },
  101. {
  102. Id: "387c50a4-caad-4557-80c8-aca81af9f373",
  103. Name: "角色管理",
  104. Parent: "387c50a4-caad-4557-80c8-aca81af9f370",
  105. Url: "/sys/role",
  106. CreateTime:time.Now(),
  107. LastUpdateDate: time.Now(),
  108. },
  109. {
  110. Id: "387c50a4-caad-4557-80c8-aca81af9f374",
  111. Name: "菜单管理",
  112. Parent: "387c50a4-caad-4557-80c8-aca81af9f370",
  113. Url: "/sys/menu",
  114. CreateTime:time.Now(),
  115. LastUpdateDate: time.Now(),
  116. },
  117. {
  118. Id: "387c50a4-caad-4557-80c8-aca81af9f375",
  119. Name: "字典管理",
  120. Parent: "387c50a4-caad-4557-80c8-aca81af9f370",
  121. Url: "/sys/dict",
  122. CreateTime:time.Now(),
  123. LastUpdateDate: time.Now(),
  124. },
  125. {
  126. Id: "387c50a4-caad-4557-80c8-aca81af9f376",
  127. Name: "日志管理",
  128. Parent: "387c50a4-caad-4557-80c8-aca81af9f370",
  129. Url: "/sys/log",
  130. CreateTime:time.Now(),
  131. LastUpdateDate: time.Now(),
  132. },
  133. }
  134. models.SyncDb(db)
  135. _, err := db.Insert(domains)
  136. printError(err)
  137. _, err = db.Insert(orgs)
  138. printError(err)
  139. _, err = db.Insert(users)
  140. printError(err)
  141. _, err = db.Insert(roles)
  142. printError(err)
  143. _, err = db.Insert(userRoles)
  144. printError(err)
  145. _, err = db.Insert(menus)
  146. printError(err)
  147. }
  148. func initOrmEngine(orm *xorm.Engine, driverName string) {
  149. path, _ := utils.GetCurrentPath()
  150. sqldir := path + "/sqlconfig"
  151. //注册SqlMap配置,xml格式
  152. err := orm.RegisterSqlMap(xorm.Xml(sqldir, ".xml"))
  153. printError(err)
  154. //注册SqlTemplate配置,使用Pongo2模板引擎
  155. err = orm.RegisterSqlTemplate(xorm.Pongo2(sqldir, "_"+driverName+".stpl"))
  156. printError(err)
  157. //注册SqlTemplate配置,使用Jet模板引擎
  158. err = orm.RegisterSqlTemplate(xorm.Jet(sqldir, "_"+driverName+".jet"))
  159. printError(err)
  160. //注册SqlTemplate配置,使用html/template模板引擎
  161. err = orm.RegisterSqlTemplate(xorm.Default(sqldir, "_"+driverName+".tpl"))
  162. printError(err)
  163. //设置时区
  164. orm.DatabaseTZ = time.Local // 必须
  165. orm.TZLocation = time.Local // 必须
  166. time.LoadLocation("Asia/Shanghai")
  167. orm.StartFSWatcher()
  168. orm.ShowSQL(true)
  169. /*for k,_:=range orm.SqlMap.Sql{
  170. fmt.Println(k)
  171. }*/
  172. //orm.ShowExecTime(true)
  173. createDatabase(orm)
  174. }
  175. func printError(err error) {
  176. if err != nil {
  177. logs.Error(err.Error())
  178. }
  179. }