|
@@ -58,118 +58,38 @@ var requestList = []ListRequestBody{
|
|
|
}
|
|
|
|
|
|
func Scii99(cont context.Context) (err error) {
|
|
|
- filePath := utils.SCI99_COOKIE_PATH
|
|
|
+ for i := -1; i <= 0; i++ {
|
|
|
|
|
|
- // 打开文件
|
|
|
- file, err := ioutil.ReadFile(filePath)
|
|
|
- if err != nil {
|
|
|
- utils.FileLog.Info("ReadFile err:", err)
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- cookie := string(file)
|
|
|
-
|
|
|
- // 定义请求的URL
|
|
|
- listUrl := "https://prices.sci99.com/api/zh-cn/product/datavalue"
|
|
|
- detailUrl := "https://prices.sci99.com/api/zh-cn/dataitem/datavalue"
|
|
|
-
|
|
|
- for _, request := range requestList {
|
|
|
- classifyName := request.Ppname
|
|
|
-
|
|
|
- // 分别获取国内价格和国际价格
|
|
|
- for _, priceTypeID := range PriceTypeIDs {
|
|
|
- // 创建请求体实例并填充数据,这里的参数都是一样的,所以这边统一写
|
|
|
- request.CycleType = "day"
|
|
|
- request.SiteType = 1
|
|
|
- request.PageNo = 1
|
|
|
- request.PageSize = "1000"
|
|
|
- request.PriceTypeID = priceTypeID
|
|
|
-
|
|
|
- // 将请求体序列化为JSON
|
|
|
- jsonData, e := json.Marshal(request)
|
|
|
- if e != nil {
|
|
|
- err = e
|
|
|
- fmt.Println("Error marshalling JSON:", err)
|
|
|
- utils.FileLog.Info("Error marshalling JSON:", err)
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- // 创建一个HTTP POST请求
|
|
|
- req, e := http.NewRequest("POST", listUrl, bytes.NewBuffer(jsonData))
|
|
|
- if e != nil {
|
|
|
- err = e
|
|
|
- fmt.Println("Error creating request:", err)
|
|
|
- utils.FileLog.Info("Error creating request:", err)
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- // 设置请求头信息
|
|
|
- req.Header.Set("Content-Type", "application/json")
|
|
|
- req.Header.Set("Accept", "application/json")
|
|
|
- req.Header.Set("Cookie", cookie)
|
|
|
-
|
|
|
- // 发送请求
|
|
|
- client := &http.Client{}
|
|
|
- resp, e := client.Do(req)
|
|
|
- if e != nil {
|
|
|
- err = e
|
|
|
- fmt.Println("Error sending request:", err)
|
|
|
- utils.FileLog.Info("Error sending request:", err)
|
|
|
- return
|
|
|
- }
|
|
|
- defer resp.Body.Close()
|
|
|
-
|
|
|
- // 检查响应状态码
|
|
|
- if resp.StatusCode != http.StatusOK {
|
|
|
- fmt.Printf("Server returned non-200 status: %d\n", resp.StatusCode)
|
|
|
- utils.FileLog.Info("Server returned non-200 status: %d", resp.StatusCode)
|
|
|
- return
|
|
|
- }
|
|
|
- // 打印响应体
|
|
|
- body, _ := ioutil.ReadAll(resp.Body)
|
|
|
- //fmt.Println("Response body:", string(body))
|
|
|
+ filePath := utils.SCI99_COOKIE_PATH
|
|
|
|
|
|
- var listResponse ListResponse
|
|
|
+ // 打开文件
|
|
|
+ file, e := ioutil.ReadFile(filePath)
|
|
|
+ if e != nil {
|
|
|
+ err = e
|
|
|
+ utils.FileLog.Info("ReadFile err:", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
|
|
|
- err = json.Unmarshal(body, &listResponse)
|
|
|
- if err != nil {
|
|
|
- fmt.Println(err)
|
|
|
- utils.FileLog.Info("Error unmarshalling JSON:", err)
|
|
|
- return
|
|
|
- }
|
|
|
+ cookie := string(file)
|
|
|
|
|
|
- for _, v := range listResponse.FirstData.SecondData.Items {
|
|
|
- if v.FromArea != "" && len(listResponse.FirstData.SecondData.Items) > 1 {
|
|
|
- continue
|
|
|
- }
|
|
|
- // 组成指标
|
|
|
- var indexName string
|
|
|
- if v.FactorySampleName == "" || len(listResponse.FirstData.SecondData.Items) == 1 {
|
|
|
- indexName = v.ProductName + ":" + v.PriceType + ":" + v.MarketSampleName + ":" + v.Model
|
|
|
- } else {
|
|
|
- indexName = v.ProductName + ":" + v.PriceType + ":" + v.MarketSampleName + ":" + v.FactorySampleName + ":" + v.Model
|
|
|
- }
|
|
|
+ // 定义请求的URL
|
|
|
+ listUrl := "https://prices.sci99.com/api/zh-cn/product/datavalue"
|
|
|
+ detailUrl := "https://prices.sci99.com/api/zh-cn/dataitem/datavalue"
|
|
|
|
|
|
- ppid := strconv.Itoa(v.ProductID)
|
|
|
- dataTypeID := strconv.Itoa(v.DataTypeID)
|
|
|
- diidd := strconv.Itoa(v.DIID)
|
|
|
- deailReq := DetailRequest{
|
|
|
- PPID: ppid,
|
|
|
- DataTypeID: dataTypeID,
|
|
|
- DIIDD: diidd,
|
|
|
- APIStart: "2021/01/01",
|
|
|
- APIEnd: time.Now().AddDate(1, 0, 0).Format(utils.FormatDate2),
|
|
|
- CycleType: "day",
|
|
|
- }
|
|
|
+ for _, request := range requestList {
|
|
|
+ classifyName := request.Ppname
|
|
|
|
|
|
- // 初始化是不加日期获取全部,初始化后只拿前三天的
|
|
|
- if utils.IS_INIT_SCI99 != "true" {
|
|
|
- deailReq.Start = time.Now().AddDate(0,0,-3).Format(utils.FormatDate2)
|
|
|
- deailReq.End = time.Now().Format(utils.FormatDate2)
|
|
|
- }
|
|
|
+ // 分别获取国内价格和国际价格
|
|
|
+ for _, priceTypeID := range PriceTypeIDs {
|
|
|
+ // 创建请求体实例并填充数据,这里的参数都是一样的,所以这边统一写
|
|
|
+ request.CycleType = "day"
|
|
|
+ request.SiteType = 1
|
|
|
+ request.PageNo = 1
|
|
|
+ request.PageSize = "1000"
|
|
|
+ request.PriceTypeID = priceTypeID
|
|
|
|
|
|
// 将请求体序列化为JSON
|
|
|
- reqJson, e := json.Marshal(deailReq)
|
|
|
+ jsonData, e := json.Marshal(request)
|
|
|
if e != nil {
|
|
|
err = e
|
|
|
fmt.Println("Error marshalling JSON:", err)
|
|
@@ -178,8 +98,9 @@ func Scii99(cont context.Context) (err error) {
|
|
|
}
|
|
|
|
|
|
// 创建一个HTTP POST请求
|
|
|
- req, err = http.NewRequest("POST", detailUrl, bytes.NewBuffer(reqJson))
|
|
|
- if err != nil {
|
|
|
+ req, e := http.NewRequest("POST", listUrl, bytes.NewBuffer(jsonData))
|
|
|
+ if e != nil {
|
|
|
+ err = e
|
|
|
fmt.Println("Error creating request:", err)
|
|
|
utils.FileLog.Info("Error creating request:", err)
|
|
|
return
|
|
@@ -191,13 +112,16 @@ func Scii99(cont context.Context) (err error) {
|
|
|
req.Header.Set("Cookie", cookie)
|
|
|
|
|
|
// 发送请求
|
|
|
- resp, err = client.Do(req)
|
|
|
- if err != nil {
|
|
|
+ client := &http.Client{}
|
|
|
+ resp, e := client.Do(req)
|
|
|
+ if e != nil {
|
|
|
+ err = e
|
|
|
fmt.Println("Error sending request:", err)
|
|
|
utils.FileLog.Info("Error sending request:", err)
|
|
|
return
|
|
|
}
|
|
|
defer resp.Body.Close()
|
|
|
+
|
|
|
// 检查响应状态码
|
|
|
if resp.StatusCode != http.StatusOK {
|
|
|
fmt.Printf("Server returned non-200 status: %d\n", resp.StatusCode)
|
|
@@ -205,47 +129,129 @@ func Scii99(cont context.Context) (err error) {
|
|
|
return
|
|
|
}
|
|
|
// 打印响应体
|
|
|
- body, _ = ioutil.ReadAll(resp.Body)
|
|
|
- //fmt.Println("Response Detail body:", string(body))
|
|
|
+ body, _ := ioutil.ReadAll(resp.Body)
|
|
|
+ //fmt.Println("Response body:", string(body))
|
|
|
|
|
|
- var detailResponse DetailResponse
|
|
|
+ var listResponse ListResponse
|
|
|
|
|
|
- err = json.Unmarshal(body, &detailResponse)
|
|
|
+ err = json.Unmarshal(body, &listResponse)
|
|
|
if err != nil {
|
|
|
fmt.Println(err)
|
|
|
utils.FileLog.Info("Error unmarshalling JSON:", err)
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- param := make(map[string]interface{})
|
|
|
- param["ListData"] = v
|
|
|
- param["DetailData"] = detailResponse
|
|
|
- param["IndexName"] = indexName
|
|
|
- param["ClassifyName"] = classifyName
|
|
|
- urlStr := `sci99_crawler/refresh/list`
|
|
|
- postUrl := utils.EDB_LIB_URL + urlStr
|
|
|
- postData, e := json.Marshal(param)
|
|
|
- if e != nil {
|
|
|
- err = e
|
|
|
- utils.FileLog.Info("Marshal Err:" + err.Error())
|
|
|
- fmt.Println(err)
|
|
|
- return
|
|
|
- }
|
|
|
- result, e := HttpPost(postUrl, string(postData), "application/json")
|
|
|
- if e != nil {
|
|
|
- err = e
|
|
|
- fmt.Println(err)
|
|
|
- utils.FileLog.Info("HttpPost Err:" + err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- utils.FileLog.Info("postRefreshEdbData:" + postUrl + ";" + string(postData) + ";result:" + string(result))
|
|
|
- err = json.Unmarshal(result, &resp)
|
|
|
- if err != nil {
|
|
|
- fmt.Println(err)
|
|
|
- utils.FileLog.Info("Unmarshal resp Err:" + err.Error())
|
|
|
- return
|
|
|
+ for _, v := range listResponse.FirstData.SecondData.Items {
|
|
|
+ if v.FromArea != "" && len(listResponse.FirstData.SecondData.Items) > 1 {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ // 组成指标
|
|
|
+ var indexName string
|
|
|
+ if v.FactorySampleName == "" || len(listResponse.FirstData.SecondData.Items) == 1 {
|
|
|
+ indexName = v.ProductName + ":" + v.PriceType + ":" + v.MarketSampleName + ":" + v.Model
|
|
|
+ } else {
|
|
|
+ indexName = v.ProductName + ":" + v.PriceType + ":" + v.MarketSampleName + ":" + v.FactorySampleName + ":" + v.Model
|
|
|
+ }
|
|
|
+
|
|
|
+ ppid := strconv.Itoa(v.ProductID)
|
|
|
+ dataTypeID := strconv.Itoa(v.DataTypeID)
|
|
|
+ diidd := strconv.Itoa(v.DIID)
|
|
|
+ deailReq := DetailRequest{
|
|
|
+ PPID: ppid,
|
|
|
+ DataTypeID: dataTypeID,
|
|
|
+ DIIDD: diidd,
|
|
|
+ APIStart: "2021/01/01",
|
|
|
+ APIEnd: "2024/09/11",
|
|
|
+ CycleType: "day",
|
|
|
+ }
|
|
|
+
|
|
|
+ // 初始化是不加日期获取全部,初始化后只拿前三天的
|
|
|
+ if utils.IS_INIT_SCI99 != "true" {
|
|
|
+ deailReq.Start = time.Now().AddDate(0, 0, i).Format(utils.FormatDate2)
|
|
|
+ deailReq.End = time.Now().Format(utils.FormatDate2)
|
|
|
+ fmt.Println("date:",deailReq.Start)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 将请求体序列化为JSON
|
|
|
+ reqJson, e := json.Marshal(deailReq)
|
|
|
+ if e != nil {
|
|
|
+ err = e
|
|
|
+ fmt.Println("Error marshalling JSON:", err)
|
|
|
+ utils.FileLog.Info("Error marshalling JSON:", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 创建一个HTTP POST请求
|
|
|
+ req, err = http.NewRequest("POST", detailUrl, bytes.NewBuffer(reqJson))
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("Error creating request:", err)
|
|
|
+ utils.FileLog.Info("Error creating request:", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置请求头信息
|
|
|
+ req.Header.Set("Content-Type", "application/json")
|
|
|
+ req.Header.Set("Accept", "application/json")
|
|
|
+ req.Header.Set("Cookie", cookie)
|
|
|
+
|
|
|
+ // 发送请求
|
|
|
+ resp, err = client.Do(req)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("Error sending request:", err)
|
|
|
+ utils.FileLog.Info("Error sending request:", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer resp.Body.Close()
|
|
|
+ // 检查响应状态码
|
|
|
+ if resp.StatusCode != http.StatusOK {
|
|
|
+ fmt.Printf("Server returned non-200 status: %d\n", resp.StatusCode)
|
|
|
+ utils.FileLog.Info("Server returned non-200 status: %d", resp.StatusCode)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 打印响应体
|
|
|
+ body, _ = ioutil.ReadAll(resp.Body)
|
|
|
+ //fmt.Println("Response Detail body:", string(body))
|
|
|
+
|
|
|
+ var detailResponse DetailResponse
|
|
|
+
|
|
|
+ err = json.Unmarshal(body, &detailResponse)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ utils.FileLog.Info("Error unmarshalling JSON:", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ fmt.Println("ClassifyName:", classifyName)
|
|
|
+ fmt.Println("IndexName:", indexName)
|
|
|
+ param := make(map[string]interface{})
|
|
|
+ param["ListData"] = v
|
|
|
+ param["DetailData"] = detailResponse
|
|
|
+ param["IndexName"] = indexName
|
|
|
+ param["ClassifyName"] = classifyName
|
|
|
+ urlStr := `sci99_crawler/refresh/list`
|
|
|
+ postUrl := utils.EDB_LIB_URL + urlStr
|
|
|
+ postData, e := json.Marshal(param)
|
|
|
+ if e != nil {
|
|
|
+ err = e
|
|
|
+ utils.FileLog.Info("Marshal Err:" + err.Error())
|
|
|
+ fmt.Println(err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ result, e := HttpPost(postUrl, string(postData), "application/json")
|
|
|
+ if e != nil {
|
|
|
+ err = e
|
|
|
+ fmt.Println(err)
|
|
|
+ utils.FileLog.Info("HttpPost Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ utils.FileLog.Info("postRefreshEdbData:" + postUrl + ";" + string(postData) + ";result:" + string(result))
|
|
|
+ err = json.Unmarshal(result, &resp)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ utils.FileLog.Info("Unmarshal resp Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ time.Sleep(1 * time.Second)
|
|
|
}
|
|
|
- time.Sleep(1 * time.Second)
|
|
|
}
|
|
|
}
|
|
|
}
|