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
120 lines
3.3 KiB
Go
package apps
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"time"
|
|
"weather_go/models"
|
|
"weather_go/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()
|
|
}
|