Browse Source

上期所,郑商所indexCode优化

ziwen 3 years ago
parent
commit
78344ef4ca
3 changed files with 24 additions and 21 deletions
  1. 11 9
      services/commodity_trade_shanghai.go
  2. 12 11
      services/commodity_trade_zhengzhou.go
  3. 1 1
      services/task.go

+ 11 - 9
services/commodity_trade_shanghai.go

@@ -41,14 +41,16 @@ type Message struct {
 }
 
 var indexCode string
-var indexCodeMap = make(map[string]struct{})
+var indexCodeMap = make(map[string]string)
 
-func indexCodeGenerator() string {
-	for {
+func shIndexCodeGenerator(indexName string) string {
+	indexCode,_ := indexCodeMap[indexName]
+	if indexCode == "" {
 		indexCode = fmt.Sprintf("SH%s", time.Now().Format(utils.FormatDateTimeUnSpace)+strconv.Itoa(utils.GetRandInt(1, 100)))
-		if _, ok := indexCodeMap[indexCode]; !ok {
-			indexCodeMap[indexCode] = struct{}{}
-			break
+		indexCodeMap[indexName] = indexCode
+		err := models.AddBaseFromTradeMapping(indexName, indexCode, "SH")
+		if err != nil {
+			fmt.Println("add Code err:", err)
 		}
 	}
 	return indexCode
@@ -96,9 +98,9 @@ func SyncRankingFromShangHai() {
 				item.DealName = strings.Replace(fmt.Sprintf("%s", p.ParticipantName1+"_成交量"+"_"+p.ProductName+"_"+p.ContractCode), " ", "", -1)
 				item.BuyName = strings.Replace(fmt.Sprintf("%s", p.ParticipantName2+"_持买单量"+"_"+p.ProductName+"_"+p.ContractCode), " ", "", -1)
 				item.SoldName = strings.Replace(fmt.Sprintf("%s", p.ParticipantName3+"_持卖单量"+"_"+p.ProductName+"_"+p.ContractCode), " ", "", -1)
-				item.DealCode =  indexCodeGenerator()
-				item.BuyCode =  indexCodeGenerator()
-				item.SoldCode =  indexCodeGenerator()
+				item.DealCode =  shIndexCodeGenerator(item.DealName)
+				item.BuyCode =  shIndexCodeGenerator(item.BuyName)
+				item.SoldCode =  shIndexCodeGenerator(item.SoldCode)
 				item.DealValue = p.Deal
 				item.DealChange = p.Change1
 				item.BuyValue = p.BuyIn

+ 12 - 11
services/commodity_trade_zhengzhou.go

@@ -14,15 +14,17 @@ import (
 )
 
 var zIndexCode string
-var zIndexCodeMap = make(map[string]struct{})
+var zIndexCodeMap = make(map[string]string)
 var zActionCodeMap = make(map[string]map[string]int)
 
-func zIndexCodeGenerator() string {
-	for {
+func zIndexCodeGenerator(indexName string) string {
+	zIndexCode,_ := zIndexCodeMap[indexName]
+	if zIndexCode == "" {
 		zIndexCode = fmt.Sprintf("Z%s", time.Now().Format(utils.FormatDateTimeUnSpace)+strconv.Itoa(utils.GetRandInt(1, 100)))
-		if _, ok := zIndexCodeMap[zIndexCode]; !ok {
-			zIndexCodeMap[zIndexCode] = struct{}{}
-			break
+		zIndexCodeMap[indexName] = zIndexCode
+		err := models.AddBaseFromTradeMapping(indexName, zIndexCode, "Z")
+		if err != nil {
+			fmt.Println("add Code err:", err)
 		}
 	}
 	return zIndexCode
@@ -103,7 +105,6 @@ func SyncRankingFromZhengzhou() {
 					//fmt.Println("tdText: ", tdText)
 					if tk == 0 {
 						if !(strings.Contains(tdText, "名次") || strings.Contains(tdText, "合计")){
-							fmt.Println("tk:",tk)
 							rank = tdText
 						}
 					}
@@ -185,24 +186,24 @@ func SyncRankingFromZhengzhou() {
 					classifyType = classifyNameArr[0]
 					classifyName = classifyNameArr[1]
 				}
-				fmt.Printf("memberShortNameArr:%s,len:%d\n", memberShortNameArr, len(memberShortNameArr))
+				//fmt.Printf("memberShortNameArr:%s,len:%d\n", memberShortNameArr, len(memberShortNameArr))
 				if len(memberShortNameArr) != 0 {
 					if len(memberShortNameArr[0]) != 2 {
 						item := new(models.BaseFromTradeZhengzhouIndex)
 						item.Rank, _ = strconv.Atoi(rank)
 						item.DealShortName = memberShortNameArr[0]
 						item.DealName = memberShortNameArr[0] + "_" + dealSuffix + "_" + classifyName + "_" + classifyType
-						item.DealCode = zIndexCodeGenerator()
+						item.DealCode = zIndexCodeGenerator(item.DealName)
 						item.DealValue, _ = strconv.Atoi(dealVal)
 						item.DealChange, _ = strconv.Atoi(dealAddCutVal)
 						item.BuyShortName = memberShortNameArr[1]
 						item.BuyName = memberShortNameArr[1] + "_" + buySuffix + "_" + classifyName + "_" + classifyType
-						item.BuyCode = zIndexCodeGenerator()
+						item.BuyCode = zIndexCodeGenerator(item.BuyName)
 						item.BuyValue, _ = strconv.Atoi(buyVal)
 						item.BuyChange, _ = strconv.Atoi(buyAddCutVal)
 						item.SoldShortName = memberShortNameArr[2]
 						item.SoldName = memberShortNameArr[2] + "_" + sellSuffix + "_" + classifyName + "_" + classifyType
-						item.SoldCode = zIndexCodeGenerator()
+						item.SoldCode = zIndexCodeGenerator(item.SoldName)
 						item.SoldValue, _ = strconv.Atoi(sellVal)
 						item.SoldChange, _ = strconv.Atoi(sellAddCutVal)
 						item.Frequency = "日度"

+ 1 - 1
services/task.go

@@ -7,7 +7,7 @@ import (
 func Task() {
 	fmt.Println("start crawler")
 	//同步郑州商品交易所排名
-	//SyncRankingFromZhengzhou()
+	SyncRankingFromZhengzhou()
 
 	//SyncRankingFromShangHai()
 	//SyncRankingFromIne()