package engine import ( "fmt" "git.qianqiusoft.com/qianqiusoft/light-apiengine/logs" "git.qianqiusoft.com/qianqiusoft/light-apiengine/models" "git.qianqiusoft.com/qianqiusoft/light-apiengine/utils" "github.com/xormplus/xorm" "regexp" "time" ) func createDatabase(orm *xorm.Engine) { if orm.DriverName() == "mysql" { dbname := orm.DataSourceName() reg := regexp.MustCompile("(.*)/(.*)(\\?.*)") //strings := reg.FindAllStringSubmatch(s, -1) strings := reg.FindStringSubmatch(dbname) fmt.Println(strings) if len(strings) > 3 { dbname = strings[2] db, _ := xorm.NewEngine(orm.DriverName(), strings[1]+"/") db.ShowSQL(true) _, err := db.Sql("CREATE DATABASE IF NOT EXISTS `" + dbname + "` default charset utf8 COLLATE utf8_general_ci").Execute() if err != nil { fmt.Println("create database error", err) } else { fmt.Println("create database success:", dbname) } } } } func initPlatformDbData(db *xorm.Engine) { /*domains := []models.SysDomain{ { Id: "287c50a4-caad-4557-80c8-aca81af9f370", Name: "智慧蜂云", Domain: "ccbeetech.com", DataSource: "root:qian@123@tcp(localhost:3306)/ssm-ccbeetech?charset=utf8&loc=Local", CreateTime: models.NowLocal(), LastUpdateTime: time.Now().UnixNano(), }, }*/ orgs := []models.SysOrg{ { Id: "287c50a4-caad-4557-80c8-aca81af9f370", Name: "安全智管家平台", CreateTime: models.NowLocal(), LastUpdateTime: time.Now().UnixNano(), }, } users := []models.SysUser{ { Id: "187c50a4-caad-4557-80c8-aca81af9f370", Name: "管理员", LoginId: "admin", Domain: "qianqiuiot.com", OrgId: "287c50a4-caad-4557-80c8-aca81af9f370", Password: utils.HashPassword("123456", ""), CreateTime: models.NowLocal(), LastUpdateTime: time.Now().UnixNano(), }, } roles := []models.SysRole{ { Id: "5c38ee66-c5e6-40a7-b190-86d115bae3e5", Name: "超级管理员", CreateTime: models.NowLocal(), LastUpdateTime: time.Now().UnixNano(), }, } userRoles := []models.SysUserRole{ { Id: "587c50a4-caad-4557-80c8-aca81af9f370", RoleId: "5c38ee66-c5e6-40a7-b190-86d115bae3e5", UserId: "187c50a4-caad-4557-80c8-aca81af9f370", CreateTime: models.NowLocal(), LastUpdateTime: time.Now().UnixNano(), }, } menus := []models.SysMenu{ { Id: "387c50a4-caad-4557-80c8-aca81af9f370", Name: "系统管理", CreateTime: models.NowLocal(), LastUpdateTime: time.Now().UnixNano(), OrderNum: 10000, }, { Id: "64994cad-559f-445e-b1be-3009c9a4e850", Name: "域管理", Parent: "387c50a4-caad-4557-80c8-aca81af9f370", Url: "/sys/domain", Component: "system/domain", CreateTime: models.NowLocal(), LastUpdateTime: time.Now().UnixNano(), OrderNum: 1001, }, { Id: "387c50a4-caad-4557-80c8-aca81af9f374", Name: "后台菜单", Parent: "387c50a4-caad-4557-80c8-aca81af9f370", Url: "/sys/menu", Component: "system/menu", CreateTime: models.NowLocal(), LastUpdateTime: time.Now().UnixNano(), OrderNum: 1002, }, { Id: "f9928388-7861-4551-9273-e74858962ff8", Name: "APP菜单", Parent: "387c50a4-caad-4557-80c8-aca81af9f370", Url: "/sys/app_menu", Component: "system/app_menu", CreateTime: models.NowLocal(), LastUpdateTime: time.Now().UnixNano(), OrderNum: 1003, }, { Id: "387c50a4-caad-4557-80c8-aca81af9f371", Name: "用户管理", Parent: "387c50a4-caad-4557-80c8-aca81af9f370", Url: "/sys/user", Component: "system/user", CreateTime: models.NowLocal(), LastUpdateTime: time.Now().UnixNano(), OrderNum: 1004, }, { Id: "387c50a4-caad-4557-80c8-aca81af9f372", Name: "组织架构", Parent: "387c50a4-caad-4557-80c8-aca81af9f370", Url: "/sys/org", Component: "system/org", CreateTime: models.NowLocal(), LastUpdateTime: time.Now().UnixNano(), OrderNum: 1005, }, { Id: "387c50a4-caad-4557-80c8-aca81af9f373", Name: "角色管理", Parent: "387c50a4-caad-4557-80c8-aca81af9f370", Url: "/sys/role", Component: "system/role", CreateTime: models.NowLocal(), LastUpdateTime: time.Now().UnixNano(), OrderNum: 1006, }, { Id: "387c50a4-caad-4557-80c8-aca81af9f375", Name: "字典管理", Parent: "387c50a4-caad-4557-80c8-aca81af9f370", Url: "/sys/dict", Component: "system/dic", CreateTime: models.NowLocal(), LastUpdateTime: time.Now().UnixNano(), OrderNum: 1007, }, { Id: "387c50a4-caad-4557-80c8-aca81af9f376", Name: "日志管理", Parent: "387c50a4-caad-4557-80c8-aca81af9f370", Url: "/sys/log", Component: "system/log", CreateTime: models.NowLocal(), LastUpdateTime: time.Now().UnixNano(), OrderNum: 1008, }, } models.SyncDb(db) /*_, err := db.Insert(domains) printError(err)*/ _, err := db.Insert(orgs) printError(err) _, err = db.Insert(users) printError(err) _, err = db.Insert(roles) printError(err) _, err = db.Insert(userRoles) printError(err) _, err = db.Insert(menus) printError(err) } func initOrmEngine(orm *xorm.Engine, driverName string) { path, _ := utils.GetCurrentPath() sqldir := path + "/sqlconfig" //注册SqlMap配置,xml格式 err := orm.RegisterSqlMap(xorm.Xml(sqldir, ".xml")) printError(err) //注册SqlTemplate配置,使用Pongo2模板引擎 err = orm.RegisterSqlTemplate(xorm.Pongo2(sqldir, ".stpl")) printError(err) //注册SqlTemplate配置,使用Jet模板引擎 err = orm.RegisterSqlTemplate(xorm.Jet(sqldir, ".jet")) printError(err) //注册SqlTemplate配置,使用html/template模板引擎 err = orm.RegisterSqlTemplate(xorm.Default(sqldir, ".tpl")) printError(err) //设置时区 orm.DatabaseTZ = time.Local // 必须 orm.TZLocation = time.Local // 必须 time.LoadLocation("Asia/Shanghai") orm.StartFSWatcher() orm.ShowSQL(true) /*for k,_:=range orm.SqlMap.Sql{ fmt.Println(k) }*/ //orm.ShowExecTime(true) createDatabase(orm) } func initBusinessDbData(domainid, login_id, domain string, db *xorm.Engine, platform_db *xorm.Engine) { users := models.SysUser{ Id: domainid, Name: "管理员", LoginId: login_id, Domain: domain, Password: utils.HashPassword("123456", ""), CreateTime: models.NowLocal(), } roles := []models.SysRole{ { Id: "5c38ee66-c5e6-40a7-b190-86d115bae3e5", Name: "管理员", CreateTime: models.NowLocal(), }, } menu := []models.SysMenu{ { Id: domainid, Name: "首页", Code: "home", Inheritance: "|" + domainid + "|", Url: "home", Icon: "index", Component: "system/menu", CreateTime: models.NowLocal(), }, } userRoles := []models.SysUserRole{ { Id: domainid, RoleId: "5c38ee66-c5e6-40a7-b190-86d115bae3e5", UserId: domainid, CreateTime: models.NowLocal(), }, } platform_db.Insert(users) db.Insert(users) db.Insert(roles) db.Insert(menu) db.Insert(userRoles) } func printError(err error) { if err != nil { logs.Error(err.Error()) } }