You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

120 lines
3.3 KiB
Go

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()
}