system_init.go 4.8 KB

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