Commit 0d21d0b3 authored by szh's avatar szh

add binding

parent e2307946
...@@ -64,12 +64,13 @@ func RecordMineTime(c *gin.Context) { ...@@ -64,12 +64,13 @@ func RecordMineTime(c *gin.Context) {
appG := app.Gin{C: c} appG := app.Gin{C: c}
var req pai_service.ReqMineTime var req pai_service.ReqMineTime
logging.Info("req:",req)
err := c.ShouldBindJSON(&req) err := c.ShouldBindJSON(&req)
if err != nil { if err != nil {
appG.Response(http.StatusOK, e.ERROR, nil) appG.Response(http.StatusOK, e.ERROR, nil)
} }
logging.Info("req:",req)
var stat stat_service.RaspMinerStat var stat stat_service.RaspMinerStat
err = stat.SetMineTime(req.Addr,req.Flag) err = stat.SetMineTime(req.Addr,req.Flag)
if err != nil { if err != nil {
......
...@@ -5,11 +5,23 @@ import ( ...@@ -5,11 +5,23 @@ import (
_ "chain33-pai/docs" _ "chain33-pai/docs"
"chain33-pai/routers/api/v1" "chain33-pai/routers/api/v1"
"net/http" "net/http"
"reflect"
"strconv"
"gopkg.in/go-playground/validator.v8"
"github.com/gin-gonic/gin/binding"
"chain33-pai/pkg/logging"
) )
// InitRouter initialize routing information // InitRouter initialize routing information
func InitRouter() *gin.Engine { func InitRouter() *gin.Engine {
r := gin.Default() r := gin.Default()
//Custom Validators
if v, ok := binding.Validator.Engine().(*validator.Validate); ok {
err := v.RegisterValidation("LegalNumber", CheckNumber)
if err != nil {
logging.Error("gin custom validator init error, field:LegalNumber")
}
}
r.Use(gin.Logger()) r.Use(gin.Logger())
r.Use(gin.Recovery()) r.Use(gin.Recovery())
r.Use(Cors()) r.Use(Cors())
...@@ -77,3 +89,30 @@ func Cors() gin.HandlerFunc { ...@@ -77,3 +89,30 @@ func Cors() gin.HandlerFunc {
c.Next() c.Next()
} }
} }
func CheckNumber(
v *validator.Validate, topStruct reflect.Value, currentStructOrField reflect.Value,
field reflect.Value, fieldType reflect.Type, fieldKind reflect.Kind, param string,
) bool {
val := field.Interface()
switch val.(type) {
case int:
return true
case string:
if val.(string) == "" {
return true
}
_, err := strconv.ParseInt(val.(string), 10, 64)
if err != nil {
return false
}
return true
case int64:
return true
default:
//utility_log.Error("func ToInt error unknow type")
return false
}
}
...@@ -48,14 +48,14 @@ type MinedTxInfo struct { ...@@ -48,14 +48,14 @@ type MinedTxInfo struct {
type ReqTicketInfo struct { type ReqTicketInfo struct {
Addr string `json:"addr" validate:"requried"` Addr string `json:"addr" binding:"requried"`
Page int32 `json:"page"` Page int32 `json:"page"`
Pagesize int32 `json:"pagesize"` Pagesize int32 `json:"pagesize"`
Detail bool `json:"detail"` Detail bool `json:"detail"`
} }
type ReqMineTime struct { type ReqMineTime struct {
Addr string `json:"addr" validate:"requried"` Addr string `json:"addr" binding:"requried"`
Flag string `json:"flag"` Flag string `json:"flag"`
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment