package apps import ( "fmt" "os" "time" "weather/models" "weather/service" "github.com/robfig/cron" "github.com/astaxie/beego" "github.com/astaxie/beego/logs" "github.com/astaxie/beego/orm" _ "github.com/astaxie/beego/session/mysql" _ "github.com/go-sql-driver/mysql" ) func init() { //initLogs() initDatabase() initSession() initCron() initCronWeather() } func initLogs() { if beego.BConfig.RunMode == beego.DEV { logs.SetLogger(logs.AdapterConsole, `{"level":7}`) } else if beego.BConfig.RunMode == beego.PROD { wd, _ := os.Getwd() dir := wd + "/logs/" //dir := wd + "\\logs\\" _, err := os.Stat(dir) if os.IsNotExist(err) { os.Mkdir(dir, os.ModePerm) } conf := `{"filename": "` + dir + `sesame.log", "level":6, "maxdays":90, "separate":["emergency", "alert", "critical", "error", "warning", "notice", "info"]}` fmt.Println(conf) logs.SetLogger(logs.AdapterMultiFile, conf) logs.EnableFuncCallDepth(true) logs.Async() } } func initDatabase() { user := beego.AppConfig.String("mysqluser") pw := beego.AppConfig.String("mysqlpass") url := beego.AppConfig.String("mysqlurls") db := beego.AppConfig.String("mysqldb") params := beego.AppConfig.String("mysqlparams") dataSource := fmt.Sprintf("%s:%s@tcp(%s)/%s?%s", user, pw, url, db, params) maxIdle, _ := beego.AppConfig.Int("mysqlmaxIdle") maxConn, _ := beego.AppConfig.Int("mysqlmaxConn") logs.Debug(dataSource) err := orm.RegisterDriver("mysql", orm.DRMySQL) if err != nil { logs.Error("注册数据库驱动失败!%v", err) } orm.RegisterModel(new(models.Account)) orm.RegisterModel(new(models.User), new(models.Post), new(models.Profile), new(models.Tag)) orm.RegisterModel(new(models.TyhoonActivity)) orm.RegisterModel(new(models.TyhoonListItem)) orm.RegisterModel(new(models.TyphoonInfo)) err = orm.RegisterDataBase("default", "mysql", dataSource, maxIdle, maxConn) if err != nil { logs.Error("注册数据库失败! %v", err) } orm.RunSyncdb("default", false, true) orm.DefaultTimeLoc = time.UTC logs.Notice("数据库注册成功: %s@%s", db, url) if beego.AppConfig.String("runmode") == "dev" { orm.Debug = true } orm.RunCommand() } func initSession() { user := beego.AppConfig.String("mysqluser") pw := beego.AppConfig.String("mysqlpass") url := beego.AppConfig.String("mysqlurls") db := beego.AppConfig.String("mysqldb") params := beego.AppConfig.String("mysqlparams") dataSource := fmt.Sprintf("%s:%s@tcp(%s)/%s?%s", user, pw, url, db, params) beego.BConfig.WebConfig.Session.SessionOn = true beego.BConfig.WebConfig.Session.SessionProvider = "mysql" beego.BConfig.WebConfig.Session.SessionProviderConfig = dataSource beego.BConfig.WebConfig.Session.SessionName = beego.AppConfig.String("SessionName") beego.BConfig.WebConfig.Session.SessionGCMaxLifetime = 3600 * 24 * 7 beego.BConfig.WebConfig.Session.SessionCookieLifeTime = 3600 * 24 * 7 } func initCron() { //c := cron.New() //spec := beego.AppConfig.String("syncFrequency") //c.AddFunc(spec, func() { // httpService := new(service.HttpService) // httpService.GetActivityTyhoon() //}) //c.Start() fmt.Println("storm initCron") } func initCronWeather() { c := cron.New() spec := beego.AppConfig.String("syncFrequencyWeather") c.AddFunc(spec, func() { httpWeatherService := new(service.HttpWeatherService) httpWeatherService.GetNmcNowWeatherSyn() }) c.Start() }