58 lines
1.1 KiB
Go
58 lines
1.1 KiB
Go
package internal
|
|
|
|
import (
|
|
"encoding/json"
|
|
"log"
|
|
"net/http"
|
|
"time"
|
|
|
|
"git.apinb.com/bsm-sdk/core/utils"
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func TickRecv(c *gin.Context) {
|
|
log.Println("TickRecv called")
|
|
stocks := GetAllowStocks()
|
|
if len(stocks) == 0 {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"status": "OK",
|
|
"num": len(stocks),
|
|
})
|
|
return
|
|
}
|
|
|
|
data := map[string]any{}
|
|
// Gin 的 Bind 方法会自动根据 Content-Type 解析
|
|
if err := c.Bind(&data); err != nil {
|
|
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
|
return
|
|
}
|
|
|
|
for key, value := range data {
|
|
if utils.ArrayInString(key, stocks) {
|
|
RedisService.Set(key, value, 1*time.Hour)
|
|
}
|
|
}
|
|
|
|
// 处理数据...
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"status": "OK",
|
|
})
|
|
}
|
|
|
|
func GetAllowStocks() []string {
|
|
result, err := utils.HttpGet("http://139.224.247.176:13499/a/pass_codes")
|
|
if err != nil {
|
|
log.Println("Error: Http Get pass_codes", err.Error())
|
|
return nil
|
|
}
|
|
|
|
var stocks []string
|
|
err = json.Unmarshal(result, &stocks)
|
|
if err != nil {
|
|
log.Println("Error: Json Unmarshal pass_codes", err.Error())
|
|
return nil
|
|
}
|
|
return stocks
|
|
}
|