add nmccity check

master
hwf452 9 months ago
parent e17b848ca2
commit f4969a41f7

@ -17,7 +17,7 @@ import (
) )
func init() { func init() {
initLogs() //initLogs()
initDatabase() initDatabase()
initSession() initSession()
initCron() initCron()
@ -112,8 +112,7 @@ func initCronWeather() {
spec := beego.AppConfig.String("syncFrequencyWeather") spec := beego.AppConfig.String("syncFrequencyWeather")
c.AddFunc(spec, func() { c.AddFunc(spec, func() {
httpWeatherService := new(service.HttpWeatherService) httpWeatherService := new(service.HttpWeatherService)
httpWeatherService.GetNmcNowWeather() httpWeatherService.GetNmcNowWeatherSyn()
}) })
c.Start() c.Start()
} }

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

@ -15,14 +15,14 @@ httpport = 8084
SessionName = "beegosessionID" SessionName = "beegosessionID"
syncFrequency = "0 */10 * * * *" syncFrequency = "0 */10 * * * *"
# syncFrequencyWeather = "0 16 * * * *" syncFrequencyWeather = "0 16 * * * *"
syncFrequencyWeather = "*/10 * * * * *" # syncFrequencyWeather = "0 9 * * * *"
mysqluser = "root" mysqluser = "root"
mysqlpass = "Skyinno251," mysqlpass = "Skyinno251,"
mysqlurls = "192.168.2.18:3306" mysqlurls = "192.168.2.18:3306"
mysqldb = "gorm" mysqldb = "weather"
mysqlparams = "charset=utf8mb4&parseTime=True&loc=Local" mysqlparams = "charset=utf8mb4&parseTime=True&loc=Local"
#连接池空闲 #连接池空闲
mysqlmaxIdle = 10 mysqlmaxIdle = 10

@ -18,10 +18,12 @@ func init() {
orm.RegisterModel(new(NmcCity)) orm.RegisterModel(new(NmcCity))
} }
func GetNmcCityList() []*NmcCity { func GetNmcCityList() []*NmcCity {
items := make([]*NmcCity, 0) items := make([]*NmcCity, 0)
orm.NewOrm().QueryTable(new(NmcCity)).All(&items) orm.NewOrm().QueryTable(new(NmcCity)).All(&items)
return items return items
} }
func NmcCityAdd(item *NmcCity) (int64, error) {
return orm.NewOrm().Insert(item)
}

@ -1,6 +1,7 @@
package models package models
import ( import (
"fmt"
"github.com/astaxie/beego/orm" "github.com/astaxie/beego/orm"
"time" "time"
) )
@ -28,6 +29,8 @@ func GetNmcProvince(item *NmcProvince) bool {
if err == nil { if err == nil {
return true return true
} }
fmt.Println("GetNmcProvince err!=nil")
fmt.Println(err)
return false return false
} }

@ -25,12 +25,12 @@ func SyncNmcCityAndNmcProvince() {
if err != nil { if err != nil {
fmt.Println(err) fmt.Println(err)
} }
fmt.Println(provinceListJson) //fmt.Println(provinceListJson)
var provinces []models.NmcProvince var provinces []models.NmcProvince
json.Unmarshal([]byte(provinceListJson), &provinces) json.Unmarshal([]byte(provinceListJson), &provinces)
//fmt.Println(provinces) //fmt.Println(provinces)
//fmt.Println(len(provinces)) fmt.Println(len(provinces))
for _, item := range provinces { for _, item := range provinces {
if models.GetNmcProvince(&item) { if models.GetNmcProvince(&item) {
@ -40,14 +40,73 @@ func SyncNmcCityAndNmcProvince() {
//不存在 //不存在
models.NmcProvinceAdd(&item) models.NmcProvinceAdd(&item)
fmt.Println("不存在,插入数据库") fmt.Println("不存在,插入数据库")
time.Sleep(time.Millisecond * 3000)
//http://www.nmc.cn/rest/province/ASX?_=1741055184606 //http://www.nmc.cn/rest/province/ASX?_=1741055184606
//“http://www.nmc.cn/rest/province/" + code + "?_=" + String.valueOf(System.currentTimeMillis()); //“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) 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) GetNmcNowWeather() { func (s *HttpWeatherService) GetNmcNowWeatherSync() {
citys := models.GetNmcCityList() citys := models.GetNmcCityList()
fmt.Println(citys) fmt.Println(citys)
fmt.Println(len(citys)) fmt.Println(len(citys))

Binary file not shown.

Binary file not shown.
Loading…
Cancel
Save