68 lines
2.0 KiB
Go
68 lines
2.0 KiB
Go
package api
|
|
|
|
import (
|
|
"errors"
|
|
"net/http"
|
|
"time"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"level_go/internal/model"
|
|
)
|
|
|
|
// GetSecondBoardProfitSummary 返回 2020 年至今二板早盘股票的 T+1 最大获利汇总。
|
|
func (h *LimitBoardHandler) GetSecondBoardProfitSummary(c *gin.Context) {
|
|
req, err := parseSecondBoardProfitRequest(c, false)
|
|
if err != nil {
|
|
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
|
return
|
|
}
|
|
|
|
resp, err := h.Service.GetSecondBoardProfitSummary(req)
|
|
if err != nil {
|
|
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
|
return
|
|
}
|
|
|
|
c.JSON(http.StatusOK, resp)
|
|
}
|
|
|
|
// GetSecondBoardProfitDetail 返回单只股票二板早盘后的 T+1 最大获利详情。
|
|
func (h *LimitBoardHandler) GetSecondBoardProfitDetail(c *gin.Context) {
|
|
req, err := parseSecondBoardProfitRequest(c, true)
|
|
if err != nil {
|
|
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
|
return
|
|
}
|
|
|
|
resp, err := h.Service.GetSecondBoardProfitDetail(req)
|
|
if err != nil {
|
|
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
|
return
|
|
}
|
|
|
|
c.JSON(http.StatusOK, resp)
|
|
}
|
|
|
|
// parseSecondBoardProfitRequest 解析二板早盘获利综合和详情接口参数。
|
|
func parseSecondBoardProfitRequest(c *gin.Context, requireCode bool) (model.SecondBoardProfitRequest, error) {
|
|
req := model.SecondBoardProfitRequest{
|
|
TradeStartDate: firstNonEmptyQuery(c, "tradeStartDate", "trade_start_date", "start_date"),
|
|
TradeEndDate: firstNonEmptyQuery(c, "tradeEndDate", "trade_end_date", "end_date"),
|
|
TsCode: firstNonEmptyQuery(c, "tsCode", "ts_code"),
|
|
Symbol: firstNonEmptyQuery(c, "symbol", "code"),
|
|
}
|
|
if req.TradeStartDate == "" {
|
|
req.TradeStartDate = defaultSecondProfitStartDate
|
|
}
|
|
if req.TradeEndDate == "" {
|
|
req.TradeEndDate = time.Now().Format("2006-01-02")
|
|
}
|
|
if err := validateSecondProfitDateRange(req.TradeStartDate, req.TradeEndDate); err != nil {
|
|
return req, err
|
|
}
|
|
if requireCode && req.TsCode == "" && req.Symbol == "" {
|
|
return req, errors.New("tsCode 或 symbol 参数不能为空")
|
|
}
|
|
return req, nil
|
|
}
|