实现 sse 检查订单,减少请求次数
This commit is contained in:
@@ -3,6 +3,7 @@ package globals
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"strings"
|
||||
|
||||
"github.com/go-playground/locales/zh"
|
||||
@@ -19,22 +20,32 @@ type ValidatorClient struct {
|
||||
translator ut.Translator
|
||||
}
|
||||
|
||||
func (v *ValidatorClient) Validate(c *fiber.Ctx, data any) error {
|
||||
|
||||
func (v *ValidatorClient) ParseBody(c *fiber.Ctx, data any) error {
|
||||
if err := c.BodyParser(data); err != nil {
|
||||
return err
|
||||
}
|
||||
return validate(data)
|
||||
}
|
||||
|
||||
if errs := v.validator.Struct(data); errs != nil {
|
||||
func (v *ValidatorClient) ParseQuery(c *fiber.Ctx, data any) error {
|
||||
if err := c.QueryParser(data); err != nil {
|
||||
return err
|
||||
}
|
||||
return validate(data)
|
||||
}
|
||||
|
||||
func validate(data any) error {
|
||||
if errs := Validator.validator.Struct(data); errs != nil {
|
||||
var sb = strings.Builder{}
|
||||
var typeErrs validator.ValidationErrors
|
||||
errors.As(errs, &typeErrs)
|
||||
for i, err := range typeErrs {
|
||||
sb.WriteString(err.Translate(v.translator))
|
||||
sb.WriteString(err.Translate(Validator.translator))
|
||||
if i < len(typeErrs)-1 {
|
||||
sb.WriteString("\n")
|
||||
}
|
||||
}
|
||||
slog.Debug("请求参数验证失败", "msg", sb.String())
|
||||
return fiber.NewError(fiber.StatusBadRequest, sb.String())
|
||||
}
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user