system_init.go 8.3 KB

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