107 lines
1.9 KiB
Go
107 lines
1.9 KiB
Go
|
package dto
|
||
|
|
||
|
import (
|
||
|
vd "github.com/bytedance/go-tagexpr/v2/validator"
|
||
|
"net/http"
|
||
|
|
||
|
"github.com/gin-gonic/gin"
|
||
|
"github.com/go-admin-team/go-admin-core/sdk/api"
|
||
|
)
|
||
|
|
||
|
type ObjectById struct {
|
||
|
Id int `uri:"id"`
|
||
|
Ids []int `json:"ids"`
|
||
|
}
|
||
|
|
||
|
func (s *ObjectById) Bind(ctx *gin.Context) error {
|
||
|
var err error
|
||
|
log := api.GetRequestLogger(ctx)
|
||
|
err = ctx.ShouldBindUri(s)
|
||
|
if err != nil {
|
||
|
log.Warnf("ShouldBindUri error: %s", err.Error())
|
||
|
return err
|
||
|
}
|
||
|
if ctx.Request.Method == http.MethodDelete {
|
||
|
err = ctx.ShouldBind(&s)
|
||
|
if err != nil {
|
||
|
log.Warnf("ShouldBind error: %s", err.Error())
|
||
|
return err
|
||
|
}
|
||
|
if len(s.Ids) > 0 {
|
||
|
return nil
|
||
|
}
|
||
|
if s.Ids == nil {
|
||
|
s.Ids = make([]int, 0)
|
||
|
}
|
||
|
if s.Id != 0 {
|
||
|
s.Ids = append(s.Ids, s.Id)
|
||
|
}
|
||
|
}
|
||
|
if err = vd.Validate(s); err != nil {
|
||
|
log.Errorf("Validate error: %s", err.Error())
|
||
|
return err
|
||
|
}
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
func (s *ObjectById) GetId() interface{} {
|
||
|
if len(s.Ids) > 0 {
|
||
|
s.Ids = append(s.Ids, s.Id)
|
||
|
return s.Ids
|
||
|
}
|
||
|
return s.Id
|
||
|
}
|
||
|
|
||
|
type ObjectGetReq struct {
|
||
|
Id int `uri:"id"`
|
||
|
}
|
||
|
|
||
|
func (s *ObjectGetReq) Bind(ctx *gin.Context) error {
|
||
|
var err error
|
||
|
log := api.GetRequestLogger(ctx)
|
||
|
err = ctx.ShouldBindUri(s)
|
||
|
if err != nil {
|
||
|
log.Warnf("ShouldBindUri error: %s", err.Error())
|
||
|
return err
|
||
|
}
|
||
|
if err = vd.Validate(s); err != nil {
|
||
|
log.Errorf("Validate error: %s", err.Error())
|
||
|
return err
|
||
|
}
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
func (s *ObjectGetReq) GetId() interface{} {
|
||
|
return s.Id
|
||
|
}
|
||
|
|
||
|
type ObjectDeleteReq struct {
|
||
|
Ids []int `json:"ids"`
|
||
|
}
|
||
|
|
||
|
func (s *ObjectDeleteReq) Bind(ctx *gin.Context) error {
|
||
|
var err error
|
||
|
log := api.GetRequestLogger(ctx)
|
||
|
err = ctx.ShouldBind(&s)
|
||
|
if err != nil {
|
||
|
log.Warnf("ShouldBind error: %s", err.Error())
|
||
|
return err
|
||
|
}
|
||
|
if len(s.Ids) > 0 {
|
||
|
return nil
|
||
|
}
|
||
|
if s.Ids == nil {
|
||
|
s.Ids = make([]int, 0)
|
||
|
}
|
||
|
|
||
|
if err = vd.Validate(s); err != nil {
|
||
|
log.Errorf("Validate error: %s", err.Error())
|
||
|
return err
|
||
|
}
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
func (s *ObjectDeleteReq) GetId() interface{} {
|
||
|
return s.Ids
|
||
|
}
|