Browse Source

fix:新增un数据同步

Roc 1 year ago
parent
commit
051787b140
5 changed files with 192 additions and 0 deletions
  1. 44 0
      controllers/index_data.go
  2. 93 0
      models/com_trade_index.go
  3. 8 0
      models/index.go
  4. 9 0
      routers/commentsRouter.go
  5. 38 0
      services/index.go

+ 44 - 0
controllers/index_data.go

@@ -55,3 +55,47 @@ func (this *IndexController) IndexDataList() {
 	br.Msg = "获取成功"
 	br.Data = list
 }
+
+// IndexDataPageList
+// @Title 分页获取指标接口
+// @Description 分页获取指标接口
+// @Success 200 {object} models.IndexDataPageListReq
+// @router /data/list_page [post]
+func (this *IndexController) IndexDataPageList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	var req models.IndexDataPageListReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	if req.Source <= 0 {
+		br.Msg = "渠道编码错误!"
+		br.ErrMsg = "渠道编码错误,Source:" + strconv.Itoa(req.Source)
+		return
+	}
+
+	if req.StartDate == "" {
+		req.StartDate = time.Now().AddDate(0, 0, -1).Format(utils.FormatDate)
+	}
+
+	if req.EndDate == "" {
+		req.EndDate = time.Now().Format(utils.FormatDate)
+	}
+
+	list, err := services.GetIndexDataPageList(req.Source, req.CurrPage, req.PageSize, req.StartDate, req.EndDate)
+	if err != nil {
+		br.Msg = "获取数据失败!"
+		br.ErrMsg = "获取数据失败,Err:" + err.Error()
+		return
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = list
+}

+ 93 - 0
models/com_trade_index.go

@@ -0,0 +1,93 @@
+package models
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"github.com/rdlucklib/rdluck_tools/paging"
+	"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:"创建时间"`
+}
+
+// ComTradeCodeMapping 联合国商品贸易数据指标编码与分类编码的关系表
+type ComTradeCodeMapping struct {
+	Code       string    `orm:"column(code);pk"`
+	IndexCode  string    `description:"联合国商品贸易编码"`
+	Type       int       `description:"1:价格;2:重量"`
+	Name       string    `description:"指标名称"`
+	CreateTime time.Time `description:"创建时间"`
+}
+
+// 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:"创建时间"`
+}
+
+// ComTradeIndexAndDataResp 返回给外部使用的数据表
+type ComTradeIndexAndDataResp struct {
+	IndexList   []*ComTradeIndex
+	MappingList []*ComTradeCodeMapping
+}
+
+// GetComTradeIndex 获取指标列表
+func GetComTradeIndex(startDate, endDate string) (list []*ComTradeIndex, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM com_trade_index WHERE create_time>=? AND create_time<=? ORDER BY com_trade_id ASC `
+	_, err = o.Raw(sql, startDate, endDate).QueryRows(&list)
+
+	return
+}
+
+// GetComTradeCodeMappingList 获取联合国商品贸易数据指标编码与分类编码的关系列表
+func GetComTradeCodeMappingList(startDate, endDate string) (list []*ComTradeCodeMapping, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM com_trade_code_mapping WHERE create_time>=? AND create_time<=? ORDER BY create_time ASC `
+	_, err = o.Raw(sql, startDate, endDate).QueryRows(&list)
+
+	return
+}
+
+// GetComTradeDataList 获取联合国商品贸易数据列表
+func GetComTradeDataList(startDate, endDate string, startSize, pageSize int) (total int, list []*ComTradeData, err error) {
+	o := orm.NewOrm()
+	totalSql := `SELECT count(1) total FROM com_trade_data WHERE create_time>=? AND create_time<=? `
+	err = o.Raw(totalSql, startDate, endDate).QueryRow(&total)
+	if err != nil {
+		return
+	}
+
+	sql := `SELECT * FROM com_trade_data WHERE create_time>=? AND create_time<=? ORDER BY com_trade_data_id ASC LIMIT ?,?`
+	_, err = o.Raw(sql, startDate, endDate, startSize, pageSize).QueryRows(&list)
+
+	return
+}
+
+// ComTradeIndexDataResp 分页列表响应体
+type ComTradeIndexDataResp struct {
+	List   []*ComTradeData
+	Paging *paging.PagingItem `description:"分页数据"`
+}

+ 8 - 0
models/index.go

@@ -12,3 +12,11 @@ type IndexDataListReq struct {
 	StartDate string `description:"指标同步开始日期"`
 	EndDate   string `description:"指标同步结束日期"`
 }
+
+type IndexDataPageListReq struct {
+	CurrPage  int    `description:"开始页码"`
+	PageSize  int    `description:"每页数据量"`
+	Source    int    `description:"渠道编码"`
+	StartDate string `description:"指标同步开始日期"`
+	EndDate   string `description:"指标同步结束日期"`
+}

+ 9 - 0
routers/commentsRouter.go

@@ -16,6 +16,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_data_api/controllers:IndexController"] = append(beego.GlobalControllerRouter["hongze/hz_data_api/controllers:IndexController"],
+        beego.ControllerComments{
+            Method: "IndexDataPageList",
+            Router: `/data/list_page`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_data_api/controllers:IndexController"] = append(beego.GlobalControllerRouter["hongze/hz_data_api/controllers:IndexController"],
         beego.ControllerComments{
             Method: "IndexList",

+ 38 - 0
services/index.go

@@ -1,6 +1,7 @@
 package services
 
 import (
+	"github.com/rdlucklib/rdluck_tools/paging"
 	"hongze/hz_data_api/models"
 	"hongze/hz_data_api/utils"
 )
@@ -21,6 +22,23 @@ func GetIndexList(source int, startDate, endDate string) (list interface{}, err
 		list, err = models.GetChangesVisitorsCovid(startDate, endDate)
 	case utils.DATA_SOURCE_EIA_STEO:
 		list, err = models.GetEiaSteoIndex(startDate, endDate)
+	case utils.DATA_SOURCE_COM_TRADE:
+		indexList := make([]*models.ComTradeIndex, 0)
+		mappingList := make([]*models.ComTradeCodeMapping, 0)
+
+		indexList, err = models.GetComTradeIndex(startDate, endDate)
+		if err != nil {
+			return
+		}
+		mappingList, err = models.GetComTradeCodeMappingList(startDate, endDate)
+		if err != nil {
+			return
+		}
+
+		list = models.ComTradeIndexAndDataResp{
+			IndexList:   indexList,
+			MappingList: mappingList,
+		}
 	default:
 	}
 	return
@@ -38,3 +56,23 @@ func GetIndexDataList(source int, indexCode, startDate, endDate string) (list in
 	}
 	return
 }
+
+// GetIndexDataPageList 分页获取数据同步
+func GetIndexDataPageList(source, currPage, pageSize int, startDate, endDate string) (list interface{}, err error) {
+	switch source {
+	case utils.DATA_SOURCE_COM_TRADE:
+		var total int
+		dataList := make([]*models.ComTradeData, 0)
+		total, dataList, err = models.GetComTradeDataList(startDate, endDate, currPage*pageSize, pageSize)
+		if err != nil {
+			return
+		}
+		page := paging.GetPaging(currPage, pageSize, total)
+		list = models.ComTradeIndexDataResp{
+			List:   dataList,
+			Paging: page,
+		}
+	default:
+	}
+	return
+}