zwxi 9 månader sedan
förälder
incheckning
83cfc9e961
1 ändrade filer med 143 tillägg och 147 borttagningar
  1. 143 147
      services/sci99/sci99.go

+ 143 - 147
services/sci99/sci99.go

@@ -58,38 +58,118 @@ var requestList = []ListRequestBody{
 }
 
 func Scii99(cont context.Context) (err error) {
-	for i := -1; i <= 0; i++ {
+	filePath := utils.SCI99_COOKIE_PATH
 
-		filePath := utils.SCI99_COOKIE_PATH
+	// 打开文件
+	file, err := ioutil.ReadFile(filePath)
+	if err != nil {
+		utils.FileLog.Info("ReadFile err:", err)
+		return
+	}
 
-		// 打开文件
-		file, e := ioutil.ReadFile(filePath)
-		if e != nil {
-			err = e
-			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
+			}
 
-		cookie := string(file)
+			// 创建一个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
+			}
 
-		// 定义请求的URL
-		listUrl := "https://prices.sci99.com/api/zh-cn/product/datavalue"
-		detailUrl := "https://prices.sci99.com/api/zh-cn/dataitem/datavalue"
+			// 设置请求头信息
+			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))
+
+			var listResponse ListResponse
+
+			err = json.Unmarshal(body, &listResponse)
+			if err != nil {
+				fmt.Println(err)
+				utils.FileLog.Info("Error unmarshalling JSON:", err)
+				return
+			}
+			fmt.Println("获取到的产品数量:", len(listResponse.FirstData.SecondData.Items))
+			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
+				}
 
-		for _, request := range requestList {
-			classifyName := request.Ppname
+				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 _, priceTypeID := range PriceTypeIDs {
-				// 创建请求体实例并填充数据,这里的参数都是一样的,所以这边统一写
-				request.CycleType = "day"
-				request.SiteType = 1
-				request.PageNo = 1
-				request.PageSize = "1000"
-				request.PriceTypeID = priceTypeID
+				// 初始化是不加日期获取全部,初始化后只拿前三天的
+				if utils.IS_INIT_SCI99 != "true" {
+					deailReq.Start = time.Now().AddDate(0,0,-5).Format(utils.FormatDate2)
+					deailReq.End = time.Now().Format(utils.FormatDate2)
+				}
 
 				// 将请求体序列化为JSON
-				jsonData, e := json.Marshal(request)
+				reqJson, e := json.Marshal(deailReq)
 				if e != nil {
 					err = e
 					fmt.Println("Error marshalling JSON:", err)
@@ -98,9 +178,8 @@ func Scii99(cont context.Context) (err error) {
 				}
 
 				// 创建一个HTTP POST请求
-				req, e := http.NewRequest("POST", listUrl, bytes.NewBuffer(jsonData))
-				if e != nil {
-					err = e
+				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
@@ -112,16 +191,13 @@ func Scii99(cont context.Context) (err error) {
 				req.Header.Set("Cookie", cookie)
 
 				// 发送请求
-				client := &http.Client{}
-				resp, e := client.Do(req)
-				if e != nil {
-					err = e
+				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)
@@ -129,129 +205,49 @@ func Scii99(cont context.Context) (err error) {
 					return
 				}
 				// 打印响应体
-				body, _ := ioutil.ReadAll(resp.Body)
-				//fmt.Println("Response body:", string(body))
+				body, _ = ioutil.ReadAll(resp.Body)
+				//fmt.Println("Response Detail body:", string(body))
 
-				var listResponse ListResponse
+				var detailResponse DetailResponse
 
-				err = json.Unmarshal(body, &listResponse)
+				err = json.Unmarshal(body, &detailResponse)
 				if err != nil {
 					fmt.Println(err)
 					utils.FileLog.Info("Error unmarshalling JSON:", err)
 					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)
+				fmt.Println("classifyName:",classifyName)
+				fmt.Println("indexName:",indexName)
+				fmt.Println("数据长度:", len(detailResponse.Data.List))
+				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)
 			}
 		}
 	}