zwxi 1 year ago
parent
commit
ebf4892034

+ 46 - 1
controller/index_data/zhongji_index.go

@@ -15,7 +15,7 @@ import (
 // ZhongjiIndexController 中基宁波
 type ZhongjiIndexController struct{}
 
-// GetIndex
+// GetIndexList
 // @Description 获取smm指标列表信息
 // @Success 200 {string} string "获取成功"
 // @Router /smm/list [post]
@@ -97,4 +97,49 @@ func (j *ZhongjiIndexController) GetIndexData(c *gin.Context) {
 	}
 	resp.OkData("获取成功", result, c)
 	return
+}
+
+// GetIndexLatest
+// @Description 获取smm指标最新信息
+// @Success 200 {string} string "获取成功"
+// @Router /smm/latest [post]
+func (j *ZhongjiIndexController) GetIndexDataLatest(c *gin.Context) {
+	var req indexDataReq.ZhongjiSmmIndexLatestDataReq
+	if e := c.Bind(&req); e != nil {
+		err, ok := e.(validator.ValidationErrors)
+		if !ok {
+			resp.FailData("参数解析失败", "Err:"+e.Error(), c)
+			return
+		}
+		resp.FailData("参数解析失败", err.Translate(global.Trans), c)
+		return
+	}
+	if req.EdbCode == "" {
+		resp.FailMsg("参数异常", "请输入指标Code", c)
+		return
+	}
+	if req.LastTime < 0 {
+		resp.FailMsg("参数异常", "请输入日期", c)
+		return
+	}
+
+	token, err := indexDataService.GetSmmAccessToken(false)
+	if err!= nil {
+		resp.FailData("获取token失败", err.Error(), c)
+		return
+	}
+
+	body, err := indexDataService.GetEdbLatestDataFromSmmHttp(req.EdbCode, token, req.LastTime)
+	if err!= nil {
+		resp.FailData("获取token失败", err.Error(), c)
+		return
+	}
+
+	result := new(response.SmmLatestDataResponse)
+	if err = json.Unmarshal(body, &result); err != nil {
+		err = fmt.Errorf("result unmarshal err: %s\nresult: %s", err.Error(), string(body))
+		return
+	}
+	resp.OkData("获取成功", result, c)
+	return
 }

BIN
eta_bridge


+ 7 - 1
models/request/index_data/zhongji_index.go

@@ -8,5 +8,11 @@ type ZhongjiSmmIndexListReq struct {
 
 // ZhongjiSmmIndexListReq 指标请求体
 type ZhongjiSmmIndexDataReq struct {
-	EdbCode string  `json:"edb_code" form:"edb_code" description:"Code"`
+	EdbCode string `json:"edb_code" form:"edb_code" description:"Code"`
+}
+
+// ZhongjiSmmIndexLatestDataReq 指标请求体
+type ZhongjiSmmIndexLatestDataReq struct {
+	EdbCode  string `json:"edb_code" form:"edb_code" description:"Code"`
+	LastTime int64 `json:"last_time" form:"last_time" description:"上次更新时间戳(秒)"`
 }

+ 20 - 0
models/response/zhongji_index.go

@@ -120,3 +120,23 @@ type SmmIndexListResponse struct {
 	Msg  string   `json:"msg"`
 	Data ListData `json:"data"`
 }
+
+type SmmLatestDataResponse struct {
+	Code int           `json:"code"`
+	Msg  string        `json:"msg"`
+	Data SmmLatestData `json:"data"`
+}
+
+type SmmLatestData struct {
+	DataLen  int     `json:"data_len"`
+	DataList []Datum `json:"data_list"`
+}
+
+type Datum struct {
+	QuotaID string `json:"quota_id"`
+	Date    string `json:"date"`
+	Value   string `json:"value"`
+	Mark    string `json:"mark"`
+	Create  string `json:"create"`
+	Update  string `json:"update"`
+}

+ 1 - 0
routers/index_data.go

@@ -22,4 +22,5 @@ func InitIndexData(r *gin.RouterGroup) {
 	zhongjiGroup := r.Group("index_data/zhongji/").Use(middleware.InternalToken())
 	zhongjiGroup.POST("/smm/list", zhongjiControl.GetIndexList)
 	zhongjiGroup.POST("/smm/data", zhongjiControl.GetIndexData)
+	zhongjiGroup.POST("/smm/latest", zhongjiControl.GetIndexDataLatest)
 }

+ 42 - 0
services/index_data/zhongji_smm.go

@@ -352,3 +352,45 @@ func GetEdbDataFromSmmHttp(edbCodes, token string) (body []byte, err error) {
 
 	return
 }
+
+// GetEdbLatestDataFromSmmHttp 通过url获取SMM的更新数据
+func GetEdbLatestDataFromSmmHttp(edbCodes, token string, lastTime int64) (body []byte, err error) {
+	smmUrl := `https://datapro-api.smm.cn/dapi/quota/data_latest`
+
+	// 准备form-data参数
+	data := url.Values{}
+	data.Set("token", token)
+	data.Set("request_source", "API")
+	data.Set("quota_ids", edbCodes)
+	data.Set("last_time", strconv.FormatInt(lastTime, 10))
+
+	// 发送POST请求
+	req, err := netHttp.NewRequest("POST", smmUrl, strings.NewReader(data.Encode()))
+	if err != nil {
+		fmt.Println("Error creating request:", err)
+		return
+	}
+
+	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
+
+	client := &netHttp.Client{}
+	resp, err := client.Do(req)
+	if err != nil {
+		fmt.Println("Error sending request:", err)
+		return
+	}
+	defer resp.Body.Close()
+
+	// 读取响应的内容
+	body, err = ioutil.ReadAll(resp.Body)
+	if err != nil {
+		fmt.Println("Error reading response:", err)
+		return
+	}
+
+	str := string(body)
+	fmt.Println("body:", str)
+
+
+	return
+}