diff --git a/weather/apps/initialize.go b/weather/apps/initialize.go index d6f0c77..3a672ba 100755 --- a/weather/apps/initialize.go +++ b/weather/apps/initialize.go @@ -17,7 +17,7 @@ import ( ) func init() { - initLogs() + //initLogs() initDatabase() initSession() initCron() @@ -112,8 +112,7 @@ func initCronWeather() { spec := beego.AppConfig.String("syncFrequencyWeather") c.AddFunc(spec, func() { httpWeatherService := new(service.HttpWeatherService) - httpWeatherService.GetNmcNowWeather() + httpWeatherService.GetNmcNowWeatherSyn() }) c.Start() } - diff --git a/weather/apps/initialize_oracle.go b/weather/apps/initialize_oracle.go deleted file mode 100755 index 94a45e2..0000000 --- a/weather/apps/initialize_oracle.go +++ /dev/null @@ -1,119 +0,0 @@ -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_oracle() - //initDatabase_oracle() - //initSession_oracle() - //initCron_oracle() - //initCronWeather_oracle() -} - -func initLogs_oracle() { - 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/" - _, 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_oracle() { - 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_oracle() { - 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_oracle() { - c := cron.New() - spec := beego.AppConfig.String("syncFrequency") - c.AddFunc(spec, func() { - httpService := new(service.HttpService) - httpService.GetActivityTyhoon() - }) - c.Start() -} - -func initCronWeather_oracle() { - c := cron.New() - spec := beego.AppConfig.String("syncFrequencyWeather") - c.AddFunc(spec, func() { - httpWeatherService := new(service.HttpWeatherService) - httpWeatherService.GetNmcNowWeather() - }) - c.Start() -} - - diff --git a/weather/conf/app.conf b/weather/conf/app.conf index 38716c7..995cd74 100755 --- a/weather/conf/app.conf +++ b/weather/conf/app.conf @@ -15,14 +15,14 @@ httpport = 8084 SessionName = "beegosessionID" syncFrequency = "0 */10 * * * *" -# syncFrequencyWeather = "0 16 * * * *" -syncFrequencyWeather = "*/10 * * * * *" +syncFrequencyWeather = "0 16 * * * *" +# syncFrequencyWeather = "0 9 * * * *" mysqluser = "root" mysqlpass = "Skyinno251," mysqlurls = "192.168.2.18:3306" -mysqldb = "gorm" +mysqldb = "weather" mysqlparams = "charset=utf8mb4&parseTime=True&loc=Local" #连接池空闲 mysqlmaxIdle = 10 diff --git a/weather/models/NmcCity.go b/weather/models/NmcCity.go index 09b6ab0..b9931e6 100755 --- a/weather/models/NmcCity.go +++ b/weather/models/NmcCity.go @@ -18,10 +18,12 @@ func init() { orm.RegisterModel(new(NmcCity)) } - func GetNmcCityList() []*NmcCity { items := make([]*NmcCity, 0) orm.NewOrm().QueryTable(new(NmcCity)).All(&items) return items } +func NmcCityAdd(item *NmcCity) (int64, error) { + return orm.NewOrm().Insert(item) +} diff --git a/weather/models/NmcProvince.go b/weather/models/NmcProvince.go index 55dde6a..b228d68 100644 --- a/weather/models/NmcProvince.go +++ b/weather/models/NmcProvince.go @@ -1,6 +1,7 @@ package models import ( + "fmt" "github.com/astaxie/beego/orm" "time" ) @@ -28,6 +29,8 @@ func GetNmcProvince(item *NmcProvince) bool { if err == nil { return true } + fmt.Println("GetNmcProvince err!=nil") + fmt.Println(err) return false } diff --git a/weather/service/HttpWeatherService.go b/weather/service/HttpWeatherService.go index 4b8a6d4..552c6d1 100755 --- a/weather/service/HttpWeatherService.go +++ b/weather/service/HttpWeatherService.go @@ -25,12 +25,12 @@ func SyncNmcCityAndNmcProvince() { if err != nil { fmt.Println(err) } - fmt.Println(provinceListJson) + //fmt.Println(provinceListJson) var provinces []models.NmcProvince json.Unmarshal([]byte(provinceListJson), &provinces) //fmt.Println(provinces) - //fmt.Println(len(provinces)) + fmt.Println(len(provinces)) for _, item := range provinces { if models.GetNmcProvince(&item) { @@ -40,14 +40,73 @@ func SyncNmcCityAndNmcProvince() { //不存在 models.NmcProvinceAdd(&item) fmt.Println("不存在,插入数据库") + time.Sleep(time.Millisecond * 3000) //http://www.nmc.cn/rest/province/ASX?_=1741055184606 //“http://www.nmc.cn/rest/province/" + code + "?_=" + String.valueOf(System.currentTimeMillis()); + + fmt.Println(item) + timeUnix := time.Now().Unix() + s := strconv.FormatInt(timeUnix, 10) + url := "http://www.nmc.cn/rest/province/" + item.Code + "?_=" + s + "000" + fmt.Println(url) + req := httplib.Get(url) + //req.SetTLSClientConfig(&tls.Config{InsecureSkipVerify: true}) + cityListJson, err := req.String() + if err != nil { + fmt.Println(err) + } + var citys []models.NmcCity + json.Unmarshal([]byte(cityListJson), &citys) + fmt.Println(len(citys)) + now := time.Now() //获取当前时间 + for _, itemCity := range citys { + fmt.Println(itemCity) + itemCity.CreateDate = now + itemCity.LastUpdateDate = now + models.NmcCityAdd(&itemCity) + } + } } } -func (s *HttpWeatherService) GetNmcNowWeather() { +func (s *HttpWeatherService) GetNmcNowWeatherSyn() { + citys := models.GetNmcCityList() + fmt.Println(citys) + fmt.Println(len(citys)) + if len(citys) == 0 { + SyncNmcCityAndNmcProvince() + } + + for _, item := range citys { + time.Sleep(time.Millisecond * 300) + fmt.Println(*item) + timeUnix := time.Now().Unix() + s := strconv.FormatInt(timeUnix, 10) + url := "http://www.nmc.cn/rest/weather?stationid=" + item.Code + "&_=" + s + "000" + fmt.Println(url) + req := httplib.Get(url) + //req.SetTLSClientConfig(&tls.Config{InsecureSkipVerify: true}) + str, err := req.String() + if err != nil { + fmt.Println(err) + } + var nmcNowWeather = new(models.NmcNowWeather) + now := time.Now() //获取当前时间 + nmcNowWeather.Weather = str + nmcNowWeather.Code = item.Code + nmcNowWeather.WeatherDate = now.Format("2006-01-02") + id, errInsert := models.AddNmcNowWeather(nmcNowWeather) + if errInsert != nil { + println(errInsert.Error()) + } + fmt.Println(id) + fmt.Println(str) + } +} + +func (s *HttpWeatherService) GetNmcNowWeatherSync() { citys := models.GetNmcCityList() fmt.Println(citys) fmt.Println(len(citys)) diff --git a/weather/weather b/weather/weather deleted file mode 100755 index 5fcc098..0000000 Binary files a/weather/weather and /dev/null differ diff --git a/weather/weather.tar.gz b/weather/weather.tar.gz deleted file mode 100644 index 1608839..0000000 Binary files a/weather/weather.tar.gz and /dev/null differ