zwxi 9 månader sedan
förälder
incheckning
baef9202d7
2 ändrade filer med 147 tillägg och 140 borttagningar
  1. 146 140
      services/sci99/sci99.go
  2. 1 0
      services/task.go

+ 146 - 140
services/sci99/sci99.go

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

+ 1 - 0
services/task.go

@@ -54,6 +54,7 @@ func Task() {
 
 	if utils.BusinessCode == utils.BusinessCodeFuBang {
 		// 仅富邦
+		sci99.Scii99(nil)
 		sci99 := task.NewTask("refreshSci99", "0 0,30 16-20 * * *", sci99.Scii99) //卓创资讯
 		task.AddTask("卓创资讯", sci99)
 	}