system_init.go 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. package engine
  2. import (
  3. "fmt"
  4. "regexp"
  5. "time"
  6. "git.qianqiusoft.com/qianqiusoft/light-apiengine/logs"
  7. "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
  8. "git.qianqiusoft.com/qianqiusoft/light-apiengine/utils"
  9. "github.com/xormplus/xorm"
  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. db.SetConnMaxLifetime(10 * time.Minute)
  23. db.SetMaxIdleConns(30)
  24. db.SetMaxOpenConns(30)
  25. _, err := db.Sql("CREATE DATABASE IF NOT EXISTS `" + dbname + "` default charset utf8 COLLATE utf8_general_ci").Execute()
  26. if err != nil {
  27. fmt.Println("create database error", err)
  28. } else {
  29. fmt.Println("create database success:", dbname)
  30. }
  31. }
  32. }
  33. }
  34. func initPlatformDbData(db *xorm.Engine) {
  35. /*domains := []models.SysDomain{
  36. {
  37. Id: "287c50a4-caad-4557-80c8-aca81af9f370",
  38. Name: "智慧蜂云",
  39. Domain: "ccbeetech.com",
  40. DataSource: "root:qian@123@tcp(localhost:3306)/ssm-ccbeetech?charset=utf8&loc=Local",
  41. CreateTime: models.NowLocal(),
  42. LastUpdateTime: time.Now().UnixNano(),
  43. },
  44. }*/
  45. orgs := []models.SysOrg{
  46. {
  47. Id: "287c50a4-caad-4557-80c8-aca81af9f370",
  48. Name: "安全智管家平台",
  49. CreateTime: models.NowLocal(),
  50. LastUpdateTime: time.Now().UnixNano(),
  51. },
  52. }
  53. users := []models.SysUser{
  54. {
  55. Id: "187c50a4-caad-4557-80c8-aca81af9f370",
  56. Name: "管理员",
  57. LoginId: "admin",
  58. Domain: "qianqiuiot.com",
  59. OrgId: "287c50a4-caad-4557-80c8-aca81af9f370",
  60. Password: utils.HashPassword("123456", ""),
  61. CreateTime: models.NowLocal(),
  62. LastUpdateTime: time.Now().UnixNano(),
  63. },
  64. }
  65. roles := []models.SysRole{
  66. {
  67. Id: "5c38ee66-c5e6-40a7-b190-86d115bae3e5",
  68. Name: "超级管理员",
  69. CreateTime: models.NowLocal(),
  70. LastUpdateTime: time.Now().UnixNano(),
  71. },
  72. }
  73. userRoles := []models.SysUserRole{
  74. {
  75. Id: "587c50a4-caad-4557-80c8-aca81af9f370",
  76. RoleId: "5c38ee66-c5e6-40a7-b190-86d115bae3e5",
  77. UserId: "187c50a4-caad-4557-80c8-aca81af9f370",
  78. CreateTime: models.NowLocal(),
  79. LastUpdateTime: time.Now().UnixNano(),
  80. },
  81. }
  82. menus := []models.SysMenu{
  83. {
  84. Id: "387c50a4-caad-4557-80c8-aca81af9f370",
  85. Name: "系统管理",
  86. CreateTime: models.NowLocal(),
  87. LastUpdateTime: time.Now().UnixNano(),
  88. OrderNum: 10000,
  89. },
  90. {
  91. Id: "64994cad-559f-445e-b1be-3009c9a4e850",
  92. Name: "域管理",
  93. Parent: "387c50a4-caad-4557-80c8-aca81af9f370",
  94. Url: "/sys/domain",
  95. Component: "system/domain",
  96. CreateTime: models.NowLocal(),
  97. LastUpdateTime: time.Now().UnixNano(),
  98. OrderNum: 1001,
  99. },
  100. {
  101. Id: "387c50a4-caad-4557-80c8-aca81af9f374",
  102. Name: "后台菜单",
  103. Parent: "387c50a4-caad-4557-80c8-aca81af9f370",
  104. Url: "/sys/menu",
  105. Component: "system/menu",
  106. CreateTime: models.NowLocal(),
  107. LastUpdateTime: time.Now().UnixNano(),
  108. OrderNum: 1002,
  109. },
  110. {
  111. Id: "f9928388-7861-4551-9273-e74858962ff8",
  112. Name: "APP菜单",
  113. Parent: "387c50a4-caad-4557-80c8-aca81af9f370",
  114. Url: "/sys/app_menu",
  115. Component: "system/app_menu",
  116. CreateTime: models.NowLocal(),
  117. LastUpdateTime: time.Now().UnixNano(),
  118. OrderNum: 1003,
  119. },
  120. {
  121. Id: "387c50a4-caad-4557-80c8-aca81af9f371",
  122. Name: "用户管理",
  123. Parent: "387c50a4-caad-4557-80c8-aca81af9f370",
  124. Url: "/sys/user",
  125. Component: "system/user",
  126. CreateTime: models.NowLocal(),
  127. LastUpdateTime: time.Now().UnixNano(),
  128. OrderNum: 1004,
  129. },
  130. {
  131. Id: "387c50a4-caad-4557-80c8-aca81af9f372",
  132. Name: "组织架构",
  133. Parent: "387c50a4-caad-4557-80c8-aca81af9f370",
  134. Url: "/sys/org",
  135. Component: "system/org",
  136. CreateTime: models.NowLocal(),
  137. LastUpdateTime: time.Now().UnixNano(),
  138. OrderNum: 1005,
  139. },
  140. {
  141. Id: "387c50a4-caad-4557-80c8-aca81af9f373",
  142. Name: "角色管理",
  143. Parent: "387c50a4-caad-4557-80c8-aca81af9f370",
  144. Url: "/sys/role",
  145. Component: "system/role",
  146. CreateTime: models.NowLocal(),
  147. LastUpdateTime: time.Now().UnixNano(),
  148. OrderNum: 1006,
  149. },
  150. {
  151. Id: "387c50a4-caad-4557-80c8-aca81af9f375",
  152. Name: "字典管理",
  153. Parent: "387c50a4-caad-4557-80c8-aca81af9f370",
  154. Url: "/sys/dict",
  155. Component: "system/dic",
  156. CreateTime: models.NowLocal(),
  157. LastUpdateTime: time.Now().UnixNano(),
  158. OrderNum: 1007,
  159. },
  160. {
  161. Id: "387c50a4-caad-4557-80c8-aca81af9f376",
  162. Name: "日志管理",
  163. Parent: "387c50a4-caad-4557-80c8-aca81af9f370",
  164. Url: "/sys/log",
  165. Component: "system/log",
  166. CreateTime: models.NowLocal(),
  167. LastUpdateTime: time.Now().UnixNano(),
  168. OrderNum: 1008,
  169. },
  170. }
  171. models.SyncDb(db)
  172. /*_, err := db.Insert(domains)
  173. printError(err)*/
  174. _, err := db.Insert(orgs)
  175. printError(err)
  176. _, err = db.Insert(users)
  177. printError(err)
  178. _, err = db.Insert(roles)
  179. printError(err)
  180. _, err = db.Insert(userRoles)
  181. printError(err)
  182. _, err = db.Insert(menus)
  183. printError(err)
  184. }
  185. func initOrmEngine(orm *xorm.Engine, driverName string) {
  186. path, _ := utils.GetCurrentPath()
  187. sqldir := path + "/sqlconfig"
  188. //注册SqlMap配置,xml格式
  189. err := orm.RegisterSqlMap(xorm.Xml(sqldir, ".xml"))
  190. printError(err)
  191. //注册SqlTemplate配置,使用Pongo2模板引擎
  192. err = orm.RegisterSqlTemplate(xorm.Pongo2(sqldir, ".stpl"))
  193. printError(err)
  194. //注册SqlTemplate配置,使用Jet模板引擎
  195. err = orm.RegisterSqlTemplate(xorm.Jet(sqldir, ".jet"))
  196. printError(err)
  197. //注册SqlTemplate配置,使用html/template模板引擎
  198. err = orm.RegisterSqlTemplate(xorm.Default(sqldir, ".tpl"))
  199. printError(err)
  200. //设置时区
  201. orm.DatabaseTZ = time.Local // 必须
  202. orm.TZLocation = time.Local // 必须
  203. time.LoadLocation("Asia/Shanghai")
  204. orm.StartFSWatcher()
  205. orm.ShowSQL(true)
  206. orm.SetConnMaxLifetime(10 * time.Minute)
  207. orm.SetMaxIdleConns(30)
  208. orm.SetMaxOpenConns(30)
  209. /*for k,_:=range orm.SqlMap.Sql{
  210. fmt.Println(k)
  211. }*/
  212. //orm.ShowExecTime(true)
  213. createDatabase(orm)
  214. }
  215. func initBusinessDbData(domainid, login_id, domain string, db *xorm.Engine, platform_db *xorm.Engine) {
  216. users := models.SysUser{
  217. Id: domainid,
  218. Name: "管理员",
  219. LoginId: login_id,
  220. Domain: domain,
  221. Password: utils.HashPassword("123456", ""),
  222. CreateTime: models.NowLocal(),
  223. }
  224. roles := []models.SysRole{
  225. {
  226. Id: "5c38ee66-c5e6-40a7-b190-86d115bae3e5",
  227. Name: "管理员",
  228. CreateTime: models.NowLocal(),
  229. },
  230. }
  231. menu := []models.SysMenu{
  232. {
  233. Id: domainid,
  234. Name: "首页",
  235. Code: "home",
  236. Inheritance: "|" + domainid + "|",
  237. Url: "home",
  238. Icon: "index",
  239. Component: "system/menu",
  240. CreateTime: models.NowLocal(),
  241. },
  242. }
  243. userRoles := []models.SysUserRole{
  244. {
  245. Id: domainid,
  246. RoleId: "5c38ee66-c5e6-40a7-b190-86d115bae3e5",
  247. UserId: domainid,
  248. CreateTime: models.NowLocal(),
  249. },
  250. }
  251. platform_db.Insert(users)
  252. db.Insert(users)
  253. db.Insert(roles)
  254. db.Insert(menu)
  255. db.Insert(userRoles)
  256. }
  257. func printError(err error) {
  258. if err != nil {
  259. logs.Error(err.Error())
  260. }
  261. }