zwxi il y a 1 an
Parent
commit
c44949c3fb

+ 235 - 0
controllers/com_trade.go

@@ -0,0 +1,235 @@
+package controllers
+
+import (
+	"eta/eta_hub/models"
+	"eta/eta_hub/models/data_manage"
+	"eta/eta_hub/utils"
+	"fmt"
+	"github.com/rdlucklib/rdluck_tools/paging"
+	"time"
+)
+
+// ComTradeCountryList
+// @Title UN国家列表
+// @Description UN国家列表接口
+// @Success 200 {object} []data_manage.ComTradeCountryItem
+// @router /com_trade/country/list [get]
+func (this *EdbInfoController) ComTradeCountryList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+
+	list, err := data_manage.GetComTradeCountryItemAll()
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取数据失败,Err:" + err.Error()
+		return
+	}
+
+	br.Ret = 200
+	br.Msg = "获取成功"
+	br.Data = list
+}
+
+// ComTradeDataList
+// @Title UN数据列表
+// @Description UN数据列表接口
+// @Param   PageSize   query   int  true       "每页页码数"
+// @Param   CurrentIndex   query   int  true       "当前页码"
+// @Param   IndexCode   query   string  true       "指标code"
+// @Param   Year   query   string  true       "年份"
+// @Param   Date   query   string  true       "日期"
+// @Param   Flow   query   string  true       "贸易流向:X(Export:出口);M(Import:进口)"
+// @Param   ReporterCode   query   string  true       "出口国id"
+// @Param   PartnerCode   query   string  true       "进口国id"
+// @Param   Partner2Code   query   string  true       "第2进口国id"
+// @Param   DateType   query   int  true       "日期类型,0:所有,1:年度,2:月度"
+// @Param   SortParam   query   string  false       "排序字段参数,用来排序的字段, 枚举值:'data_time':日期"
+// @Param   SortType   query   string  true       "如何排序,是正序还是倒序,枚举值:`asc 正序`,`desc 倒叙`"
+// @Success 200 {object} data_manage.ComTradeDataListResp
+// @router /com_trade/data/list [get]
+func (this *EdbInfoController) ComTradeDataList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+
+	var startSize int
+	if pageSize <= 0 {
+		pageSize = utils.PageSize20
+	}
+	if currentIndex <= 0 {
+		currentIndex = 1
+	}
+	startSize = utils.StartIndex(currentIndex, pageSize)
+
+	var condition string
+	var pars []interface{}
+
+	// @Param   IndexCode   query   string  true       "指标code"
+	indexCode := this.GetString("IndexCode")
+	if indexCode != `` {
+		condition += ` AND index_code = ? `
+		pars = append(pars, indexCode)
+	}
+	// @Param   Flow   query   string  true       "贸易流向:X(Export:出口);M(Import:进口)"
+	flow := this.GetString("Flow")
+	if flow != `` {
+		condition += ` AND flow = ? `
+		pars = append(pars, flow)
+	}
+	// @Param   DateType   query   int  true       "日期类型,0:所有,1:年度,2:月度"
+	dateType, _ := this.GetInt("DateType", 0)
+	if dateType > 0 {
+		condition += ` AND date_type = ? `
+		pars = append(pars, dateType)
+	}
+	// @Param   Date   query   string  true       "日期"
+	date := this.GetString("Date")
+	if date != `` {
+		switch dateType {
+		case 1:
+			condition += ` AND data_time = ? `
+			pars = append(pars, date+"-12-31")
+		case 2:
+			condition += ` AND data_time = ? `
+			dateTime, tmpErr := time.ParseInLocation(utils.FormatDate, date+"-01", time.Local)
+			if tmpErr != nil {
+				br.Msg = "日期异常"
+				br.ErrMsg = "日期异常:" + tmpErr.Error()
+				return
+			}
+			pars = append(pars, dateTime.AddDate(0, 1, -1).Format(utils.FormatDate))
+		}
+
+	}
+
+	// @Param   ReporterCode   query   string  true       "出口国id"
+	reporterCode := this.GetString("ReporterCode")
+	if reporterCode != `` && reporterCode != `-1` {
+		condition += ` AND reporter_code = ? `
+		pars = append(pars, reporterCode)
+	}
+	// @Param   PartnerCode   query   string  true       "进口国id"
+	partnerCode := this.GetString("PartnerCode")
+	if partnerCode != `` && partnerCode != `-1` {
+		condition += ` AND partner_code = ? `
+		pars = append(pars, partnerCode)
+	}
+	// @Param   Partner2Code   query   string  true       "第2进口国id"
+	partner2Code := this.GetString("Partner2Code")
+	if partner2Code != `` && partner2Code != `-1` {
+		condition += ` AND partner2_code = ? `
+		pars = append(pars, partner2Code)
+	}
+
+	sortParam := this.GetString("SortParam")
+	sortType := this.GetString("SortType")
+	sortStr := ``
+	if sortParam != `` {
+		sortStr = fmt.Sprintf("%s %s,modify_time desc ", sortParam, sortType)
+	} else {
+		sortStr = " data_time desc,modify_time desc "
+	}
+
+	total, err := data_manage.GetComTradeListCount(condition, pars)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取数据失败,Err:" + err.Error()
+		return
+	}
+
+	list, err := data_manage.GetComTradeList(condition, pars, startSize, pageSize, sortStr)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取数据失败,Err:" + err.Error()
+		return
+	}
+
+	var lastUpdateTime time.Time
+	lastUpdateTimeStr := ``
+	// 获取用到的指标信息
+	comTradeList, err := data_manage.GetAllComTradeIndexList()
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取数据失败,Err:" + err.Error()
+		return
+	}
+	comTradeMap := make(map[int]*data_manage.ComTradeIndex)
+	for _, v := range comTradeList {
+		comTradeMap[v.ComTradeId] = v
+		if lastUpdateTime.IsZero() || lastUpdateTime.Before(v.UpdateTime) {
+			lastUpdateTime = v.UpdateTime
+			lastUpdateTimeStr = lastUpdateTime.Format(utils.FormatDateTime)
+		}
+	}
+
+	if len(list) > 0 {
+		// 给指标数据赋值指标名称
+		for _, v := range list {
+			if comTradeInfo, ok := comTradeMap[v.ComTradeId]; ok {
+				v.IndexNameCn = comTradeInfo.IndexNameCn
+			}
+			v.Date = fmt.Sprint(v.DataTime.Year())
+			if v.DateType == 2 {
+				v.Date = v.DataTime.Format(utils.FormatYearMonthDate)
+			}
+		}
+	}
+	page := paging.GetPaging(currentIndex, pageSize, total)
+	resp := data_manage.ComTradeDataListResp{
+		Paging:         page,
+		List:           list,
+		LastUpdateTime: lastUpdateTimeStr,
+	}
+	br.Ret = 200
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+
+// ComTradeList
+// @Title UN指标列表
+// @Description UN指标列表接口
+// @Param   Keyword   query   string  true       "关键字搜索"
+// @Success 200 {object} []data_manage.ComTradeIndex
+// @router /com_trade/list [get]
+func (this *EdbInfoController) ComTradeList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+
+	var condition string
+	var pars []interface{}
+
+	// @Param   IndexCode   query   string  true       "指标code"
+	keyword := this.GetString("Keyword")
+	if keyword != `` {
+		condition += ` AND ( index_name_cn like ? or index_code like ? ) `
+		pars = utils.GetLikeKeywordPars(pars, keyword, 2)
+	}
+
+	list, err := data_manage.GetComTradeIndexList(condition, pars)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取数据失败,Err:" + err.Error()
+		return
+	}
+	if len(list) <= 0 {
+		list = make([]*data_manage.ComTradeIndex, 0)
+	}
+
+	br.Ret = 200
+	br.Msg = "获取成功"
+	br.Data = list
+}

+ 933 - 0
controllers/commodity_trade_base_index.go

@@ -0,0 +1,933 @@
+package controllers
+
+import (
+	"eta/eta_hub/models"
+	"eta/eta_hub/models/data_manage"
+	"fmt"
+	"strings"
+)
+
+type TradeCommonController struct {
+	BaseAuthController
+}
+
+type Data []struct {
+	Title    string
+	ItemList []ShanghaiList
+}
+type ShanghaiList struct {
+	Code string
+	Item []*data_manage.BaseFromTradeShanghaiIndex
+}
+type EicData struct {
+	Country                string
+	Type                   string
+	EicCode                string
+	ShortName              string
+	Name                   string
+	Status                 string
+	GasDayStartedOn        string
+	GasInStorage           float64
+	GasInStorageCode       string
+	Full                   float64
+	FullCode               string
+	Trend                  float64
+	TrendCode              string
+	Injection              float64
+	InjectionCode          string
+	Withdrawal             float64
+	WithdrawalCode         string
+	WorkingGasVolume       float64
+	WorkingGasVolumeCode   string
+	InjectionCapacity      float64
+	InjectionCapacityCode  string
+	WithdrawalCapacity     float64
+	WithdrawalCapacityCode string
+	Info                   string
+	Children               []*data_manage.BaseFromTradeEicIndex
+}
+
+// ExchangeClassify
+// @title	获取交易所种类列表
+// @Description	获取交易所种类列表接口
+// @Param	Exchange query string true	"交易所名称"
+// @Success 200 {object} models.
+// @router /data/exchange/classify [get]
+func (this *TradeCommonController) ExchangeClassify() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	exchange := this.GetString("Exchange")
+	date := this.GetString("DataTime")
+
+	var respItem [][]string
+
+	latestData, err := data_manage.GetLatestDate(exchange)
+	if err != nil {
+		br.Msg = "获取失败"
+		return
+	}
+
+	if latestData == "" {
+		br.Ret = 200
+		br.Msg = "获取成功"
+		br.Data = respItem
+		return
+	}
+
+	if date == "" {
+		date = latestData
+	}
+
+	classifyName, err := data_manage.GetExchangeClassify(exchange, date)
+	if err != nil {
+		br.Msg = "获取种类失败"
+		br.ErrMsg = "获取种类失败,Err:" + err.Error()
+		return
+	}
+	respItem = append(respItem, classifyName)
+	respItem = append(respItem, []string{latestData})
+	br.Ret = 200
+	br.Msg = "获取成功"
+	br.Data = respItem
+}
+
+// ExchangeClassifyContract
+// @title	获取交易所种类合约列表
+// @Description	获取交易所种类合约列表接口
+// @Param	Exchange query string true	"交易所名称"
+// @Param	Classify query string true	"种类名称"
+// @Param	DataTime query string true	"时间"
+// @Success 200 {object} models.
+// @router /data/exchange/classifyContract [get]
+func (this *TradeCommonController) ExchangeClassifyContract() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	exchange := this.GetString("Exchange")
+	classify := this.GetString("Classify")
+	dataTime := this.GetString("DataTime")
+	classifyName, err := data_manage.GetExchangeClassifyContract(exchange, classify, dataTime)
+	if err != nil {
+		br.Msg = "获取种类失败"
+		br.ErrMsg = "获取种类失败,Err:" + err.Error()
+		return
+	}
+	br.Ret = 200
+	br.Msg = "获取成功"
+	br.Data = classifyName
+}
+
+// ShfeDataList
+// @title	获取上期所列表
+// @Description	获取上期所列表接口
+// @Param	Date query string true	"查询日期"
+// @Param	ClassifyName query string false	"分类名称"
+// @Param	ClassifyType query string false	"分类合约"
+// @Success 200 {object} models.
+// @router /data/shfe [get]
+func (this *TradeCommonController) ShfeDataList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	date := this.GetString("Date")
+	classifyName := this.GetString("ClassifyName")
+	classifyType := this.GetString("ClassifyType")
+	frequencyList, err := data_manage.GetBaseFromTradeIndexByParam("shanghai", date, classifyName, classifyType)
+	if err != nil {
+		br.Msg = "获取持仓排名失败"
+		br.ErrMsg = "获取持仓排名失败,Err:" + err.Error()
+		return
+	}
+	var data Data
+	var j, k int
+	if len(frequencyList) == 0 {
+		br.Ret = 200
+		br.Msg = "获取成功"
+		br.Data = data
+	} else {
+		if classifyName == "" {
+			data = make(Data, 50)
+			for i, item := range frequencyList {
+				if item.DealCode == "" {
+					item.DealValue = ""
+					item.DealChange = ""
+				}
+				if item.BuyCode == "" {
+					item.BuyValue = ""
+					item.BuyChange = ""
+				}
+				if item.SoldCode == "" {
+					item.SoldValue = ""
+					item.SoldChange = ""
+				}
+				if data[j].Title == item.ClassifyName {
+					if data[j].ItemList[k].Code == item.ClassifyType {
+						data[j].ItemList[k].Item = append(data[j].ItemList[k].Item, item)
+						continue
+					}
+					if i > 0 {
+						k++
+					}
+					data[j].ItemList[k].Code = item.ClassifyType
+					data[j].ItemList[k].Item = append(data[j].ItemList[k].Item, item)
+					continue
+				}
+				if i != 0 {
+					if k == 0 {
+						data[j].ItemList = data[j].ItemList[:k+1]
+					} else {
+						data[j].ItemList = data[j].ItemList[:k]
+					}
+					j++
+					k = 0
+				}
+				if data[j].ItemList == nil {
+					list := make([]ShanghaiList, 930)
+					data[j].ItemList = list
+				}
+				data[j].Title = item.ClassifyName
+				data[j].ItemList[k].Code = item.ClassifyType
+				data[j].ItemList[k].Item = append(data[j].ItemList[k].Item, item)
+			}
+			data = data[:j]
+
+			br.Ret = 200
+			br.Msg = "获取成功"
+			br.Data = data
+		} else {
+			data = make(Data, 1)
+			for i, item := range frequencyList {
+				if item.DealCode == "" {
+					item.DealValue = ""
+					item.DealChange = ""
+				}
+				if item.BuyCode == "" {
+					item.BuyValue = ""
+					item.BuyChange = ""
+				}
+				if item.SoldCode == "" {
+					item.SoldValue = ""
+					item.SoldChange = ""
+				}
+				data[0].Title = classifyName
+				if data[0].ItemList == nil {
+					list := make([]ShanghaiList, 200)
+					data[0].ItemList = list
+				}
+				if data[0].ItemList[k].Code == item.ClassifyType {
+					data[0].ItemList[k].Item = append(data[0].ItemList[k].Item, item)
+					continue
+				}
+				if i > 0 {
+					k++
+				}
+				data[0].ItemList[k].Code = item.ClassifyType
+				data[0].ItemList[k].Item = append(data[0].ItemList[k].Item, item)
+			}
+			data[0].ItemList = data[0].ItemList[:k+1]
+
+			br.Ret = 200
+			br.Msg = "获取成功"
+			br.Data = data
+		}
+	}
+}
+
+// IneDataList
+// @title	获取上海国际能源交易所列表
+// @Description	获取上海国际能源交易所列表接口
+// @Param	Date query string true	"查询日期"
+// @Param	ClassifyName query string false	"分类名称"
+// @Param	ClassifyType query string false	"分类合约"
+// @Success 200 {object} models.
+// @router /data/ine [get]
+func (this *TradeCommonController) IneDataList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	date := this.GetString("Date")
+	classifyName := this.GetString("ClassifyName")
+	classifyType := this.GetString("ClassifyType")
+	frequencyList, err := data_manage.GetBaseFromTradeIndexByParam("ine", date, classifyName, classifyType)
+	if err != nil {
+		br.Msg = "获取持仓排名失败"
+		br.ErrMsg = "获取持仓排名失败,Err:" + err.Error()
+		return
+	}
+
+	var data Data
+	var k int
+	if len(frequencyList) == 0 {
+		br.Ret = 200
+		br.Msg = "获取成功"
+		br.Data = data
+	} else {
+		data = make(Data, 1)
+		if len(frequencyList) > 20 {
+			for i, item := range frequencyList {
+				if item.DealCode == "" {
+					item.DealValue = ""
+					item.DealChange = ""
+				}
+				if item.BuyCode == "" {
+					item.BuyValue = ""
+					item.BuyChange = ""
+				}
+				if item.SoldCode == "" {
+					item.SoldValue = ""
+					item.SoldChange = ""
+				}
+				data[0].Title = classifyName
+				if data[0].ItemList == nil {
+					list := make([]ShanghaiList, 200)
+					data[0].ItemList = list
+				}
+				if data[0].ItemList[k].Code == item.ClassifyType {
+					data[0].ItemList[k].Item = append(data[0].ItemList[k].Item, item)
+					continue
+				}
+				if i > 0 {
+					k++
+				}
+				data[0].ItemList[k].Code = item.ClassifyType
+				data[0].ItemList[k].Item = append(data[0].ItemList[k].Item, item)
+			}
+			data[0].ItemList = data[0].ItemList[:k+1]
+
+			br.Ret = 200
+			br.Msg = "获取成功"
+			br.Data = data
+		} else {
+			for _, item := range frequencyList {
+				if item.DealCode == "" {
+					item.DealValue = ""
+					item.DealChange = ""
+				}
+				if item.BuyCode == "" {
+					item.BuyValue = ""
+					item.BuyChange = ""
+				}
+				if item.SoldCode == "" {
+					item.SoldValue = ""
+					item.SoldChange = ""
+				}
+				data[0].Title = item.ClassifyName
+				if data[0].ItemList == nil {
+					list := make([]ShanghaiList, 1)
+					data[0].ItemList = list
+				}
+				if data[0].ItemList[0].Code == item.ClassifyType {
+					data[0].ItemList[0].Item = append(data[0].ItemList[0].Item, item)
+					continue
+				}
+				//if i != 0 {
+				//	k++
+				//	fmt.Println(k)
+				//}
+				data[0].ItemList[0].Code = item.ClassifyType
+				data[0].ItemList[0].Item = append(data[0].ItemList[0].Item, item)
+			}
+			//data[0].ItemList = data[0].ItemList[:k]
+
+			br.Ret = 200
+			br.Msg = "获取成功"
+			br.Data = data
+		}
+	}
+}
+
+// CffexDataList
+// @title	获取中金所所列表
+// @Description	获取中金所列表接口
+// @Param	Date query string true	"查询日期"
+// @Param	ClassifyName query string false	"分类名称"
+// @Param	ClassifyType query string false	"分类合约"
+// @Success 200 {object} models.
+// @router /data/cffex [get]
+func (this *TradeCommonController) CffexDataList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	date := this.GetString("Date")
+	date = strings.Replace(date, "-", "", -1)
+	classifyName := this.GetString("ClassifyName")
+	classifyType := this.GetString("ClassifyType")
+	frequencyList, err := data_manage.GetBaseFromTradeIndexByParam("cffex", date, classifyName, classifyType)
+	if err != nil {
+		br.Msg = "获取持仓排名失败"
+		br.ErrMsg = "获取持仓排名失败,Err:" + err.Error()
+		return
+	}
+	var data Data
+	var k int
+	if len(frequencyList) == 0 {
+		br.Ret = 200
+		br.Msg = "获取成功"
+		br.Data = data
+	} else {
+		data = make(Data, 1)
+		if len(frequencyList) > 20 {
+			for i, item := range frequencyList {
+				if item.DealCode == "" {
+					item.DealValue = ""
+					item.DealChange = ""
+				}
+				if item.BuyCode == "" {
+					item.BuyValue = ""
+					item.BuyChange = ""
+				}
+				if item.SoldCode == "" {
+					item.SoldValue = ""
+					item.SoldChange = ""
+				}
+				data[0].Title = classifyName
+				if data[0].ItemList == nil {
+					list := make([]ShanghaiList, 200)
+					data[0].ItemList = list
+				}
+				if data[0].ItemList[k].Code == item.ClassifyType {
+					data[0].ItemList[k].Item = append(data[0].ItemList[k].Item, item)
+					continue
+				}
+				if i > 0 {
+					k++
+				}
+				data[0].ItemList[k].Code = item.ClassifyType
+				data[0].ItemList[k].Item = append(data[0].ItemList[k].Item, item)
+			}
+			data[0].ItemList = data[0].ItemList[:k+1]
+
+			br.Ret = 200
+			br.Msg = "获取成功"
+			br.Data = data
+		} else {
+			for _, item := range frequencyList {
+				if item.DealCode == "" {
+					item.DealValue = ""
+					item.DealChange = ""
+				}
+				if item.BuyCode == "" {
+					item.BuyValue = ""
+					item.BuyChange = ""
+				}
+				if item.SoldCode == "" {
+					item.SoldValue = ""
+					item.SoldChange = ""
+				}
+				data[0].Title = item.ClassifyName
+				if data[0].ItemList == nil {
+					list := make([]ShanghaiList, 1)
+					data[0].ItemList = list
+				}
+				if data[0].ItemList[0].Code == item.ClassifyType {
+					data[0].ItemList[0].Item = append(data[0].ItemList[0].Item, item)
+					continue
+				}
+				//if i != 0 {
+				//	k++
+				//	fmt.Println(k)
+				//}
+				data[0].ItemList[0].Code = item.ClassifyType
+				data[0].ItemList[0].Item = append(data[0].ItemList[0].Item, item)
+			}
+			//data[0].ItemList = data[0].ItemList[:20]
+
+			br.Ret = 200
+			br.Msg = "获取成功"
+			br.Data = data
+		}
+	}
+}
+
+// ZhengzhouDataList
+// @title	获取郑州交易所列表
+// @Description	获取郑州交易所列表接口
+// @Param	Date query string true	"查询日期"
+// @Param	ClassifyName query string false	"分类名称"
+// @Param	ClassifyType query string false	"分类合约"
+// @Success 200 {object} models.
+// @router /data/zhengzhou [get]
+func (this *TradeCommonController) ZhengzhouDataList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	date := this.GetString("Date")
+	fmt.Println(date)
+	date = strings.Replace(date, "-", "", -1)
+	fmt.Println(date)
+	classifyName := this.GetString("ClassifyName")
+	classifyType := this.GetString("ClassifyType")
+	frequencyList, err := data_manage.GetBaseFromTradeIndexByParam("zhengzhou", date, classifyName, classifyType)
+	if err != nil {
+		br.Msg = "获取持仓排名失败"
+		br.ErrMsg = "获取持仓排名失败,Err:" + err.Error()
+		return
+	}
+	var data Data
+	var k int
+	if len(frequencyList) == 0 {
+		br.Ret = 200
+		br.Msg = "获取成功"
+		br.Data = data
+	} else {
+		data = make(Data, 1)
+		fmt.Println(len(frequencyList))
+		if len(frequencyList) > 21 {
+			for i, item := range frequencyList {
+				if item.DealCode == "" {
+					item.DealValue = ""
+					item.DealChange = ""
+				}
+				if item.BuyCode == "" {
+					item.BuyValue = ""
+					item.BuyChange = ""
+				}
+				if item.SoldCode == "" {
+					item.SoldValue = ""
+					item.SoldChange = ""
+				}
+				data[0].Title = classifyName
+				if data[0].ItemList == nil {
+					list := make([]ShanghaiList, 200)
+					data[0].ItemList = list
+				}
+				if data[0].ItemList[k].Code == item.ClassifyType {
+					data[0].ItemList[k].Item = append(data[0].ItemList[k].Item, item)
+					continue
+				}
+				if i > 0 {
+					k++
+				}
+				data[0].ItemList[k].Code = item.ClassifyType
+				data[0].ItemList[k].Item = append(data[0].ItemList[k].Item, item)
+			}
+			data[0].ItemList = data[0].ItemList[:k]
+
+			br.Ret = 200
+			br.Msg = "获取成功"
+			br.Data = data
+		} else {
+			for _, item := range frequencyList {
+				if item.DealCode == "" {
+					item.DealValue = ""
+					item.DealChange = ""
+				}
+				if item.BuyCode == "" {
+					item.BuyValue = ""
+					item.BuyChange = ""
+				}
+				if item.SoldCode == "" {
+					item.SoldValue = ""
+					item.SoldChange = ""
+				}
+				data[0].Title = item.ClassifyName
+				if data[0].ItemList == nil {
+					list := make([]ShanghaiList, 1)
+					data[0].ItemList = list
+				}
+				if data[0].ItemList[0].Code == item.ClassifyType {
+					data[0].ItemList[0].Item = append(data[0].ItemList[0].Item, item)
+					continue
+				}
+				//if i != 0 {
+				//	k++
+				//	fmt.Println(k)
+				//}
+				data[0].ItemList[0].Code = item.ClassifyType
+				data[0].ItemList[0].Item = append(data[0].ItemList[0].Item, item)
+			}
+			//data[0].ItemList = data[0].ItemList[:k]
+
+			br.Ret = 200
+			br.Msg = "获取成功"
+			br.Data = data
+		}
+	}
+}
+
+// DalianDataList
+// @title	获取大连交易所列表
+// @Description	获取大连交易所列表接口
+// @Param	Date query string true	"查询日期"
+// @Param	ClassifyName query string false	"分类名称"
+// @Param	ClassifyType query string false	"分类合约"
+// @Success 200 {object} models.
+// @router /data/dalian [get]
+func (this *TradeCommonController) DalianDataList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	date := this.GetString("Date")
+	classifyName := this.GetString("ClassifyName")
+	classifyType := this.GetString("ClassifyType")
+	frequencyList, err := data_manage.GetBaseFromTradeIndexByParam("dalian", date, classifyName, classifyType)
+	if err != nil {
+		br.Msg = "获取持仓排名失败"
+		br.ErrMsg = "获取持仓排名失败,Err:" + err.Error()
+		return
+	}
+	var data Data
+	var k int
+	if len(frequencyList) == 0 {
+		br.Ret = 200
+		br.Msg = "获取成功"
+		br.Data = data
+	} else {
+		data = make(Data, 1)
+		fmt.Println("len:", len(frequencyList))
+		if len(frequencyList) > 21 {
+			for i, item := range frequencyList {
+				if item.DealCode == "" {
+					item.DealValue = ""
+					item.DealChange = ""
+				}
+				if item.BuyCode == "" {
+					item.BuyValue = ""
+					item.BuyChange = ""
+				}
+				if item.SoldCode == "" {
+					item.SoldValue = ""
+					item.SoldChange = ""
+				}
+				data[0].Title = classifyName
+				if data[0].ItemList == nil {
+					list := make([]ShanghaiList, 200)
+					data[0].ItemList = list
+				}
+				if data[0].ItemList[k].Code == item.ClassifyType {
+					data[0].ItemList[k].Item = append(data[0].ItemList[k].Item, item)
+					continue
+				}
+				if i > 0 {
+					k++
+				}
+				data[0].ItemList[k].Code = item.ClassifyType
+				data[0].ItemList[k].Item = append(data[0].ItemList[k].Item, item)
+			}
+			data[0].ItemList = data[0].ItemList[:k]
+
+			br.Ret = 200
+			br.Msg = "获取成功"
+			br.Data = data
+		} else {
+			for _, item := range frequencyList {
+				if item.DealCode == "" {
+					item.DealValue = ""
+					item.DealChange = ""
+				}
+				if item.BuyCode == "" {
+					item.BuyValue = ""
+					item.BuyChange = ""
+				}
+				if item.SoldCode == "" {
+					item.SoldValue = ""
+					item.SoldChange = ""
+				}
+				data[0].Title = item.ClassifyName
+				if data[0].ItemList == nil {
+					list := make([]ShanghaiList, 1)
+					data[0].ItemList = list
+				}
+				if data[0].ItemList[0].Code == item.ClassifyType {
+					data[0].ItemList[0].Item = append(data[0].ItemList[0].Item, item)
+					continue
+				}
+				//if i != 0 {
+				//	k++
+				//	fmt.Println(k)
+				//}
+				data[0].ItemList[0].Code = item.ClassifyType
+				data[0].ItemList[0].Item = append(data[0].ItemList[0].Item, item)
+			}
+			//data[0].ItemList = data[0].ItemList[:k]
+
+			br.Ret = 200
+			br.Msg = "获取成功"
+			br.Data = data
+		}
+	}
+}
+
+// EicLatestDateV2
+// @title	获取欧洲天然气最新日期V2
+// @Description	获取欧洲天然气最新日期接口
+// @Success 200 {object} models.
+// @router /data/eicLatestDateV2 [get]
+func (this *TradeCommonController) EicLatestDateV2() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	latestData, err := data_manage.GetEicDateV2()
+	if err != nil {
+		br.Msg = "获取日期失败"
+		br.ErrMsg = "获取日期失败,Err:" + err.Error()
+		return
+	}
+
+	br.Ret = 200
+	br.Msg = "获取成功"
+	br.Data = latestData[0].GasDayStart
+}
+
+type EicDataV2 struct {
+	Name               string      `json:"name" description:"指标名称"`
+	Code               string      `json:"code" description:"指标编码"`
+	GasDayStart        string      `json:"gasDayStart" description:"指标日期"`
+	GasInStorage       float64     `json:"gasInStorage" description:"储存容量"`
+	Consumption        string      `json:"consumption" description:"消耗"`
+	ConsumptionFull    string      `json:"consumptionFull" description:"消耗百分比"`
+	Injection          float64     `json:"injection" description:"注入量"`
+	Withdrawal         float64     `json:"withdrawal" description:"减少量"`
+	WorkingGasVolume   float64     `json:"workingGasVolume" description:"工作气体量"`
+	InjectionCapacity  float64     `json:"injectionCapacity" description:"注入速度"`
+	WithdrawalCapacity float64     `json:"withdrawalCapacity" description:"减少速度"`
+	Status             string      `json:"status" description:"状态"`
+	Trend              float64     `json:"trend" description:"较前日对比"`
+	Full               float64     `json:"full" description:"储存容量百分比"`
+	Info               string      `json:"info" description:"信息"`
+	Children           []EicDataV2 `json:"children"`
+}
+
+// eicDataV2
+// @title	获取欧洲天然气列表
+// @Description	获取欧洲天然气列表接口
+// @Param	Date query string true	"查询日期"
+// @Success 200 {object} models.
+// @router /data/eicDataV2 [get]
+func (this *TradeCommonController) EicDataV2() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	date := this.GetString("Date")
+	list, err := data_manage.GetEicDataV2(date)
+	if err != nil {
+		br.Msg = "获取天然气数据失败"
+		br.ErrMsg = "获取天然气数据失败,Err:" + err.Error()
+		return
+	}
+
+	var continentItems []data_manage.BaseFromTradeEicIndexV2
+	var countryItems []data_manage.BaseFromTradeEicIndexV2
+	var ssoItems []data_manage.BaseFromTradeEicIndexV2
+	var facItems []data_manage.BaseFromTradeEicIndexV2
+	for _, item := range list {
+		switch item.Type {
+		case "continent":
+			continentItems = append(continentItems, *item)
+		case "country":
+			countryItems = append(countryItems, *item)
+		case "sso":
+			ssoItems = append(ssoItems, *item)
+		case "fac":
+			facItems = append(facItems, *item)
+		default:
+			continue
+		}
+	}
+	var data []data_manage.BaseFromTradeEicIndexV2
+	data = continentItems
+	for i, continentItem := range continentItems {
+		for _, countryItem := range countryItems {
+			if countryItem.Parent == continentItem.Name {
+				data[i].Children = append(data[i].Children, countryItem)
+			}
+		}
+		for j, country := range data[i].Children {
+			for _, ssoItem := range ssoItems {
+				if country.Name == ssoItem.Parent {
+					data[i].Children[j].Children = append(data[i].Children[j].Children, ssoItem)
+				}
+			}
+			for k, sso := range data[i].Children[j].Children {
+				for _, facItem := range facItems {
+					if sso.Name == facItem.Parent {
+						data[i].Children[j].Children[k].Children = append(data[i].Children[j].Children[k].Children, facItem)
+					}
+				}
+			}
+		}
+	}
+
+	br.Ret = 200
+	br.Msg = "获取成功"
+	br.Data = data
+}
+
+// EicHistoryDataV2
+// @title	获取欧洲天然气历史列表
+// @Description	获取欧洲天然气历史列表接口
+// @Param	Code query string true	"Code"
+// @Param	StartDate query string false	"开始时间"
+// @Param	EndDate query string false	"结束时间"
+// @Success 200 {object} []EicDataV2
+// @router /data/eicHistoryDataV2 [get]
+func (this *TradeCommonController) EicHistoryDataV2() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	code := this.GetString("Code")
+	startDate := this.GetString("StartDate")
+	endDate := this.GetString("EndDate")
+	var eicList []*data_manage.BaseFromTradeEicIndexV2
+	var err error
+	if endDate != "" {
+		eicList, err = data_manage.GetEicHistoryDateByDateV2(code, startDate, endDate)
+		if err != nil {
+			br.Msg = "获取持仓排名失败"
+			br.ErrMsg = "获取持仓排名失败,Err:" + err.Error()
+			return
+		}
+	} else {
+		eicList, err = data_manage.GetEicHistoryDateV2(code)
+		if err != nil {
+			br.Msg = "获取持仓排名失败"
+			br.ErrMsg = "获取持仓排名失败,Err:" + err.Error()
+			return
+		}
+	}
+
+	var data []EicDataV2
+	for _, eic := range eicList {
+		item := EicDataV2{
+			Name:               eic.Name,
+			Code:               eic.EicCode,
+			GasDayStart:        eic.GasDayStart,
+			GasInStorage:       eic.GasInStorage,
+			Consumption:        eic.Consumption,
+			ConsumptionFull:    eic.ConsumptionFull,
+			Injection:          eic.Injection,
+			Withdrawal:         eic.Withdrawal,
+			WorkingGasVolume:   eic.WorkingGasVolume,
+			InjectionCapacity:  eic.InjectionCapacity,
+			WithdrawalCapacity: eic.WithdrawalCapacity,
+			Status:             eic.Status,
+			Trend:              eic.Trend,
+			Full:               eic.Full,
+			Info:               eic.Info,
+		}
+		data = append(data, item)
+	}
+
+	br.Ret = 200
+	br.Msg = "获取成功"
+	br.Data = data
+}
+
+// eicContinentV2 欧洲天然气洲际及国家级列表
+// @title	欧洲天然气洲际及国家级列表
+// @Description	欧洲天然气洲际及国家级列表
+// @Param	Date query string true	"查询日期"
+// @Success 200 {object} []data_manage.BaseFromTradeEicIndexV2
+// @router /data/eicContinentV2 [get]
+func (this *TradeCommonController) EicContinentListV2() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	date := this.GetString("Date")
+	list, err := data_manage.GetContinentAndCountryEicDateV2(date)
+	if err != nil {
+		br.Msg = "获取天然气数据失败"
+		br.ErrMsg = "获取天然气数据失败,Err:" + err.Error()
+		return
+	}
+
+	var continentItems []data_manage.BaseFromTradeEicIndexV2
+	var countryItems []data_manage.BaseFromTradeEicIndexV2
+	for _, item := range list {
+		switch item.Type {
+		case "continent":
+			continentItems = append(continentItems, *item)
+		case "country":
+			countryItems = append(countryItems, *item)
+		default:
+			continue
+		}
+	}
+	var data []data_manage.BaseFromTradeEicIndexV2
+	data = continentItems
+	for i, continentItem := range continentItems {
+		for _, countryItem := range countryItems {
+			if countryItem.Parent == continentItem.Name {
+				data[i].Children = append(data[i].Children, countryItem)
+			}
+		}
+	}
+	br.Ret = 200
+	br.Msg = "获取成功"
+	br.Data = data
+}
+
+// EicDataListV2 欧洲天然气细节列表
+// @title	欧洲天然气细节列表
+// @Description	欧洲天然气细节列表
+// @Param	Date query string true	"查询日期"
+// @Param	Name query string true	"国家"
+// @Success 200 {object} []data_manage.BaseFromTradeEicIndexV2
+// @router /data/eicSSODataV2 [get]
+func (this *TradeCommonController) EicDataListV2() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	date := this.GetString("Date")
+	name := this.GetString("Name")
+	list, err := data_manage.GetSSOAndFacEicDateV2(date, name)
+	if err != nil {
+		br.Msg = "获取天然气数据失败"
+		br.ErrMsg = "获取天然气数据失败,Err:" + err.Error()
+		return
+	}
+	var ssoItems []data_manage.BaseFromTradeEicIndexV2
+	var facItems []data_manage.BaseFromTradeEicIndexV2
+	for _, item := range list {
+		switch item.Type {
+		case "sso":
+			ssoItems = append(ssoItems, *item)
+		case "fac":
+			facItems = append(facItems, *item)
+		default:
+			continue
+		}
+	}
+	i := 0
+	var data []data_manage.BaseFromTradeEicIndexV2
+	for _, ssoItem := range ssoItems {
+		if ssoItem.Parent == name {
+			data = append(data, ssoItem)
+			for _, facItem := range facItems {
+				if facItem.Parent == ssoItem.Name {
+					data[i].Children = append(data[i].Children, facItem)
+				}
+			}
+			i++
+		}
+	}
+
+	br.Ret = 200
+	br.Msg = "获取成功"
+	br.Data = data
+}

+ 138 - 0
controllers/eia_steo.go

@@ -0,0 +1,138 @@
+package controllers
+
+import (
+	"eta/eta_hub/models"
+	"eta/eta_hub/models/data_manage"
+	"eta/eta_hub/utils"
+	"github.com/rdlucklib/rdluck_tools/paging"
+)
+
+// EdbInfoController 数据管理
+type EdbInfoController struct {
+	BaseAuthController
+}
+
+// EiaSteoClassify
+// @Title EiaSteo数据分类
+// @Description EiaSteo数据分类接口
+// @Success 200 {object} data_manage.LzClassify
+// @router /eia_steo/classify [get]
+func (this *EdbInfoController) EiaSteoClassify() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	classifyList, err := data_manage.GetEiaSteoClassifyList()
+	if err != nil {
+		br.Msg = "获取分类失败"
+		br.ErrMsg = "获取分类失败,Err:" + err.Error()
+		return
+	}
+	for _, v := range classifyList {
+		if v.ClassifyName == `` {
+			v.ClassifyName = v.ClassifyNameOriginal
+		}
+	}
+
+	br.Ret = 200
+	br.Msg = "获取成功"
+	br.Data = classifyList
+}
+
+// EiaSteoData
+// @Title 获取EiaSteo数据
+// @Description 获取EiaSteo数据接口
+// @Param   BaseFromEiaSteoClassifyId   query   int  true       "指标分类id"
+// @Param   IndexCode   query   string  true       "指标code"
+// @Param   IsExport   query   bool  false       "是否导出excel,默认是false"
+// @Param   PageSize   query   int  true       "每页数据条数"
+// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
+// @Success 200 {object} data_manage.LzFrequency
+// @router /eia_steo/data [get]
+func (this *EdbInfoController) EiaSteoData() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+	var startSize int
+
+	if pageSize <= 0 {
+		pageSize = utils.PageSize20
+	}
+	if currentIndex <= 0 {
+		currentIndex = 1
+	}
+	startSize = utils.StartIndex(currentIndex, pageSize)
+
+	var condition string
+	var pars []interface{}
+
+	indexCode := this.GetString("IndexCode")
+	if indexCode != "" {
+		condition += ` AND index_code = ? `
+		pars = append(pars, utils.TrimStr(indexCode))
+	}
+	classifyId, _ := this.GetInt("BaseFromEiaSteoClassifyId")
+	if classifyId > 0 {
+		condition += ` AND base_from_eia_steo_classify_id = ? `
+		pars = append(pars, classifyId)
+	}
+
+	//获取指标
+	indexList, err := data_manage.GetEiaSteoIndexList(condition, pars)
+	if err != nil {
+		br.Msg = "获取数据失败"
+		br.ErrMsg = "获取数据失败,Err:" + err.Error()
+		return
+	}
+	resultList := make([]data_manage.EiaSteoIndexListResp, 0)
+	for _, v := range indexList {
+
+		indexName := v.IndexName
+		if indexName == `` {
+			indexName = v.IndexNameOriginal
+		}
+		product := data_manage.EiaSteoIndexListResp{
+			BaseFromEiaSteoIndexId:    v.BaseFromEiaSteoIndexId,
+			BaseFromEiaSteoClassifyId: v.BaseFromEiaSteoClassifyId,
+			IndexCode:                 v.IndexCode,
+			IndexName:                 indexName,
+			//IndexNameOriginal:          v.IndexNameOriginal,
+			Unit:       v.Unit,
+			Frequency:  v.Frequency,
+			StartDate:  v.StartDate.Format(utils.FormatDate),
+			EndDate:    v.EndDate.Format(utils.FormatDate),
+			ModifyTime: v.ModifyTime.Format(utils.FormatDateTime),
+			CreateTime: v.CreateTime.Format(utils.FormatDateTime),
+			//Paging:     tmpPaging,
+			//DataList:   nil,
+		}
+
+		total, err := data_manage.GetEiaSteoIndexDataCount(v.IndexCode)
+		page := paging.GetPaging(currentIndex, pageSize, total)
+
+		dataList, err := data_manage.GetEiaSteoIndexDataList(v.IndexCode, startSize, pageSize)
+		if err != nil {
+			br.Msg = "获取数据失败"
+			br.ErrMsg = "获取指标数据失败,Err:" + err.Error()
+			return
+		}
+		if dataList == nil {
+			dataList = make([]*data_manage.BaseFromEiaSteoDataItem, 0)
+		}
+		product.DataList = dataList
+		product.Paging = page
+		resultList = append(resultList, product)
+	}
+
+	br.Ret = 200
+	br.Msg = "获取成功"
+	br.Data = resultList
+}
+

+ 161 - 0
models/data_manage/base_from_eia_stero.go

@@ -0,0 +1,161 @@
+package data_manage
+
+import (
+	"eta/eta_hub/utils"
+	"github.com/beego/beego/v2/client/orm"
+	"github.com/rdlucklib/rdluck_tools/paging"
+	"time"
+)
+
+// BaseFromEiaSteoIndex EiaSteo指标
+type BaseFromEiaSteoIndex struct {
+	BaseFromEiaSteoIndexId    int       `orm:"column(base_from_eia_steo_index_id);pk"`
+	BaseFromEiaSteoClassifyId int       `description:"指标分类id"`
+	IndexCode                 string    `description:"指标编码"`
+	IndexName                 string    `description:"指标名称(中文名称)"`
+	IndexNameOriginal         string    `description:"指标名称(原始名称)"`
+	Frequency                 string    `description:"频度"`
+	Level                     int       `description:"指标层级(原始层级)"`
+	Unit                      string    `description:"单位"`
+	Super                     string    `description:"我也不知道是个啥,反正先存起来,万一用到了呢"`
+	Precision                 int       `description:"精度,我也不知道会不会用到,反正先存起来,万一用到了呢"`
+	LastHistorical            string    `description:"最近的历史记录,我也不知道会不会用到,反正先存起来,万一用到了呢"`
+	Description               string    `description:"备注信息,我也不知道会不会用到,反正先存起来,万一用到了呢"`
+	IsMappable                int       `description:"是否可映射,我也不知道会不会用到,反正先存起来,万一用到了呢"`
+	StartDate                 time.Time `description:"开始日期"`
+	EndDate                   time.Time `description:"结束日期"`
+	ModifyTime                time.Time `description:"最新更新时间"`
+	CreateTime                time.Time `description:"创建时间"`
+}
+
+// BaseFromEiaSteoIndexItem EiaSteo指标
+type BaseFromEiaSteoIndexItem struct {
+	BaseFromEiaSteoIndexId    int    `orm:"column(base_from_eia_steo_index_id);pk"`
+	BaseFromEiaSteoClassifyId int    `description:"指标分类id"`
+	IndexCode                 string `description:"指标编码"`
+	IndexName                 string `description:"指标名称(中文名称)"`
+	IndexNameOriginal         string `description:"指标名称(原始名称)"`
+	Frequency                 string `description:"频度"`
+	Level                     int    `description:"指标层级(原始层级)"`
+	Unit                      string `description:"单位"`
+	Super                     string `description:"我也不知道是个啥,反正先存起来,万一用到了呢"`
+	Precision                 int    `description:"精度,我也不知道会不会用到,反正先存起来,万一用到了呢"`
+	LastHistorical            string `description:"最近的历史记录,我也不知道会不会用到,反正先存起来,万一用到了呢"`
+	Description               string `description:"备注信息,我也不知道会不会用到,反正先存起来,万一用到了呢"`
+	IsMappable                int    `description:"是否可映射,我也不知道会不会用到,反正先存起来,万一用到了呢"`
+	StartDate                 string `description:"开始日期"`
+	EndDate                   string `description:"结束日期"`
+	ModifyTime                string `description:"最新更新时间"`
+	CreateTime                string `description:"创建时间"`
+}
+
+// BaseFromEiaSteoClassify EiaSteo分类
+type BaseFromEiaSteoClassify struct {
+	BaseFromEiaSteoClassifyId int       `orm:"column(base_from_eia_steo_classify_id);pk"`
+	ClassifyName              string    `description:"分类名称(中文名称)"`
+	ClassifyNameOriginal      string    `description:"分类名称(原始名称)"`
+	ModifyTime                time.Time `description:"最新更新时间"`
+	CreateTime                time.Time `description:"创建时间"`
+}
+
+// BaseFromEiaSteoData EiaSteo数据表
+type BaseFromEiaSteoData struct {
+	BaseFromEiaSteoDataId  int       `orm:"column(base_from_eia_steo_data_id);pk"`
+	BaseFromEiaSteoIndexId int       `description:"指标id"`
+	IndexCode              string    `description:"指标编码"`
+	DataTime               time.Time `description:"数据日期"`
+	Value                  float64   `description:"数据值"`
+	ModifyTime             time.Time `description:"最新更新时间"`
+	CreateTime             time.Time `description:"创建时间"`
+}
+
+// BaseFromEiaSteoDataItem EiaSteo数据
+type BaseFromEiaSteoDataItem struct {
+	BaseFromEiaSteoDataId  int     `orm:"column(base_from_eia_steo_data_id);pk"`
+	BaseFromEiaSteoIndexId int     `description:"指标id"`
+	IndexCode              string  `description:"指标编码"`
+	DataTime               string  `description:"数据日期"`
+	Value                  float64 `description:"数据值"`
+	ModifyTime             string  `description:"最新更新时间"`
+	CreateTime             string  `description:"创建时间"`
+}
+
+// GetEiaSteoClassifyList 获取分类列表
+func GetEiaSteoClassifyList() (items []*BaseFromEiaSteoClassify, err error) {
+	sql := ` SELECT * FROM base_from_eia_steo_classify  ORDER BY base_from_eia_steo_classify_id ASC `
+	o := orm.NewOrmUsingDB("data")
+	o.Raw(sql).QueryRows(&items)
+	return
+}
+
+type EiaSteoIndexListResp struct {
+	BaseFromEiaSteoIndexId    int                `orm:"column(base_from_eia_steo_index_id);pk"`
+	BaseFromEiaSteoClassifyId int                `description:"指标分类id"`
+	IndexCode                 string             `description:"指标编码"`
+	IndexName                 string             `description:"指标名称(中文名称)"`
+	Unit                      string             `description:"单位"`
+	Frequency                 string             `description:"频度"`
+	StartDate                 string             `description:"开始日期"`
+	EndDate                   string             `description:"结束日期"`
+	ModifyTime                string             `description:"最新更新时间"`
+	CreateTime                string             `description:"创建时间"`
+	Paging                    *paging.PagingItem `description:"分页数据"`
+	DataList                  []*BaseFromEiaSteoDataItem
+}
+
+// GetEiaSteoIndexList 获取指标列表
+func GetEiaSteoIndexList(condition string, pars []interface{}) (items []*BaseFromEiaSteoIndex, err error) {
+	sql := ` SELECT *  FROM base_from_eia_steo_index WHERE 1=1  `
+	sql += condition
+	sql += ` ORDER BY base_from_eia_steo_index_id ASC `
+	o := orm.NewOrmUsingDB("data")
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
+// GetEiaSteoIndexDataCount 获取指标数据总数
+func GetEiaSteoIndexDataCount(indexCode string) (count int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT COUNT(1) AS count FROM base_from_eia_steo_data where index_code = ? `
+	err = o.Raw(sql, indexCode).QueryRow(&count)
+	return
+}
+
+// GetEiaSteoIndexDataList 获取指标数据总数列表
+func GetEiaSteoIndexDataList(indexCode string, startSize, pageSize int) (items []*BaseFromEiaSteoDataItem, err error) {
+	//sql := ` SELECT *  FROM mb_index_main_data WHERE INDEX_CODE=? ORDER BY DATA_DATE DESC,PUBLISH_TIME DESC LIMIT ?,?`
+	sql := ` SELECT * FROM base_from_eia_steo_data AS a WHERE index_code=? ORDER BY data_time DESC LIMIT ?,? `
+	o := orm.NewOrmUsingDB("data")
+	_, err = o.Raw(sql, indexCode, startSize, pageSize).QueryRows(&items)
+	return
+}
+
+// GetEiaSteoItemList 模糊查询EiaSteo数据库指标列表
+func GetEiaSteoItemList(keyword string) (items []*BaseFromEiaSteoIndexItem, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := "SELECT * FROM base_from_eia_steo_index WHERE index_name LIKE ?  OR index_code like ?"
+	_, err = o.Raw(sql, utils.GetLikeKeyword(keyword), utils.GetLikeKeyword(keyword)).QueryRows(&items)
+	return
+}
+
+// GetEiaSteoDateList 根据指标code获取日期数据
+func GetEiaSteoDateList(indexCodeList []string) (items []*BaseFromEiaSteoDataItem, err error) {
+	num := len(indexCodeList)
+	if num <= 0 {
+		return
+	}
+
+	sql := ` SELECT data_time FROM base_from_eia_steo_data WHERE index_code IN(` + utils.GetOrmInReplace(num) + `)  GROUP BY data_time ORDER BY data_time DESC `
+	o := orm.NewOrmUsingDB("data")
+	_, err = o.Raw(sql, indexCodeList).QueryRows(&items)
+
+	return
+}
+
+// GetBaseFromEiaSteoIndexByCode 根据指标code获取指标信息
+func GetBaseFromEiaSteoIndexByCode(indexCode string) (item *BaseFromEiaSteoIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM base_from_eia_steo_index WHERE index_code=? `
+	err = o.Raw(sql, indexCode).QueryRow(&item)
+	return
+}

+ 690 - 0
models/data_manage/base_from_trade_index.go

@@ -0,0 +1,690 @@
+package data_manage
+
+import (
+	"fmt"
+	"github.com/beego/beego/v2/client/orm"
+	"github.com/rdlucklib/rdluck_tools/paging"
+	"time"
+)
+
+type BaseFromTradeShanghaiIndex struct {
+	BaseFromTradeShangHaiIndexId int `orm:"column(base_from_trade_shanghai_index_id);pk"`
+	Rank                         int
+	DealShortName                string
+	DealName                     string
+	DealCode                     string
+	DealValue                    string
+	DealChange                   string
+	BuyShortName                 string
+	BuyName                      string
+	BuyCode                      string
+	BuyValue                     string
+	BuyChange                    string
+	SoldShortName                string
+	SoldName                     string
+	SoldCode                     string
+	SoldValue                    string
+	SoldChange                   string
+	Frequency                    string
+	ClassifyName                 string
+	ClassifyType                 string
+	CreateTime                   time.Time
+	ModifyTime                   time.Time
+	DataTime                     string
+}
+type BaseFromTradeCffexIndex struct {
+	BaseFromTradeCffexIndexId int `orm:"column(base_from_trade_cffex_index_id);pk"`
+	Rank                      int
+	DealShortName             string
+	DealName                  string
+	DealCode                  string
+	DealValue                 string
+	DealChange                string
+	BuyShortName              string
+	BuyName                   string
+	BuyCode                   string
+	BuyValue                  string
+	BuyChange                 string
+	SoldShortName             string
+	SoldName                  string
+	SoldCode                  string
+	SoldValue                 string
+	SoldChange                string
+	Frequency                 string
+	ClassifyName              string
+	ClassifyType              string
+	CreateTime                time.Time
+	ModifyTime                time.Time
+	DataTime                  string
+}
+
+type BaseFromTradeIneIndex struct {
+	BaseFromTradeIneIndexId int `orm:"column(base_from_trade_ine_index_id);pk"`
+	Rank                    int
+	DealShortName           string
+	DealName                string
+	DealCode                string
+	DealValue               string
+	DealChange              string
+	BuyShortName            string
+	BuyName                 string
+	BuyCode                 string
+	BuyValue                string
+	BuyChange               string
+	SoldShortName           string
+	SoldName                string
+	SoldCode                string
+	SoldValue               string
+	SoldChange              string
+	Frequency               string
+	ClassifyName            string
+	ClassifyType            string
+	CreateTime              time.Time
+	ModifyTime              time.Time
+	DataTime                string
+}
+
+type BaseFromTradeEicIndex struct {
+	BaseFromEicIndexId     int `orm:"column(base_from_eic_index_id);pk"`
+	Country                string
+	Type                   string
+	EicCode                string
+	ShortName              string
+	Name                   string
+	Status                 string
+	GasDayStartedOn        string
+	GasInStorage           string
+	GasInStorageCode       string
+	Full                   string
+	FullCode               string
+	Trend                  string
+	TrendCode              string
+	Injection              string
+	InjectionCode          string
+	Withdrawal             string
+	WithdrawalCode         string
+	WorkingGasVolume       string
+	WorkingGasVolumeCode   string
+	InjectionCapacity      string
+	InjectionCapacityCode  string
+	WithdrawalCapacity     string
+	WithdrawalCapacityCode string
+	Info                   string
+	CreateTime             time.Time
+	ModifyTime             time.Time
+}
+
+func GetBaseFromTradeIndexByParam(exchange, date, classifyName, classifyType string) (list []*BaseFromTradeShanghaiIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	if classifyName == "" {
+		sql := "SELECT * FROM base_from_trade_" + exchange + "_index where data_time=?"
+		_, err = o.Raw(sql, date).QueryRows(&list)
+		return
+	} else if classifyType == "" {
+		sql := "SELECT * FROM base_from_trade_" + exchange + "_index where data_time=? and classify_name=? ORDER BY classify_type,rank"
+		_, err = o.Raw(sql, date, classifyName).QueryRows(&list)
+		return
+	} else {
+		sql := "SELECT * FROM base_from_trade_" + exchange + "_index where data_time=? and classify_name=? and classify_type=?"
+		_, err = o.Raw(sql, date, classifyName, classifyType).QueryRows(&list)
+		return
+	}
+}
+
+func GetExchangeClassify(exchange, dataTime string) (classifyName []string, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := "SELECT DISTINCT classify_name FROM base_from_trade_" + exchange + "_index where data_time=? ORDER BY CONVERT(classify_name using gbk) DESC"
+	_, err = o.Raw(sql, dataTime).QueryRows(&classifyName)
+	return
+}
+
+func GetLatestDate(exchange string) (dataTime string, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := "SELECT data_time FROM base_from_trade_" + exchange + "_index ORDER BY data_time desc limit 1"
+	err = o.Raw(sql).QueryRow(&dataTime)
+	return
+}
+
+func GetExchangeClassifyContract(exchange, Classify, dataTime string) (classifyName []*string, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := "SELECT DISTINCT classify_type FROM base_from_trade_" + exchange + "_index where classify_name=? and data_time=?"
+	_, err = o.Raw(sql, Classify, dataTime).QueryRows(&classifyName)
+	return
+}
+
+func GetContinentEicDate(date string) (data []*BaseFromTradeEicIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := "SELECT * FROM base_from_trade_eic_index where gas_day_started_on=? and type='continent' "
+	_, err = o.Raw(sql, date).QueryRows(&data)
+	return
+}
+
+func GetCountryEicDate(date string) (data []*BaseFromTradeEicIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := "SELECT * FROM base_from_trade_eic_index where gas_day_started_on=? and type='country' "
+	_, err = o.Raw(sql, date).QueryRows(&data)
+	return
+}
+
+func GetSSOEicDate(date, country string) (data []*BaseFromTradeEicIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := "SELECT * FROM base_from_trade_eic_index where gas_day_started_on=? and country=? and type='SSO' "
+	_, err = o.Raw(sql, date, country).QueryRows(&data)
+	return
+}
+
+func GetStorageEicDate(date, country string) (data []*BaseFromTradeEicIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := "SELECT * FROM base_from_trade_eic_index where gas_day_started_on=? and country=? " +
+		" and (type='Storage Facility' or type='Storage Group') "
+	_, err = o.Raw(sql, date, country).QueryRows(&data)
+	return
+}
+
+func GetEicDate() (date []*BaseFromTradeEicIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := "SELECT * FROM base_from_trade_eic_index ORDER BY gas_day_started_on desc limit 1"
+	_, err = o.Raw(sql).QueryRows(&date)
+	return
+}
+
+func GetEicHistoryDate(code string) (date []*BaseFromTradeEicIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := "SELECT * FROM base_from_trade_eic_index WHERE eic_code=? ORDER BY gas_day_started_on desc limit 30"
+	_, err = o.Raw(sql, code).QueryRows(&date)
+	return
+}
+
+func GetEicHistoryDateByDate(code, startDate, endDate string) (date []*BaseFromTradeEicIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := "SELECT * FROM base_from_trade_eic_index WHERE eic_code=? and gas_day_started_on between ? and ? ORDER BY gas_day_started_on desc"
+	_, err = o.Raw(sql, code, startDate, endDate).QueryRows(&date)
+	return
+}
+
+type BaseFromCoalmineJsmIndex struct {
+	BaseFromCoalmineJsmIndexId int    `orm:"column(base_from_coalmine_jsm_index_id);pk"`
+	IndexName                  string `description:"持买单量指标名称"`
+	IndexCode                  string `description:"持买单量指标编码"`
+	Exchange                   string `description:"样本统计类别"`
+	DealValue                  string `description:"成交量"`
+	DataTime                   string `description:"数据日期"`
+	Source                     string `description:"来源"`
+	Province                   string `description:"省份"`
+	Description                string `description:"描述"`
+	Unit                       string `description:"单位"`
+	Frequency                  string `description:"频率"`
+	CreateTime                 string `description:"插入时间"`
+	ModifyTime                 string `description:"修改时间"`
+}
+
+// GetBaseFromCoalmineIndex 查询数据
+func GetBaseFromCoalmineIndex(startDate, endDate string) (items []*BaseFromCoalmineJsmIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM base_from_coalmine_jsm_index WHERE data_time between ? and ? `
+	_, err = o.Raw(sql, startDate, endDate).QueryRows(&items)
+	return
+}
+
+type BaseFromCoalmineCompanyIndex struct {
+	BaseFromCoalmineCompanyIndexId int    `orm:"column(base_from_coalmine_company_index_id);pk"`
+	IndexName                      string `description:"持买单量指标名称"`
+	IndexCode                      string `description:"持买单量指标编码"`
+	DealValue                      string `description:"成交量"`
+	DataTime                       string `description:"数据日期"`
+	Source                         string `description:"来源"`
+	Province                       string `description:"省份"`
+	City                           string `description:"城市"`
+	GroupName                      string `description:"集团名称"`
+	Unit                           string `description:"单位"`
+	Frequency                      string `description:"频率"`
+	CreateTime                     string `description:"插入时间"`
+	ModifyTime                     string `description:"修改时间"`
+}
+
+// GetBaseFromCoalmineCompanyIndex 查询公司指标
+func GetBaseFromCoalmineCompanyIndex(startDate, endDate string) (items []*BaseFromCoalmineCompanyIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM base_from_coalmine_company_index WHERE data_time between ? and ? `
+	_, err = o.Raw(sql, startDate, endDate).QueryRows(&items)
+	return
+}
+
+// BaseFromCoalmineFirmIndex 煤矿产量周度公司数据表
+type BaseFromCoalmineFirmIndex struct {
+	BaseFromCoalmineFirmIndexID int    `orm:"column(base_from_coalmine_firm_index_id);pk"`
+	IndexName                   string // 省份/企业名称
+	IndexCode                   string // 持买单量指标编码
+	DataTime                    string // 指标时间
+	DealValue                   string // 数据量
+	GroupName                   string // 集团名
+	Source                      string // 来源
+	Unit                        string // 来源
+	Frequency                   string `description:"频率"`
+	CreateTime                  string `description:"插入时间"`
+	ModifyTime                  string `description:"修改时间"`
+}
+
+//查询指标
+func GetBaseFromCoalmineFirmIndex(dataTime string) (items []*BaseFromCoalmineFirmIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM base_from_coalmine_firm_index WHERE data_time LIKE  `
+	sql = sql + "'" + dataTime + "%" + "'"
+	_, err = o.Raw(sql).QueryRows(&items)
+	fmt.Println(sql)
+	return
+}
+
+// BaseFromCoalmineCoastalIndex 沿海八省动力煤用户供耗存数据指标表
+type BaseFromCoalmineCoastalIndex struct {
+	BaseFromCoalmineCoastalIndexID int    `orm:"column(base_from_coalmine_coastal_index_id);pk"`
+	IndexName                      string // 省份/企业名称
+	IndexCode                      string // 持买单量指标编码
+	DataTime                       string // 指标时间
+	DealValue                      string // 数据量
+	GroupName                      string // 地区
+	Source                         string // 来源
+	Unit                           string //单位
+	Frequency                      string `description:"频率"`
+	CreateTime                     string `description:"插入时间"`
+	ModifyTime                     string `description:"修改时间"`
+}
+
+//查询指标
+func GetBaseFromCoalmineCoastalIndex(startDate, endDate string) (items []*BaseFromCoalmineCoastalIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM base_from_coalmine_coastal_index WHERE data_time between ? and ? `
+	_, err = o.Raw(sql, startDate, endDate).QueryRows(&items)
+	return
+}
+
+// BaseFromCoalmineInlandIndex 内陆动力煤用户供耗存数据指标表
+type BaseFromCoalmineInlandIndex struct {
+	BaseFromCoalmineInlandIndexID int    `orm:"column(base_from_coalmine_inland_index_id);pk"`
+	IndexName                     string // 省份/企业名称
+	IndexCode                     string // 持买单量指标编码
+	DataTime                      string // 指标时间
+	DealValue                     string // 数据量
+	GroupName                     string // 地区
+	Source                        string // 来源
+	Unit                          string // 来源
+	Frequency                     string `description:"频率"`
+	CreateTime                    string `description:"插入时间"`
+	ModifyTime                    string `description:"修改时间"`
+}
+
+//查询指标
+func GetBaseFromCoalmineInlandIndex(startDate, endDate string) (items []*BaseFromCoalmineInlandIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM base_from_coalmine_inland_index WHERE data_time between ? and ? `
+	_, err = o.Raw(sql, startDate, endDate).QueryRows(&items)
+	return
+}
+
+type BaseFromCoalmineClassify struct {
+	ClassifyId   int
+	ClassifyName string
+	Child        []CoalChild
+}
+
+type CoalChild struct {
+	ClassifyId   int
+	ClassifyName string
+}
+
+type CoalmineDataResp struct {
+	IndexName  string
+	IndexCode  string // 持买单量指标编码
+	Unit       string // 来源
+	Frequency  string
+	ModifyTime string
+	DataList   []DataList
+}
+
+type CoalmineDataPageResp struct {
+	IndexName  string
+	IndexCode  string // 持买单量指标编码
+	Unit       string // 来源
+	Frequency  string
+	ModifyTime string
+	Paging     *paging.PagingItem `description:"分页数据"`
+	DataList   []DataList
+}
+
+type CoalmineSingalDataResp struct {
+	IndexName  string
+	IndexCode  string // 持买单量指标编码
+	Unit       string // 来源
+	GroupId    int    // 二级id
+	GroupName  string // 二级名称
+	Frequency  string
+	ModifyTime string
+	ClassifyId int
+	DataList   []DataList
+}
+
+type DataList struct {
+	Value    string
+	DataTime string
+}
+
+type FrequencyResp struct {
+	Frequency int
+}
+
+// GetFrequencyFromCoal 获取指标信息
+func GetFrequencyFromCoal(suffix string) (list *string, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT DISTINCT frequency FROM base_from_coalmine_%s `
+	sql = fmt.Sprintf(sql, suffix)
+	err = o.Raw(sql).QueryRow(&list)
+	return
+}
+
+//查询数据
+func GetBaseFromCoalmineIndexByFrequency(frequency, groupName string) (items []*BaseFromCoalmineJsmIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM base_from_coalmine_jsm_index WHERE frequency=? AND province=?`
+	_, err = o.Raw(sql, frequency, groupName).QueryRows(&items)
+	return
+}
+
+//查询数据
+func GetGroupNameFromCoalmineIndex(suffix string) (items []*string, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT DISTINCT group_name FROM base_from_coalmine_%s `
+	sql = fmt.Sprintf(sql, suffix)
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+//查询数据
+func GetProvinceFromCoalmineIndex(suffix string) (items []*string, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT DISTINCT province FROM base_from_coalmine_%s `
+	sql = fmt.Sprintf(sql, suffix)
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+//查询数据
+func GetClassifyCoalmineIndexByGroupName(groupName string) (items []*string, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT DISTINCT index_code FROM base_from_coalmine_jsm_index WHERE province=? `
+	_, err = o.Raw(sql, groupName).QueryRows(&items)
+	return
+}
+
+//查询数据
+func GetPageFromCoalmineIndexByFrequency(frequency, classify string, startSize, pageSize int) (items []*BaseFromCoalmineJsmIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM base_from_coalmine_jsm_index WHERE frequency=? AND index_code=? ORDER BY data_time DESC LIMIT ?,?  `
+	_, err = o.Raw(sql, frequency, classify, startSize, pageSize).QueryRows(&items)
+	return
+}
+
+//查询数据
+func GetCountFromJsm(indexCode string) (item int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT COUNT(1) FROM base_from_coalmine_jsm_index WHERE index_code=? `
+	err = o.Raw(sql, indexCode).QueryRow(&item)
+	return
+}
+
+func GetClassifyCompanyByGroupName(groupName string) (items []*string, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT DISTINCT index_code FROM base_from_coalmine_company_index WHERE group_name=? `
+	_, err = o.Raw(sql, groupName).QueryRows(&items)
+	return
+}
+
+func GetClassifyJsmByGroupName(groupName string) (items []*string, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT DISTINCT index_code FROM base_from_coalmine_jsm_index WHERE province=? `
+	_, err = o.Raw(sql, groupName).QueryRows(&items)
+	return
+}
+
+//查询公司指标
+func GetPageFromCoalmineCompanyIndexByFrequency(frequency, classify string, startSize, pageSize int) (items []*BaseFromCoalmineCompanyIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM base_from_coalmine_company_index WHERE frequency=? AND index_code=? ORDER BY data_time DESC LIMIT ?,? `
+	_, err = o.Raw(sql, frequency, classify, startSize, pageSize).QueryRows(&items)
+	return
+}
+
+func GetCountFromCompany(indexCode string) (item int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT COUNT(1) FROM base_from_coalmine_company_index WHERE index_code=? `
+	err = o.Raw(sql, indexCode).QueryRow(&item)
+	return
+}
+
+func GetCountFromFirm(indexCode string) (item int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT COUNT(1) FROM base_from_coalmine_firm_index WHERE index_code=? `
+	err = o.Raw(sql, indexCode).QueryRow(&item)
+	return
+}
+
+func GetClassifyFirmByGroupName(groupName string) (items []*string, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT DISTINCT index_code FROM base_from_coalmine_firm_index WHERE group_name=? `
+	_, err = o.Raw(sql, groupName).QueryRows(&items)
+	return
+}
+
+//查询指标
+func GetPageFromCoalmineFirmIndexByFrequency(frequency, classify string, startSize, pageSize int) (items []*BaseFromCoalmineFirmIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM base_from_coalmine_firm_index WHERE frequency=? AND index_code=? ORDER BY data_time DESC LIMIT ?,?  `
+	_, err = o.Raw(sql, frequency, classify, startSize, pageSize).QueryRows(&items)
+	return
+}
+
+func GetCountFromCoastal(indexCode string) (item int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT COUNT(1) FROM base_from_coalmine_coastal_index WHERE index_code=? `
+	err = o.Raw(sql, indexCode).QueryRow(&item)
+	return
+}
+
+func GetClassifyCoastalByGroupName(groupName string) (items []*string, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT DISTINCT index_code FROM base_from_coalmine_coastal_index WHERE group_name=? `
+	_, err = o.Raw(sql, groupName).QueryRows(&items)
+	return
+}
+
+//查询指标
+func GetPageFromCoalmineCoastalIndexByFrequency(frequency, classify string, startSize, pageSize int) (items []*BaseFromCoalmineCoastalIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM base_from_coalmine_coastal_index WHERE frequency=? AND index_code=? ORDER BY data_time DESC LIMIT ?,? `
+	_, err = o.Raw(sql, frequency, classify, startSize, pageSize).QueryRows(&items)
+	return
+}
+
+func GetCountFromInland(indexCode string) (item int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT COUNT(1) FROM base_from_coalmine_inland_index WHERE index_code=? `
+	err = o.Raw(sql, indexCode).QueryRow(&item)
+	return
+}
+
+func GetClassifyInlandByGroupName(groupName string) (items []*string, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT DISTINCT index_code FROM base_from_coalmine_inland_index WHERE group_name=? `
+	_, err = o.Raw(sql, groupName).QueryRows(&items)
+	return
+}
+
+//查询指标
+func GetPageFromCoalmineInlandIndexByFrequency(frequency, classify string, startSize, pageSize int) (items []*BaseFromCoalmineInlandIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM base_from_coalmine_inland_index WHERE frequency=? AND index_code=? ORDER BY data_time DESC LIMIT ?,? `
+	_, err = o.Raw(sql, frequency, classify, startSize, pageSize).QueryRows(&items)
+	return
+}
+
+//查询公司指标
+func GetBaseFromCoalmineCompanyIndexByFrequency(frequency, groupName string) (items []*BaseFromCoalmineCompanyIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM base_from_coalmine_company_index WHERE frequency=? AND group_name=? `
+	_, err = o.Raw(sql, frequency, groupName).QueryRows(&items)
+	return
+}
+
+//查询指标
+func GetBaseFromCoalmineFirmIndexByFrequency(frequency, groupName string) (items []*BaseFromCoalmineFirmIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM base_from_coalmine_firm_index WHERE frequency=? AND group_name=? `
+	_, err = o.Raw(sql, frequency, groupName).QueryRows(&items)
+	return
+}
+
+//查询指标
+func GetBaseFromCoalmineCoastalIndexByFrequency(frequency, groupName string) (items []*BaseFromCoalmineCoastalIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM base_from_coalmine_coastal_index WHERE frequency=? AND group_name=? `
+	_, err = o.Raw(sql, frequency, groupName).QueryRows(&items)
+	return
+}
+
+//查询指标
+func GetBaseFromCoalmineInlandIndexByFrequency(frequency, groupName string) (items []*BaseFromCoalmineInlandIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM base_from_coalmine_inland_index WHERE frequency=? AND group_name=? `
+	_, err = o.Raw(sql, frequency, groupName).QueryRows(&items)
+	return
+}
+
+//查询数据
+func GetBaseFromCoalmineIndexByCode(indexCode string) (items []*BaseFromCoalmineJsmIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM base_from_coalmine_jsm_index WHERE index_code=?`
+	_, err = o.Raw(sql, indexCode).QueryRows(&items)
+	return
+}
+
+//查询公司指标
+func GetBaseFromCoalmineCompanyIndexByCode(indexCode string) (items []*BaseFromCoalmineCompanyIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM base_from_coalmine_company_index WHERE index_code=? `
+	_, err = o.Raw(sql, indexCode).QueryRows(&items)
+	return
+}
+
+//查询指标
+func GetBaseFromCoalmineFirmIndexByCode(indexCode string) (items []*BaseFromCoalmineFirmIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM base_from_coalmine_firm_index WHERE index_code=? `
+	_, err = o.Raw(sql, indexCode).QueryRows(&items)
+	return
+}
+
+//查询指标
+func GetBaseFromCoalmineCoastalIndexByCode(indexCode string) (items []*BaseFromCoalmineCoastalIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM base_from_coalmine_coastal_index WHERE index_code=? `
+	_, err = o.Raw(sql, indexCode).QueryRows(&items)
+	return
+}
+
+//查询指标
+func GetBaseFromCoalmineInlandIndexByCode(indexCode string) (items []*BaseFromCoalmineInlandIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM base_from_coalmine_inland_index WHERE index_code=? `
+	_, err = o.Raw(sql, indexCode).QueryRows(&items)
+	return
+}
+
+
+type BaseFromTradeEicIndexV2 struct {
+	BaseFromEicIndexId     int `orm:"column(base_from_eic_index_id);pk"`
+	Type                   string
+	EicCode                string
+	Name                   string
+	Status                 string
+	GasDayStart            string
+	GasInStorage           float64
+	GasInStorageCode       string
+	Consumption            string
+	ConsumptionCode        string
+	ConsumptionFull        string
+	ConsumptionFullCode    string
+	Full                   float64
+	FullCode               string
+	Trend                  float64
+	TrendCode              string
+	Injection              float64
+	InjectionCode          string
+	Withdrawal             float64
+	WithdrawalCode         string
+	WorkingGasVolume       float64
+	WorkingGasVolumeCode   string
+	InjectionCapacity      float64
+	InjectionCapacityCode  string
+	WithdrawalCapacity     float64
+	WithdrawalCapacityCode string
+	Info                   string
+	Parent                 string
+	CreateTime             time.Time
+	ModifyTime             time.Time
+	Children               []BaseFromTradeEicIndexV2
+}
+
+func GetEicDateV2() (date []*BaseFromTradeEicIndexV2, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := "SELECT * FROM base_from_trade_eic_index_v2 ORDER BY gas_day_start desc limit 1"
+	_, err = o.Raw(sql).QueryRows(&date)
+	return
+}
+
+func GetEicDataV2(date string) (data []*BaseFromTradeEicIndexV2, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := "SELECT * FROM base_from_trade_eic_index_v2 where gas_day_start=? "
+	_, err = o.Raw(sql, date).QueryRows(&data)
+	return
+}
+
+func GetEicHistoryDateByDateV2(code, startDate, endDate string) (date []*BaseFromTradeEicIndexV2, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := "SELECT * FROM base_from_trade_eic_index_v2 WHERE eic_code=? and gas_day_start between ? and ? ORDER BY gas_day_start desc"
+	_, err = o.Raw(sql, code, startDate, endDate).QueryRows(&date)
+	return
+}
+
+func GetEicHistoryDateV2(code string) (date []*BaseFromTradeEicIndexV2, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := "SELECT * FROM base_from_trade_eic_index_v2 WHERE eic_code=? ORDER BY gas_day_start desc limit 30"
+	_, err = o.Raw(sql, code).QueryRows(&date)
+	return
+}
+
+func GetContinentAndCountryEicDateV2(date string) (data []*BaseFromTradeEicIndexV2, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := "SELECT * FROM base_from_trade_eic_index_v2 where gas_day_start=? and (type='continent' OR type='country') "
+	_, err = o.Raw(sql, date).QueryRows(&data)
+	return
+}
+
+func GetSSOAndFacEicDateV2(date, name string) (data []*BaseFromTradeEicIndexV2, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := "SELECT * FROM base_from_trade_eic_index_v2 where gas_day_start=? and (type='sso' OR type='fac') "
+	_, err = o.Raw(sql, date).QueryRows(&data)
+	return
+}
+
+func GetBaseFromTradeIndexByDate(exchange, startDate, endDate string) (list []*BaseFromTradeShanghaiIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := "SELECT * FROM base_from_trade_" + exchange + "_index where rank < 50 and data_time between ? and ? order by data_time asc"
+	_, err = o.Raw(sql, startDate, endDate).QueryRows(&list)
+	return
+}
+
+func GetFirstBaseFromTradeIndexByDate(exchange string) (item *BaseFromTradeShanghaiIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := "SELECT * FROM base_from_trade_" + exchange + "_index where rank < 50 order by data_time asc"
+	err = o.Raw(sql).QueryRow(&item)
+	return
+}

+ 42 - 0
models/data_manage/com_trade_country.go

@@ -0,0 +1,42 @@
+package data_manage
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+// ComTradeCountry 联合国商品贸易数据库的国家编码表
+type ComTradeCountry struct {
+	Id         int       `orm:"column(id);pk"`
+	ThirdId    int       `description:"第三方的国家id"`
+	Name       string    `description:"国家名称(英文)"`
+	NameCn     string    `description:"国家名称(中文)"`
+	ModifyTime time.Time `description:"修改时间"`
+	CreateTime time.Time `description:"创建时间"`
+}
+
+// AddComTradeCountry 添加联合国商品贸易数据库的国家编码
+func AddComTradeCountry(item *ComTradeCountry) (lastId int64, err error) {
+	o := orm.NewOrmUsingDB("data")
+	lastId, err = o.Insert(item)
+	if err != nil {
+		return
+	}
+	item.Id = int(lastId)
+	return
+}
+
+// ComTradeCountryItem 联合国商品贸易数据库的国家编码表
+type ComTradeCountryItem struct {
+	ThirdId int    `description:"第三方的国家id"`
+	Name    string `description:"国家名称(英文)"`
+	NameCn  string `description:"国家名称(中文)"`
+}
+
+// GetComTradeCountryItemAll 获取所有的国家
+func GetComTradeCountryItemAll() (list []*ComTradeCountryItem, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM com_trade_country`
+	_, err = o.Raw(sql).QueryRows(&list)
+	return
+}

+ 84 - 0
models/data_manage/com_trade_data.go

@@ -0,0 +1,84 @@
+package data_manage
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"github.com/rdlucklib/rdluck_tools/paging"
+	"time"
+)
+
+// ComTradeData 联合国商品贸易数据表
+type ComTradeData struct {
+	ComTradeDataId     int       `orm:"column(com_trade_data_id);pk"`
+	ComTradeId         int       `description:"指标id"`
+	IndexCode          string    `description:"联合国商品贸易编码"`
+	Flow               string    `description:"贸易流向:X(Export:出口);M(Import:进口)"`
+	ReporterCode       int       `description:"出口国id"`
+	ReporterName       string    `description:"出口国名称"`
+	PartnerCode        int       `description:"进口国id"`
+	PartnerName        string    `description:"进口国名称"`
+	Partner2Code       int       `description:"第二进口国id"`
+	Partner2Name       string    `description:"第二进口国名称"`
+	DateType           int       `description:"日期类型,1:年度,2:月度"`
+	DataTime           string    `description:"数据日期"`
+	IndexTradeCode     string    `description:"离岸价编码"`
+	TradeValue         float64   `description:"离岸价(美元)"`
+	IndexNetWeightCode string    `description:"净重编码"`
+	NetWeightValue     float64   `description:"净重/公斤"`
+	ModifyTime         time.Time `description:"最新更新时间"`
+	CreateTime         time.Time `description:"创建时间"`
+}
+
+// ComTradeDataListItem 联合国商品贸易数据列表数据
+type ComTradeDataListItem struct {
+	ComTradeDataId     int       `orm:"column(com_trade_data_id);pk"`
+	ComTradeId         int       `description:"指标id"`
+	IndexCode          string    `description:"联合国商品贸易编码"`
+	IndexNameCn        string    `description:"联合国商品贸易名称(中文)"`
+	Flow               string    `description:"贸易流向:X(Export:出口);M(Import:进口)"`
+	ReporterCode       int       `description:"出口国id"`
+	ReporterName       string    `description:"出口国名称"`
+	PartnerCode        int       `description:"进口国id"`
+	PartnerName        string    `description:"进口国名称"`
+	Partner2Code       int       `description:"第二进口国id"`
+	Partner2Name       string    `description:"第二进口国名称"`
+	DateType           int       `description:"日期类型,1:年度,2:月度"`
+	DataTime           time.Time `description:"数据日期" json:"-"`
+	Date               string    `description:"数据年月份"`
+	IndexTradeCode     string    `description:"离岸价编码"`
+	TradeValue         float64   `description:"离岸价(美元)"`
+	IndexNetWeightCode string    `description:"净重编码"`
+	NetWeightValue     float64   `description:"净重/公斤"`
+	ModifyTime         time.Time `description:"最新更新时间"`
+	CreateTime         time.Time `description:"创建时间"`
+}
+
+// ComTradeDataListResp 联合国商品贸易列表数据返回
+type ComTradeDataListResp struct {
+	Paging         *paging.PagingItem
+	List           []*ComTradeDataListItem
+	LastUpdateTime string
+}
+
+// GetComTradeListCount 获取指标数据汇总数
+func GetComTradeListCount(condition string, pars []interface{}) (count int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT COUNT(1) AS count FROM com_trade_data WHERE 1=1 `
+	if condition != "" {
+		sql += condition
+	}
+	err = o.Raw(sql, pars).QueryRow(&count)
+	return
+}
+
+// GetComTradeList 获取指标数据列表
+func GetComTradeList(condition string, pars []interface{}, startSize, pageSize int, orderBy string) (list []*ComTradeDataListItem, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM com_trade_data WHERE 1=1 `
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` ORDER BY ` + orderBy
+	sql += `  limit ?,? `
+	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&list)
+	return
+}

+ 66 - 0
models/data_manage/com_trade_index.go

@@ -0,0 +1,66 @@
+package data_manage
+
+import (
+	"eta/eta_hub/utils"
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+// ComTradeIndex 联合国商品贸易数据指标表
+type ComTradeIndex struct {
+	ComTradeId  int       `orm:"column(com_trade_id);pk"`
+	IndexCode   string    `description:"联合国商品贸易编码"`
+	IndexName   string    `description:"联合国商品名称"`
+	IndexNameCn string    `description:"联合国商品名称(中文)"`
+	UpdateTime  time.Time `description:"数据最近更新时间"`
+	CreateTime  time.Time `description:"创建时间"`
+}
+
+// GetComTradeIndexList 获取指标数据列表
+func GetComTradeIndexList(condition string, pars []interface{}) (list []*ComTradeIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM com_trade_index WHERE 1=1 `
+	if condition != "" {
+		sql += condition
+	}
+	sql += `ORDER BY com_trade_id DESC `
+	_, err = o.Raw(sql, pars).QueryRows(&list)
+	return
+}
+
+// GetComTradeIndexByIdList 获取指标数据列表
+func GetComTradeIndexByIdList(idList []int) (list []*ComTradeIndex, err error) {
+	num := len(idList)
+	if num <= 0 {
+		return
+	}
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM com_trade_index WHERE com_trade_id in (` + utils.GetOrmInReplace(num) + `) `
+	_, err = o.Raw(sql, idList).QueryRows(&list)
+	return
+}
+
+// GetAllComTradeIndexList 获取指标数据列表
+func GetAllComTradeIndexList() (list []*ComTradeIndex, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM com_trade_index  ORDER BY com_trade_id DESC `
+	_, err = o.Raw(sql).QueryRows(&list)
+	return
+}
+
+// ComTradeCodeMapping 联合国商品贸易数据指标编码与分类编码的关系表
+type ComTradeCodeMapping struct {
+	Code       int       `orm:"column(code);pk"`
+	IndexCode  string    `description:"联合国商品贸易编码"`
+	Type       int       `description:"1:价格;2:重量"`
+	Name       string    `description:"指标名称"`
+	CreateTime time.Time `description:"创建时间"`
+}
+
+// GetComTradeIndex 根据指标code获取指标信息
+func GetComTradeIndex(indexCode string) (item *ComTradeCodeMapping, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM com_trade_code_mapping WHERE code=? `
+	err = o.Raw(sql, indexCode).QueryRow(&item)
+	return
+}

+ 153 - 0
routers/commentsRouter.go

@@ -88,6 +88,51 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_hub/controllers:EdbInfoController"] = append(beego.GlobalControllerRouter["eta/eta_hub/controllers:EdbInfoController"],
+        beego.ControllerComments{
+            Method: "ComTradeCountryList",
+            Router: `/com_trade/country/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_hub/controllers:EdbInfoController"] = append(beego.GlobalControllerRouter["eta/eta_hub/controllers:EdbInfoController"],
+        beego.ControllerComments{
+            Method: "ComTradeDataList",
+            Router: `/com_trade/data/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_hub/controllers:EdbInfoController"] = append(beego.GlobalControllerRouter["eta/eta_hub/controllers:EdbInfoController"],
+        beego.ControllerComments{
+            Method: "ComTradeList",
+            Router: `/com_trade/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_hub/controllers:EdbInfoController"] = append(beego.GlobalControllerRouter["eta/eta_hub/controllers:EdbInfoController"],
+        beego.ControllerComments{
+            Method: "EiaSteoClassify",
+            Router: `/eia_steo/classify`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_hub/controllers:EdbInfoController"] = append(beego.GlobalControllerRouter["eta/eta_hub/controllers:EdbInfoController"],
+        beego.ControllerComments{
+            Method: "EiaSteoData",
+            Router: `/eia_steo/data`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_hub/controllers:ReportController"] = append(beego.GlobalControllerRouter["eta/eta_hub/controllers:ReportController"],
         beego.ControllerComments{
             Method: "Detail",
@@ -187,4 +232,112 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_hub/controllers:TradeCommonController"] = append(beego.GlobalControllerRouter["eta/eta_hub/controllers:TradeCommonController"],
+        beego.ControllerComments{
+            Method: "CffexDataList",
+            Router: `/data/cffex`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_hub/controllers:TradeCommonController"] = append(beego.GlobalControllerRouter["eta/eta_hub/controllers:TradeCommonController"],
+        beego.ControllerComments{
+            Method: "DalianDataList",
+            Router: `/data/dalian`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_hub/controllers:TradeCommonController"] = append(beego.GlobalControllerRouter["eta/eta_hub/controllers:TradeCommonController"],
+        beego.ControllerComments{
+            Method: "EicContinentListV2",
+            Router: `/data/eicContinentV2`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_hub/controllers:TradeCommonController"] = append(beego.GlobalControllerRouter["eta/eta_hub/controllers:TradeCommonController"],
+        beego.ControllerComments{
+            Method: "EicDataV2",
+            Router: `/data/eicDataV2`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_hub/controllers:TradeCommonController"] = append(beego.GlobalControllerRouter["eta/eta_hub/controllers:TradeCommonController"],
+        beego.ControllerComments{
+            Method: "EicHistoryDataV2",
+            Router: `/data/eicHistoryDataV2`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_hub/controllers:TradeCommonController"] = append(beego.GlobalControllerRouter["eta/eta_hub/controllers:TradeCommonController"],
+        beego.ControllerComments{
+            Method: "EicLatestDateV2",
+            Router: `/data/eicLatestDateV2`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_hub/controllers:TradeCommonController"] = append(beego.GlobalControllerRouter["eta/eta_hub/controllers:TradeCommonController"],
+        beego.ControllerComments{
+            Method: "EicDataListV2",
+            Router: `/data/eicSSODataV2`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_hub/controllers:TradeCommonController"] = append(beego.GlobalControllerRouter["eta/eta_hub/controllers:TradeCommonController"],
+        beego.ControllerComments{
+            Method: "ExchangeClassify",
+            Router: `/data/exchange/classify`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_hub/controllers:TradeCommonController"] = append(beego.GlobalControllerRouter["eta/eta_hub/controllers:TradeCommonController"],
+        beego.ControllerComments{
+            Method: "ExchangeClassifyContract",
+            Router: `/data/exchange/classifyContract`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_hub/controllers:TradeCommonController"] = append(beego.GlobalControllerRouter["eta/eta_hub/controllers:TradeCommonController"],
+        beego.ControllerComments{
+            Method: "IneDataList",
+            Router: `/data/ine`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_hub/controllers:TradeCommonController"] = append(beego.GlobalControllerRouter["eta/eta_hub/controllers:TradeCommonController"],
+        beego.ControllerComments{
+            Method: "ShfeDataList",
+            Router: `/data/shfe`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_hub/controllers:TradeCommonController"] = append(beego.GlobalControllerRouter["eta/eta_hub/controllers:TradeCommonController"],
+        beego.ControllerComments{
+            Method: "ZhengzhouDataList",
+            Router: `/data/zhengzhou`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
 }