Quellcode durchsuchen

fix:新增返回系统当前日期

Roc vor 1 Jahr
Ursprung
Commit
95bd2e9036

+ 17 - 13
models/tables/trade_analysis/trade_analysis.go

@@ -26,9 +26,11 @@ type TradeClassifyNameList struct {
 	Sort     int                         `description:"排序字段" json:"sort"`
 	Num      int                         `description:"品种数量" json:"num"`
 	DataTime string                      `description:"最新更新时间" json:"data_time"`
+	CurrDate string                      `description:"当前日期" json:"curr_date"`
 	Items    []TradeClassifyNameListItem `description:"子类" json:"items"`
 }
 type TradeClassifyNameListSort []TradeClassifyNameList
+
 func (v TradeClassifyNameListSort) Len() int {
 	return len(v)
 }
@@ -42,6 +44,7 @@ func (v TradeClassifyNameListSort) Less(i, j int) bool {
 }
 
 type TradeClassifyNameListItemSort []TradeClassifyNameListItem
+
 func (v TradeClassifyNameListItemSort) Len() int {
 	return len(v)
 }
@@ -60,6 +63,7 @@ type TradeClassifyNameListItem struct {
 }
 
 type TradeClassifyNameListItemItemSort []TradeClassifyNameListItemItem
+
 func (v TradeClassifyNameListItemItemSort) Len() int {
 	return len(v)
 }
@@ -77,14 +81,14 @@ type TradeClassifyNameListItemItem struct {
 }
 
 type TradeClassifyName struct {
-	ClassifyName  string    //分类名称
-	ClassifyType  string    //分类名称下的类型
+	ClassifyName string //分类名称
+	ClassifyType string //分类名称下的类型
 }
 
 func GetExchangeClassify(exchange string) (list []TradeClassifyName, err error) {
 	tableName := "base_from_trade_" + exchange + "_index"
 	orderStr := "classify_name DESC, classify_type asc"
-	if exchange == "zhengzhou"{
+	if exchange == "zhengzhou" {
 		orderStr = "classify_name asc"
 	}
 	err = global.MYSQL["data"].
@@ -99,6 +103,7 @@ func GetExchangeClassify(exchange string) (list []TradeClassifyName, err error)
 type LastTimeItem struct {
 	CreateTime time.Time
 }
+
 func GetExchangeLastTime(exchange string) (item LastTimeItem, err error) {
 	tableName := "base_from_trade_" + exchange + "_index"
 	err = global.MYSQL["data"].
@@ -109,10 +114,10 @@ func GetExchangeLastTime(exchange string) (item LastTimeItem, err error) {
 }
 
 type GetPositionTopReq struct {
-	Exchange     string `json:"exchange" form:"exchange"`      //交易所
+	Exchange     string `json:"exchange" form:"exchange"`           //交易所
 	ClassifyName string `json:"classify_name" form:"classify_name"` //分类名称
-	ClassifyType string `json:"classify_type" form:"classify_type"`  //具体合约名称
-	DataTime     string `json:"data_time" form:"data_time"`     //请求日期,如果为空,则返回最新的榜单日期
+	ClassifyType string `json:"classify_type" form:"classify_type"` //具体合约名称
+	DataTime     string `json:"data_time" form:"data_time"`         //请求日期,如果为空,则返回最新的榜单日期
 }
 
 type GetPositionTopResp struct {
@@ -124,9 +129,9 @@ type GetPositionTopResp struct {
 }
 
 type GetPositionTopList struct {
-	TotalDealValue  int                      `json:"total_deal_value"` //总计成交量
+	TotalDealValue  int                      `json:"total_deal_value"`  //总计成交量
 	TotalDealChange int                      `json:"total_deal_change"` //校昨日变化
-	List            []GetPositionTopListItem `json:"list"`  //榜单详情列表
+	List            []GetPositionTopListItem `json:"list"`              //榜单详情列表
 }
 
 type GetPositionTopListItem struct {
@@ -140,7 +145,7 @@ type GetPositionTopListItem struct {
 	BeforeAllChange int    `json:"before_all_change"` //排在前面的成交量增减总计
 }
 
-func GetTradePositionTop(exchange string, classifyName, classifyType, dataTime string)(list []TradePositionTop, err error) {
+func GetTradePositionTop(exchange string, classifyName, classifyType, dataTime string) (list []TradePositionTop, err error) {
 	tableName := "trade_position_" + exchange + "_top"
 	err = global.MYSQL["data"].
 		Table(tableName).
@@ -149,14 +154,14 @@ func GetTradePositionTop(exchange string, classifyName, classifyType, dataTime s
 	return
 }
 
-func GetTradeTopLastDataTime(exchange string, classifyName, classifyType string)(item *TradePositionTop, err error) {
+func GetTradeTopLastDataTime(exchange string, classifyName, classifyType string) (item *TradePositionTop, err error) {
 	tableName := "trade_position_" + exchange + "_top"
 	if exchange == "zhengzhou" {
 		err = global.MYSQL["data"].
 			Table(tableName).
 			Where("classify_name=? ", classifyType).
 			Order("data_time desc").First(&item).Error
-	}else {
+	} else {
 		err = global.MYSQL["data"].
 			Table(tableName).
 			Where("classify_name=? and classify_type=?", classifyName, classifyType).
@@ -166,7 +171,6 @@ func GetTradeTopLastDataTime(exchange string, classifyName, classifyType string)
 	return
 }
 
-
 func GetZhengzhouClassifyTypeByClassifyName(classifyName string) (item *TradeClassifyName, err error) {
 	tableName := "base_from_trade_zhengzhou_index"
 	err = global.MYSQL["data"].
@@ -174,4 +178,4 @@ func GetZhengzhouClassifyTypeByClassifyName(classifyName string) (item *TradeCla
 		Select("classify_name, classify_type").
 		Where("classify_name=?", classifyName).Limit(1).Find(&item).Error
 	return
-}
+}

+ 74 - 72
services/trade_analysis/trade_analysis.go

@@ -32,9 +32,9 @@ func GetClassifyName() (list trade_analysis.TradeClassifyNameListSort, err error
 	timeMap := make(map[string]string)
 	i := 0
 	var wg sync.WaitGroup
-	for k, _ := range exchanges {
+	for k := range exchanges {
 		wg.Add(1)
-		go func(k string,classifyExchangeMap map[string][]trade_analysis.TradeClassifyName) {
+		go func(k string, classifyExchangeMap map[string][]trade_analysis.TradeClassifyName) {
 			defer wg.Done()
 			nameList, tmpErr := trade_analysis.GetExchangeClassify(k)
 			if tmpErr != nil {
@@ -56,21 +56,23 @@ func GetClassifyName() (list trade_analysis.TradeClassifyNameListSort, err error
 		}(k, classifyExchangeMap)
 	}
 	wg.Wait()
+	currDate := time.Now().Format(utils.FormatDate)
 	for k, v := range exchanges {
 		tmp := trade_analysis.TradeClassifyNameList{
 			Exchange: v,
 			Items:    nil,
-			Sort: exchangesSortMap[k],
+			Sort:     exchangesSortMap[k],
+			CurrDate: currDate,
 		}
 		nameList, ok := classifyExchangeMap[k]
 		if !ok {
-			err = fmt.Errorf( "查询交易所分类信息失败")
+			err = fmt.Errorf("查询交易所分类信息失败")
 			errMsg = "查询交易所分类信息失败"
 			return
 		}
 		tmp.DataTime, ok = timeMap[k]
 		if !ok {
-			err = fmt.Errorf( "查询交易所最新更新时间失败")
+			err = fmt.Errorf("查询交易所最新更新时间失败")
 			errMsg = "查询交易所最新更新时间失败"
 			return
 		}
@@ -84,7 +86,7 @@ func GetClassifyName() (list trade_analysis.TradeClassifyNameListSort, err error
 					}
 					classifyMap[classifyName] = append(classifyMap[classifyName], tmpItemItem)
 				}
-			}else{
+			} else {
 				for _, item := range nameList {
 					tmpItemItem := trade_analysis.TradeClassifyNameListItemItem{
 						ClassifyType: item.ClassifyType,
@@ -99,12 +101,12 @@ func GetClassifyName() (list trade_analysis.TradeClassifyNameListSort, err error
 					Items:        l,
 				}
 				tmp.Items = append(tmp.Items, tmpItems)
-				tmp.Num ++
+				tmp.Num++
 			}
 		}
 		sort.Sort(trade_analysis.TradeClassifyNameListItemSort(tmp.Items))
 		list = append(list, tmp)
-		i ++
+		i++
 	}
 	if len(list) > 0 {
 		sort.Sort(list)
@@ -113,100 +115,100 @@ func GetClassifyName() (list trade_analysis.TradeClassifyNameListSort, err error
 }
 
 func getZhengzhouClassifyName(code string) (name string) {
-	if strings.HasPrefix(code,"PTA") {
+	if strings.HasPrefix(code, "PTA") {
 		name = "PTA"
 		return
 	}
-	if strings.HasPrefix(code,"TA") {
+	if strings.HasPrefix(code, "TA") {
 		name = "PTA"
 		return
 	}
-	if strings.HasPrefix(code,"ZC") {
-		name="动力煤"
+	if strings.HasPrefix(code, "ZC") {
+		name = "动力煤"
 		return
 	}
-	if strings.HasPrefix(code,"WH") {
-		name="强麦"
+	if strings.HasPrefix(code, "WH") {
+		name = "强麦"
 		return
 	}
-	if strings.HasPrefix(code,"UR") {
-		name="尿素"
+	if strings.HasPrefix(code, "UR") {
+		name = "尿素"
 		return
 	}
-	if strings.HasPrefix(code,"SR") {
-		name="白糖"
+	if strings.HasPrefix(code, "SR") {
+		name = "白糖"
 		return
 	}
-	if strings.HasPrefix(code,"SM") {
-		name="锰硅"
+	if strings.HasPrefix(code, "SM") {
+		name = "锰硅"
 		return
 	}
-	if strings.HasPrefix(code,"SF") {
-		name="硅铁"
+	if strings.HasPrefix(code, "SF") {
+		name = "硅铁"
 		return
 	}
-	if strings.HasPrefix(code,"SA") {
-		name="纯碱"
+	if strings.HasPrefix(code, "SA") {
+		name = "纯碱"
 		return
 	}
-	if strings.HasPrefix(code,"RS") {
-		name="油菜籽"
+	if strings.HasPrefix(code, "RS") {
+		name = "油菜籽"
 		return
 	}
-	if strings.HasPrefix(code,"RM") {
-		name="菜籽粕"
+	if strings.HasPrefix(code, "RM") {
+		name = "菜籽粕"
 		return
 	}
-	if strings.HasPrefix(code,"RI") {
-		name="早籼稻"
+	if strings.HasPrefix(code, "RI") {
+		name = "早籼稻"
 		return
 	}
-	if strings.HasPrefix(code,"PM") {
-		name="普麦"
+	if strings.HasPrefix(code, "PM") {
+		name = "普麦"
 		return
 	}
-	if strings.HasPrefix(code,"PK") {
-		name="花生"
+	if strings.HasPrefix(code, "PK") {
+		name = "花生"
 		return
 	}
-	if strings.HasPrefix(code,"PF") {
-		name="涤纶短纤"
+	if strings.HasPrefix(code, "PF") {
+		name = "涤纶短纤"
 		return
 	}
-	if strings.HasPrefix(code,"OI") {
-		name="菜油"
+	if strings.HasPrefix(code, "OI") {
+		name = "菜油"
 		return
 	}
-	if strings.HasPrefix(code,"MA") {
-		name="甲醇"
+	if strings.HasPrefix(code, "MA") {
+		name = "甲醇"
 		return
 	}
-	if strings.HasPrefix(code,"LR") {
-		name="晚籼稻"
+	if strings.HasPrefix(code, "LR") {
+		name = "晚籼稻"
 		return
 	}
-	if strings.HasPrefix(code,"JR") {
-		name="粳稻"
+	if strings.HasPrefix(code, "JR") {
+		name = "粳稻"
 		return
 	}
-	if strings.HasPrefix(code,"FG") {
-		name="玻璃"
+	if strings.HasPrefix(code, "FG") {
+		name = "玻璃"
 		return
 	}
-	if strings.HasPrefix(code,"CY") {
-		name="棉纱"
+	if strings.HasPrefix(code, "CY") {
+		name = "棉纱"
 		return
 	}
-	if strings.HasPrefix(code,"CJ") {
-		name="红枣"
+	if strings.HasPrefix(code, "CJ") {
+		name = "红枣"
 		return
 	}
-	if strings.HasPrefix(code,"CF") {
-		name="棉花"
+	if strings.HasPrefix(code, "CF") {
+		name = "棉花"
 		return
 	}
-	if strings.HasPrefix(code,"AP") {
-		name="苹果"
+	if strings.HasPrefix(code, "AP") {
+		name = "苹果"
 		return
 	}
 	return
@@ -215,11 +217,11 @@ func getZhengzhouClassifyName(code string) (name string) {
 func GetPositionTopDetail(req trade_analysis.GetPositionTopReq) (ret trade_analysis.GetPositionTopResp, err error, errMsg string) {
 	//定义交易所
 	exchanges := map[string]string{
-		"郑商所":"zhengzhou",
-		"大商所":"dalian",
-		"上期所":"shanghai",
-		"中金所":"cffex",
-		"上期能源":"ine",
+		"郑商所":  "zhengzhou",
+		"大商所":  "dalian",
+		"上期所":  "shanghai",
+		"中金所":  "cffex",
+		"上期能源": "ine",
 	}
 	exchange, ok := exchanges[req.Exchange]
 	if !ok {
@@ -231,14 +233,14 @@ func GetPositionTopDetail(req trade_analysis.GetPositionTopReq) (ret trade_analy
 	var dataTime time.Time
 	//查询最新的时间
 	if dataTimeStr == "" {
-		lastItem , tmpErr := trade_analysis.GetTradeTopLastDataTime(exchange, req.ClassifyName, req.ClassifyType)
+		lastItem, tmpErr := trade_analysis.GetTradeTopLastDataTime(exchange, req.ClassifyName, req.ClassifyType)
 		if tmpErr != nil {
 			errMsg = "查询最新的榜单信息失败"
 			err = tmpErr
 			return
 		}
 		dataTime = lastItem.DataTime
-	}else{
+	} else {
 		dataTime, err = time.ParseInLocation(utils.FormatDate, dataTimeStr, time.Local)
 		if err != nil {
 			errMsg = "请输入正确的时间格式"
@@ -290,13 +292,13 @@ func GetPositionTopDetail(req trade_analysis.GetPositionTopReq) (ret trade_analy
 	//统计汇总数据
 	for _, v := range dataList {
 		if t, ok1 := totalMap[v.DealType]; ok1 {
-			totalMap[v.DealType] = t+v.DealValue
-		}else{
+			totalMap[v.DealType] = t + v.DealValue
+		} else {
 			totalMap[v.DealType] = v.DealValue
 		}
 		if t, ok1 := totalChangeMap[v.DealType]; ok1 {
-			totalChangeMap[v.DealType] = t+v.DealChange
-		}else{
+			totalChangeMap[v.DealType] = t + v.DealChange
+		} else {
 			totalChangeMap[v.DealType] = v.DealChange
 		}
 	}
@@ -314,13 +316,13 @@ func GetPositionTopDetail(req trade_analysis.GetPositionTopReq) (ret trade_analy
 	for k, v := range dataList {
 		k++
 		if t, ok1 := totalTmpMap[v.DealType]; ok1 {
-			totalTmpMap[v.DealType] = t+v.DealValue
-		}else{
+			totalTmpMap[v.DealType] = t + v.DealValue
+		} else {
 			totalTmpMap[v.DealType] = v.DealValue
 		}
 		if t, ok1 := totalChangeTmpMap[v.DealType]; ok1 {
-			totalChangeTmpMap[v.DealType] = t+v.DealChange
-		}else{
+			totalChangeTmpMap[v.DealType] = t + v.DealChange
+		} else {
 			totalChangeTmpMap[v.DealType] = v.DealChange
 		}
 
@@ -333,11 +335,11 @@ func GetPositionTopDetail(req trade_analysis.GetPositionTopReq) (ret trade_analy
 			BeforeAllChange: totalChangeTmpMap[v.DealType],
 		}
 		//统计占比
-		rate := fmt.Sprintf("%.2f", float64(tmp.DealValue)/float64(totalMap[v.DealType])) // 保留2位小数
+		rate := fmt.Sprintf("%.2f", float64(tmp.DealValue)/float64(totalMap[v.DealType]))               // 保留2位小数
 		beforeAllRate := fmt.Sprintf("%.2f", float64(tmp.BeforeAllValue)/float64(totalMap[v.DealType])) // 保留2位小数
 		tmp.Rate = rate
 		tmp.BeforeAllRate = beforeAllRate
-		if tmp.DealShortName == "-"{
+		if tmp.DealShortName == "-" {
 			continue
 		}
 		detailList[v.DealType] = append(detailList[v.DealType], tmp)
@@ -360,4 +362,4 @@ func GetPositionTopDetail(req trade_analysis.GetPositionTopReq) (ret trade_analy
 
 	ret.DataTime = dataTimeStr
 	return
-}
+}