Przeglądaj źródła

持仓分析查询分类优化

xiexiaoyuan 2 lat temu
rodzic
commit
b497ae8c8d

+ 1 - 1
models/tables/trade_analysis/trade_analysis.go

@@ -45,7 +45,7 @@ type TradeClassifyName struct {
 
 func GetExchangeClassify(exchange string) (list []TradeClassifyName, err error) {
 	tableName := "base_from_trade_" + exchange + "_index"
-	orderStr := "CONVERT(classify_name using gbk) DESC, classify_type asc"
+	orderStr := "classify_name DESC, classify_type asc"
 	if exchange == "zhengzhou"{
 		orderStr = "classify_name asc"
 	}

+ 34 - 7
services/trade_analysis/trade_analysis.go

@@ -5,6 +5,7 @@ import (
 	"hongze/hongze_yb/models/tables/trade_analysis"
 	"hongze/hongze_yb/utils"
 	"strings"
+	"sync"
 	"time"
 )
 
@@ -20,25 +21,51 @@ func GetClassifyName() (list []trade_analysis.TradeClassifyNameList, err error,
 	//查询每个交易所的最新更新时间
 	//查询每个交易所下的classifyNameList
 	list = make([]trade_analysis.TradeClassifyNameList, 0)
+	classifyExchangeMap := make(map[string][]trade_analysis.TradeClassifyName)
+	timeMap := make(map[string]string)
 	i := 0
+	var wg sync.WaitGroup
+	for k, _ := range exchanges {
+		wg.Add(1)
+		go func(k string,classifyExchangeMap map[string][]trade_analysis.TradeClassifyName) {
+			defer wg.Done()
+			nameList, tmpErr := trade_analysis.GetExchangeClassify(k)
+			if tmpErr != nil {
+				err = tmpErr
+				return
+			}
+			for _, n := range nameList {
+				classifyExchangeMap[k] = append(classifyExchangeMap[k], n)
+			}
+
+			dataTimeItem, tmpErr := trade_analysis.GetExchangeLastTime(k)
+			if tmpErr != nil {
+				err = tmpErr
+				errMsg = "查询交易所最新更新时间失败"
+				return
+			}
+			timeMap[k] = dataTimeItem.CreateTime.Format(utils.FormatDateTime)
+
+		}(k, classifyExchangeMap)
+	}
+	wg.Wait()
 	for k, v := range exchanges {
 		tmp := trade_analysis.TradeClassifyNameList{
 			Exchange: v,
 			Items:    nil,
 		}
-		nameList, tmpErr := trade_analysis.GetExchangeClassify(k)
-		if tmpErr != nil {
-			err = tmpErr
+		nameList, ok := classifyExchangeMap[k]
+		if !ok {
+			err = fmt.Errorf( "查询交易所分类信息失败")
 			errMsg = "查询交易所分类信息失败"
 			return
 		}
-		dataTimeItem, tmpErr := trade_analysis.GetExchangeLastTime(k)
-		if tmpErr != nil {
-			err = tmpErr
+		tmp.DataTime, ok = timeMap[k]
+		if !ok {
+			err = fmt.Errorf( "查询交易所最新更新时间失败")
 			errMsg = "查询交易所最新更新时间失败"
 			return
 		}
-		tmp.DataTime = dataTimeItem.CreateTime.Format(utils.FormatDateTime)
 		classifyMap := make(map[string][]trade_analysis.TradeClassifyNameListItemItem)
 		if len(nameList) > 0 {
 			if k == "zhengzhou" {