|
|
@@ -26,6 +26,77 @@ type HistoryData struct {
|
|
|
TimeStamp time.Time `json:"timeStamp"` // 开盘时间
|
|
|
}
|
|
|
|
|
|
+// QueryHistoryDatasReq 查询行情历史数据请求参数
|
|
|
+type QueryHistoryDatasReq struct {
|
|
|
+ CycleType int `form:"cycleType" binding:"required"`
|
|
|
+ GoodsCode string `form:"goodsCode" binding:"required"`
|
|
|
+ StartTime string `form:"startTime"`
|
|
|
+ EndTime string `form:"endTime"`
|
|
|
+ Count int `form:"count"`
|
|
|
+ IsAsc bool `form:"isAsc"`
|
|
|
+}
|
|
|
+
|
|
|
+// QueryHistoryDatas 查询行情历史数据
|
|
|
+// @Summary 查询行情历史数据
|
|
|
+// @Produce json
|
|
|
+// @Security ApiKeyAuth
|
|
|
+// @Param cycleType query int true "周期类型, 0-秒 1: 1分钟 2: 5分钟 3: 30分钟 4: 60分钟 120: 2小时 240: 4小时 11: 日线 10: Tik"
|
|
|
+// @Param goodsCode query string true "商品代码"
|
|
|
+// @Param startTime query string false "开始时间,格式:yyyy-MM-dd HH:mm:ss"
|
|
|
+// @Param endTime query string false "结束时间,格式:yyyy-MM-dd HH:mm:ss"
|
|
|
+// @Param count query int false "条数"
|
|
|
+// @Param IsAsc query bool false "是否按时间顺序排序(默认为时间倒序排序)"
|
|
|
+// @Success 200 {object} models.CycleData
|
|
|
+// @Failure 500 {object} app.Response
|
|
|
+// @Router /Quote/QueryHistoryDatas [get]
|
|
|
+// @Tags 行情服务
|
|
|
+func QueryHistoryDatas(c *gin.Context) {
|
|
|
+ appG := app.Gin{C: c}
|
|
|
+
|
|
|
+ // 获取请求参数
|
|
|
+ var req QueryHistoryDatasReq
|
|
|
+ if err := appG.C.ShouldBindQuery(&req); err != nil {
|
|
|
+ logger.GetLogger().Errorf("QueryHistoryDatas failed: %s", err.Error())
|
|
|
+ appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 转换时间
|
|
|
+ timeFormat := "2006-01-02 15:04:05" // go中的时间格式化必须是这个时间
|
|
|
+ var startTime *time.Time
|
|
|
+ if len(req.StartTime) > 0 {
|
|
|
+ st, err := time.ParseInLocation(timeFormat, req.StartTime, time.Local)
|
|
|
+ if err != nil {
|
|
|
+ logger.GetLogger().Errorf("QueryHistoryDatas failed: %s", err.Error())
|
|
|
+ appG.Response(http.StatusBadRequest, e.ERROR_QUERY_TIME_FORMAT_FAIL, nil)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ startTime = &st
|
|
|
+ }
|
|
|
+ var endTime *time.Time
|
|
|
+ if len(req.EndTime) > 0 {
|
|
|
+ et, err := time.ParseInLocation(timeFormat, req.EndTime, time.Local)
|
|
|
+ if err != nil {
|
|
|
+ logger.GetLogger().Errorf("QueryHistoryDatas failed: %s", err.Error())
|
|
|
+ appG.Response(http.StatusBadRequest, e.ERROR_QUERY_TIME_FORMAT_FAIL, nil)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ endTime = &et
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询数据
|
|
|
+ cycleData, err := models.GetHistoryCycleDatas(models.CycleType(req.CycleType), req.GoodsCode, startTime, endTime, req.Count, req.IsAsc)
|
|
|
+ if err != nil {
|
|
|
+ logger.GetLogger().Errorf("QueryTSData failed: %s", err.Error())
|
|
|
+ appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询成功
|
|
|
+ logger.GetLogger().Debugln("QueryHistoryDatas successed: %v", cycleData)
|
|
|
+ appG.Response(http.StatusOK, e.SUCCESS, cycleData)
|
|
|
+}
|
|
|
+
|
|
|
// QueryTSDataReq 分时图数据查询请求参数
|
|
|
type QueryTSDataReq struct {
|
|
|
GoodsCode string `form:"goodsCode" binding:"required"` // 商品代码
|
|
|
@@ -48,8 +119,8 @@ type QueryTSDataRsp struct {
|
|
|
// @Param GoodsCode query string true "商品代码"
|
|
|
// @Success 200 {object} QueryTSDataRsp
|
|
|
// @Failure 500 {object} app.Response
|
|
|
-// @Router /History/QueryTSData [get]
|
|
|
-// @Tags 通用服务
|
|
|
+// @Router /Quote/QueryTSData [get]
|
|
|
+// @Tags 行情服务
|
|
|
func QueryTSData(c *gin.Context) {
|
|
|
appG := app.Gin{C: c}
|
|
|
|