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.
175 lines
5.1 KiB
Go
175 lines
5.1 KiB
Go
|
9 months ago
|
package service
|
||
|
|
|
||
|
|
import (
|
||
|
|
"crypto/tls"
|
||
|
|
"encoding/json"
|
||
|
|
"fmt"
|
||
|
|
"strings"
|
||
|
|
"time"
|
||
|
5 months ago
|
"weather_go/models"
|
||
|
9 months ago
|
|
||
|
|
"github.com/astaxie/beego/httplib"
|
||
|
|
)
|
||
|
|
|
||
|
|
type HttpService struct {
|
||
|
|
}
|
||
|
|
|
||
|
|
func (s *HttpService) GetActivityTyhoon() {
|
||
|
|
now := time.Now() //获取当前时间
|
||
|
|
timestamp1 := now.Unix() * 1000 //时间戳
|
||
|
|
fmt.Println("current timestamp1:%l", timestamp1)
|
||
|
|
//time.Sleep(10) //等待1秒
|
||
|
|
now1 := time.Now() //获取当前时间
|
||
|
|
timestamp2 := now1.Unix() * 1000 //时间戳
|
||
|
|
now3 := time.Now() //获取当前时间
|
||
|
|
timestamp3 := now3.Unix() //时间戳
|
||
|
|
fmt.Println("current timestamp2:%l", timestamp3)
|
||
|
|
// 两参数格式化
|
||
|
|
url := fmt.Sprintf("https://typhoon.slt.zj.gov.cn/Api/TyhoonActivity?callback=jQuery1830914871%v_%v_=%v", timestamp3, timestamp1, timestamp2)
|
||
|
|
fmt.Println(url)
|
||
|
|
req := httplib.Get(url)
|
||
|
|
req.SetTLSClientConfig(&tls.Config{InsecureSkipVerify: true})
|
||
|
|
|
||
|
|
str, err := req.String()
|
||
|
|
if err != nil {
|
||
|
|
fmt.Println(err)
|
||
|
|
}
|
||
|
|
//fmt.Println(str)
|
||
|
|
comLeft := strings.Index(str, "[")
|
||
|
|
pos := str[comLeft:]
|
||
|
|
posLeft := strings.Index(pos, "]")
|
||
|
|
jsonTyhoonActivity := pos[0 : posLeft+1]
|
||
|
|
fmt.Println(jsonTyhoonActivity)
|
||
|
|
|
||
|
|
var activitys []models.TyhoonActivity
|
||
|
|
json.Unmarshal([]byte(jsonTyhoonActivity), &activitys)
|
||
|
|
fmt.Println(activitys)
|
||
|
|
fmt.Println(len(activitys))
|
||
|
|
for _, item := range activitys {
|
||
|
|
if models.GetTyhoonActivity(&item) {
|
||
|
|
//存在
|
||
|
|
fmt.Println("存在")
|
||
|
|
} else {
|
||
|
|
//不存在
|
||
|
|
models.TyhoonActivityAdd(&item)
|
||
|
|
fmt.Println("不存在,插入数据库")
|
||
|
|
}
|
||
|
|
}
|
||
|
|
activitys = make([]models.TyhoonActivity, 0)
|
||
|
|
//不存在活跃的台风
|
||
|
|
if len(activitys) == 0 {
|
||
|
|
items := models.GetTyhoonActivityList()
|
||
|
|
if items != nil && len(items) > 0 {
|
||
|
|
for _, item := range items {
|
||
|
|
models.TyhoonActivityDel(item)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
s.GetTyhoonList(now.Year())
|
||
|
|
|
||
|
|
//data, err := json.Marshal(activitys)
|
||
|
|
//if err == nil {
|
||
|
|
// fmt.Println(string(data))
|
||
|
|
//}
|
||
|
|
}
|
||
|
|
|
||
|
|
func (s *HttpService) GetTyhoonList(year int) {
|
||
|
|
now := time.Now() //获取当前时间
|
||
|
|
timestamp1 := now.Unix() * 1000 //时间戳
|
||
|
|
fmt.Println("current timestamp1:%l", timestamp1)
|
||
|
|
//time.Sleep(10) //等待1秒
|
||
|
|
now1 := time.Now() //获取当前时间
|
||
|
|
timestamp2 := now1.Unix() * 1000 //时间戳
|
||
|
|
now3 := time.Now() //获取当前时间
|
||
|
|
timestamp3 := now3.Unix() //时间戳
|
||
|
|
fmt.Println("current timestamp2:%l", timestamp3)
|
||
|
|
// 两参数格式化
|
||
|
|
url := fmt.Sprintf("https://typhoon.slt.zj.gov.cn/Api/TyphoonList/%v?callback=jQuery18303639632%v_%v_=%v", year, timestamp3, timestamp1, timestamp2)
|
||
|
|
fmt.Println(url)
|
||
|
|
req := httplib.Get(url)
|
||
|
|
req.SetTLSClientConfig(&tls.Config{InsecureSkipVerify: true})
|
||
|
|
|
||
|
|
str, err := req.String()
|
||
|
|
if err != nil {
|
||
|
|
fmt.Println(err)
|
||
|
|
}
|
||
|
|
//fmt.Println(str)
|
||
|
|
comLeft := strings.Index(str, "[")
|
||
|
|
pos := str[comLeft:]
|
||
|
|
posLeft := strings.Index(pos, "]")
|
||
|
|
jsonTyhoonListItem := pos[0 : posLeft+1]
|
||
|
|
fmt.Println(jsonTyhoonListItem)
|
||
|
|
var tyhoonListItem []models.TyhoonListItem
|
||
|
|
json.Unmarshal([]byte(jsonTyhoonListItem), &tyhoonListItem)
|
||
|
|
fmt.Println(tyhoonListItem)
|
||
|
|
fmt.Println(len(tyhoonListItem))
|
||
|
|
|
||
|
|
for _, item := range tyhoonListItem {
|
||
|
|
itemDB := models.GetTyhoonListItem(&item)
|
||
|
|
if itemDB != nil {
|
||
|
|
//存在
|
||
|
|
fmt.Println("存在")
|
||
|
|
if itemDB.Isactive == "1" && item.Isactive == "0" {
|
||
|
|
//需要更新
|
||
|
|
itemDB.Isactive = "0"
|
||
|
|
if models.TyhoonListItemUpdate(itemDB) {
|
||
|
|
fmt.Println("update 成功")
|
||
|
|
s.GetTyphoonInfo(item.Tfid)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if item.Isactive == "1" {
|
||
|
|
//需要更新
|
||
|
|
s.GetTyphoonInfo(item.Tfid)
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
//不存在
|
||
|
|
models.TyhoonListItemAdd(&item)
|
||
|
|
fmt.Println("不存在,插入数据库")
|
||
|
|
s.GetTyphoonInfo(item.Tfid)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func (s *HttpService) GetTyphoonInfo(tfid string) {
|
||
|
|
now := time.Now() //获取当前时间
|
||
|
|
timestamp1 := now.Unix() * 1000 //时间戳
|
||
|
|
fmt.Println("current timestamp1:%l", timestamp1)
|
||
|
|
//time.Sleep(10) //等待1秒
|
||
|
|
now1 := time.Now() //获取当前时间
|
||
|
|
timestamp2 := now1.Unix() * 1000 //时间戳
|
||
|
|
now3 := time.Now() //获取当前时间
|
||
|
|
timestamp3 := now3.Unix() //时间戳
|
||
|
|
fmt.Println("current timestamp2:%l", timestamp3)
|
||
|
|
// 两参数格式化
|
||
|
|
url := fmt.Sprintf("https://typhoon.slt.zj.gov.cn/Api/TyphoonInfo/%v?callback=jQuery18300926577%v_%v_=%v", tfid, timestamp3, timestamp1, timestamp2)
|
||
|
|
fmt.Println(url)
|
||
|
|
req := httplib.Get(url)
|
||
|
|
req.SetTLSClientConfig(&tls.Config{InsecureSkipVerify: true})
|
||
|
|
|
||
|
|
str, err := req.String()
|
||
|
|
if err != nil {
|
||
|
|
fmt.Println(err)
|
||
|
|
}
|
||
|
|
//fmt.Println(str)
|
||
|
|
|
||
|
|
comLeft := strings.Index(str, "[")
|
||
|
|
pos := str[comLeft:]
|
||
|
|
posLeft := strings.LastIndex(pos, "]")
|
||
|
|
jsonTyhoonListItem := pos[0 : posLeft+1]
|
||
|
|
fmt.Println(jsonTyhoonListItem)
|
||
|
|
fmt.Println(posLeft)
|
||
|
|
typhoonInfo := new(models.TyphoonInfo)
|
||
|
|
typhoonInfo.Tfid = tfid
|
||
|
|
typhoonInfoDB := models.GetTyphoonInfo(typhoonInfo)
|
||
|
|
if typhoonInfoDB == nil {
|
||
|
|
typhoonInfo.Typhoon = jsonTyhoonListItem
|
||
|
|
models.TyphoonInfoAdd(typhoonInfo)
|
||
|
|
fmt.Println("不存在,插入数据库")
|
||
|
|
} else {
|
||
|
|
typhoonInfoDB.Typhoon = jsonTyhoonListItem
|
||
|
|
models.TyphoonInfoUpdate(typhoonInfo)
|
||
|
|
fmt.Println("已存在,更新数据库")
|
||
|
|
}
|
||
|
|
}
|