210 lines
5.8 KiB
Go
210 lines
5.8 KiB
Go
![]() |
package job
|
|||
|
|
|||
|
import (
|
|||
|
"all_platform/conn"
|
|||
|
"all_platform/dbpool"
|
|||
|
"bytes"
|
|||
|
"database/sql"
|
|||
|
"encoding/json"
|
|||
|
"fmt"
|
|||
|
"log"
|
|||
|
"time"
|
|||
|
|
|||
|
"github.com/robfig/cron/v3"
|
|||
|
)
|
|||
|
|
|||
|
func Job() {
|
|||
|
job := cron.New(cron.WithSeconds())
|
|||
|
|
|||
|
job.Schedule(cron.Every(5*time.Minute), &myJob{
|
|||
|
t: time.Now(),
|
|||
|
})
|
|||
|
job.Schedule(cron.Every(30*time.Minute), &myJob1{
|
|||
|
t: time.Now(),
|
|||
|
})
|
|||
|
job.Start()
|
|||
|
select {}
|
|||
|
}
|
|||
|
|
|||
|
// 查询ip地区,并写入数据库
|
|||
|
type myJob struct {
|
|||
|
i int
|
|||
|
t time.Time
|
|||
|
}
|
|||
|
|
|||
|
type myJob1 struct {
|
|||
|
i int
|
|||
|
t time.Time
|
|||
|
}
|
|||
|
|
|||
|
// 更新ip地址用户地区
|
|||
|
func (j *myJob) Run() {
|
|||
|
j.i++
|
|||
|
now := time.Now()
|
|||
|
sub := now.Sub(j.t)
|
|||
|
j.t = now
|
|||
|
fmt.Printf("ip地址更新: %d, duraction : %d ms \n", j.i, sub.Milliseconds())
|
|||
|
//查询sql 获取用户信息
|
|||
|
rows, err := dbpool.Query("SELECT DT_SRCIPADDR FROM `dt_zgdz`.`dt_attack_event` WHERE DT_CUNTRY IS NULL LIMIT 1")
|
|||
|
if err != nil {
|
|||
|
log.Println(err)
|
|||
|
}
|
|||
|
defer rows.Close()
|
|||
|
|
|||
|
// var typecho_userss []dbpool.Typecho_users
|
|||
|
var ipStr sql.NullString
|
|||
|
for rows.Next() {
|
|||
|
if err := rows.Scan(&ipStr); err != nil {
|
|||
|
log.Println(err)
|
|||
|
}
|
|||
|
// typecho_userss = append(typecho_userss, users)
|
|||
|
}
|
|||
|
if err := rows.Err(); err != nil {
|
|||
|
log.Fatal(err)
|
|||
|
}
|
|||
|
if ipStr.Valid {
|
|||
|
//请求接口获取ip地区
|
|||
|
header := map[string]string{
|
|||
|
"Content-Type": "application/json",
|
|||
|
}
|
|||
|
url := "http://ip-api.com/json/" + ipStr.String + "?lang=zh-CN"
|
|||
|
iplistStr := conn.DT_GET(url, header, nil)
|
|||
|
var data map[string]interface{}
|
|||
|
err = json.Unmarshal([]byte(iplistStr), &data)
|
|||
|
if err != nil {
|
|||
|
log.Fatal(err)
|
|||
|
}
|
|||
|
//开始更新数据
|
|||
|
result, err := dbpool.ExecuteSQL("UPDATE `dt_zgdz`.`dt_attack_event` SET `DT_CUNTRY`=? where DT_SRCIPADDR = ?", data["country"].(string)+"/"+data["city"].(string), ipStr.String)
|
|||
|
if err != nil {
|
|||
|
log.Println(err)
|
|||
|
}
|
|||
|
// 获取插入操作的最后插入ID和受影响的行数
|
|||
|
lastInsertId, err := result.LastInsertId()
|
|||
|
if err != nil {
|
|||
|
log.Fatal(err)
|
|||
|
}
|
|||
|
rowsAffected, err := result.RowsAffected()
|
|||
|
if err != nil {
|
|||
|
log.Fatal(err)
|
|||
|
}
|
|||
|
log.Printf("Last Insert ID: %d, Rows Affected: %d\n", lastInsertId, rowsAffected)
|
|||
|
} else {
|
|||
|
log.Println("没有数据")
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// 每天更新一次星座数据
|
|||
|
func (j1 *myJob1) Run() {
|
|||
|
j1.i++
|
|||
|
now := time.Now()
|
|||
|
sub := now.Sub(j1.t)
|
|||
|
j1.t = now
|
|||
|
fmt.Printf("星座信息更新: %d, duraction : %d ms \n", j1.i, sub.Milliseconds())
|
|||
|
//更具星座列表获取星座数据
|
|||
|
//查询sql 获取用户信息
|
|||
|
rows, err := dbpool.Query("SELECT DT_ITEMID FROM `all_platform`.`dt_constellation` ")
|
|||
|
if err != nil {
|
|||
|
log.Println(err)
|
|||
|
}
|
|||
|
defer rows.Close()
|
|||
|
|
|||
|
var typecho_userss []string
|
|||
|
var itemIDStr sql.NullString
|
|||
|
for rows.Next() {
|
|||
|
if err := rows.Scan(&itemIDStr); err != nil {
|
|||
|
log.Println(err)
|
|||
|
}
|
|||
|
typecho_userss = append(typecho_userss, itemIDStr.String)
|
|||
|
}
|
|||
|
if err := rows.Err(); err != nil {
|
|||
|
log.Fatal(err)
|
|||
|
}
|
|||
|
for _, v := range typecho_userss {
|
|||
|
//查询sql 获取用户信息
|
|||
|
rows, err := dbpool.Query("SELECT DT_DATE FROM `all_platform`.`dt_constellation_info` WHERE DT_DATE=? LIMIT 1 ;", time.Now().Format("2006-01-02"))
|
|||
|
if err != nil {
|
|||
|
log.Println(err)
|
|||
|
}
|
|||
|
defer rows.Close()
|
|||
|
|
|||
|
// var typecho_userss []string
|
|||
|
var itemIDStr sql.NullString
|
|||
|
for rows.Next() {
|
|||
|
if err := rows.Scan(&itemIDStr); err != nil {
|
|||
|
log.Println(err)
|
|||
|
}
|
|||
|
// typecho_userss = append(typecho_userss, itemIDStr.String)
|
|||
|
}
|
|||
|
if err := rows.Err(); err != nil {
|
|||
|
log.Fatal(err)
|
|||
|
}
|
|||
|
//不等于今天,插入数据,等于今天,不插入数据
|
|||
|
if itemIDStr.String != time.Now().Format("2006-01-02") {
|
|||
|
//请求接口获取ip地区
|
|||
|
header := map[string]string{
|
|||
|
"Content-Type": "application/json",
|
|||
|
}
|
|||
|
jsonStr := `{
|
|||
|
"cardDataReq": [
|
|||
|
{
|
|||
|
"serviceID": "e61264eb17f94d518dc143344304ef29",
|
|||
|
"beginTime": "` + time.Now().Format("2006-01-02") + `T00:00+0800",
|
|||
|
"endTime": "` + time.Now().Format("2006-01-02") + `T23:59+0800",
|
|||
|
"parameters": {
|
|||
|
"itemID": "` + v + `",
|
|||
|
"type": [
|
|||
|
"today",
|
|||
|
"tomorrow",
|
|||
|
"week",
|
|||
|
"month"
|
|||
|
]
|
|||
|
}
|
|||
|
}
|
|||
|
],
|
|||
|
"reqAllInfo": 1
|
|||
|
}`
|
|||
|
listStr := conn.DT_POST("https://api-calendar-drcn.music.dbankcloud.cn/calendar-sub-service/v1/carddata/simple/querybyids", header, bytes.NewBuffer([]byte(jsonStr)))
|
|||
|
var data map[string]interface{}
|
|||
|
err = json.Unmarshal([]byte(listStr), &data)
|
|||
|
if err != nil {
|
|||
|
log.Fatal(err)
|
|||
|
}
|
|||
|
var dataStr map[string]interface{}
|
|||
|
if err := json.Unmarshal([]byte(data["datas"].([]interface{})[0].(map[string]interface{})["originalData"].([]interface{})[0].(map[string]interface{})["data"].(string)), &dataStr); err != nil {
|
|||
|
log.Fatal(err)
|
|||
|
}
|
|||
|
// 将 map 转换为 JSON 格式的字符串
|
|||
|
week, err := json.Marshal(dataStr["week"])
|
|||
|
month, err := json.Marshal(dataStr["month"])
|
|||
|
today, err := json.Marshal(dataStr["today"])
|
|||
|
tomorrow, err := json.Marshal(dataStr["tomorrow"])
|
|||
|
if err != nil {
|
|||
|
fmt.Println("Error marshaling JSON:", err)
|
|||
|
return
|
|||
|
}
|
|||
|
if dataStr["date"].(string) != "" {
|
|||
|
//开始更新数据
|
|||
|
result, err := dbpool.ExecuteSQL("INSERT INTO `all_platform`.`dt_constellation_info` (`DT_DATE`, `DT_SIGNNAME`, `DT_WEEK`, `DT_MONTH`, `DT_TODAY`, `DT_TOMORROW`) VALUES (?,?,?,?,?,?);", dataStr["date"], dataStr["signName"], week, month, today, tomorrow)
|
|||
|
if err != nil {
|
|||
|
log.Println(err)
|
|||
|
}
|
|||
|
// 获取插入操作的最后插入ID和受影响的行数
|
|||
|
lastInsertId, err := result.LastInsertId()
|
|||
|
if err != nil {
|
|||
|
log.Fatal(err)
|
|||
|
}
|
|||
|
rowsAffected, err := result.RowsAffected()
|
|||
|
if err != nil {
|
|||
|
log.Fatal(err)
|
|||
|
}
|
|||
|
log.Printf("Last Insert ID: %d, Rows Affected: %d\n", lastInsertId, rowsAffected)
|
|||
|
} else {
|
|||
|
log.Println("没有数据")
|
|||
|
}
|
|||
|
} else {
|
|||
|
log.Println("已有今天的数据,不在插入数据")
|
|||
|
}
|
|||
|
}
|
|||
|
}
|