limit the max and min value of amount

This commit is contained in:
MaysWind
2020-12-17 01:33:07 +08:00
parent 24278cadb6
commit bdce9a7772
6 changed files with 68 additions and 12 deletions
+8
View File
@@ -28,10 +28,18 @@ func GetParameterMustLessThanMessage(field string, param string) string {
return fmt.Sprintf("parameter \"%s\" must be less than %s", field, param) return fmt.Sprintf("parameter \"%s\" must be less than %s", field, param)
} }
func GetParameterMustLessThanCharsMessage(field string, param string) string {
return fmt.Sprintf("parameter \"%s\" must be less than %s characters", field, param)
}
func GetParameterMustMoreThanMessage(field string, param string) string { func GetParameterMustMoreThanMessage(field string, param string) string {
return fmt.Sprintf("parameter \"%s\" must be more than %s", field, param) return fmt.Sprintf("parameter \"%s\" must be more than %s", field, param)
} }
func GetParameterMustMoreThanCharsMessage(field string, param string) string {
return fmt.Sprintf("parameter \"%s\" must be more than %s characters", field, param)
}
func GetParameterLengthNotEqualMessage(field string, param string) string { func GetParameterLengthNotEqualMessage(field string, param string) string {
return fmt.Sprintf("parameter \"%s\" length is not equal to %s", field, param) return fmt.Sprintf("parameter \"%s\" length is not equal to %s", field, param)
} }
+4 -4
View File
@@ -34,8 +34,8 @@ type TransactionCreateRequest struct {
Time int64 `json:"time" binding:"required,min=1"` Time int64 `json:"time" binding:"required,min=1"`
SourceAccountId int64 `json:"sourceAccountId,string" binding:"required,min=1"` SourceAccountId int64 `json:"sourceAccountId,string" binding:"required,min=1"`
DestinationAccountId int64 `json:"destinationAccountId,string" binding:"required,min=1"` DestinationAccountId int64 `json:"destinationAccountId,string" binding:"required,min=1"`
SourceAmount int64 `json:"sourceAmount"` SourceAmount int64 `json:"sourceAmount" binding:"min=-99999999999,max=99999999999"`
DestinationAmount int64 `json:"destinationAmount"` DestinationAmount int64 `json:"destinationAmount" binding:"min=-99999999999,max=99999999999"`
TagIds []int64 `json:"tagIds,string"` TagIds []int64 `json:"tagIds,string"`
Comment string `json:"comment" binding:"max=255"` Comment string `json:"comment" binding:"max=255"`
} }
@@ -46,8 +46,8 @@ type TransactionModifyRequest struct {
Time int64 `json:"time" binding:"required,min=1"` Time int64 `json:"time" binding:"required,min=1"`
SourceAccountId int64 `json:"sourceAccountId,string" binding:"required,min=1"` SourceAccountId int64 `json:"sourceAccountId,string" binding:"required,min=1"`
DestinationAccountId int64 `json:"destinationAccountId,string" binding:"required,min=1"` DestinationAccountId int64 `json:"destinationAccountId,string" binding:"required,min=1"`
SourceAmount int64 `json:"sourceAmount"` SourceAmount int64 `json:"sourceAmount" binding:"min=-99999999999,max=99999999999"`
DestinationAmount int64 `json:"destinationAmount"` DestinationAmount int64 `json:"destinationAmount" binding:"min=-99999999999,max=99999999999"`
TagIds []int64 `json:"tagIds,string"` TagIds []int64 `json:"tagIds,string"`
Comment string `json:"comment" binding:"max=255"` Comment string `json:"comment" binding:"max=255"`
} }
+28 -6
View File
@@ -2,6 +2,7 @@ package utils
import ( import (
"net/http" "net/http"
"reflect"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/go-playground/validator/v10" "github.com/go-playground/validator/v10"
@@ -13,7 +14,7 @@ import (
func PrintSuccessResult(c *core.Context, result interface{}) { func PrintSuccessResult(c *core.Context, result interface{}) {
c.JSON(http.StatusOK, gin.H{ c.JSON(http.StatusOK, gin.H{
"success": true, "success": true,
"result": result, "result": result,
}) })
} }
@@ -34,10 +35,10 @@ func PrintErrorResult(c *core.Context, err *errs.Error) {
} }
c.AbortWithStatusJSON(err.HttpStatusCode, gin.H{ c.AbortWithStatusJSON(err.HttpStatusCode, gin.H{
"success": false, "success": false,
"errorCode": err.Code(), "errorCode": err.Code(),
"errorMessage": errorMessage, "errorMessage": errorMessage,
"path": c.Request.URL.Path, "path": c.Request.URL.Path,
}) })
} }
@@ -48,9 +49,17 @@ func getValidationErrorText(err validator.FieldError) string {
case "required": case "required":
return errs.GetParameterIsRequiredMessage(fieldName) return errs.GetParameterIsRequiredMessage(fieldName)
case "max": case "max":
return errs.GetParameterMustLessThanMessage(fieldName, err.Param()) if isIntegerParameter(err.Kind()) {
return errs.GetParameterMustLessThanMessage(fieldName, err.Param())
} else if isStringParameter(err.Kind()) {
return errs.GetParameterMustLessThanCharsMessage(fieldName, err.Param())
}
case "min": case "min":
return errs.GetParameterMustMoreThanMessage(fieldName, err.Param()) if isIntegerParameter(err.Kind()) {
return errs.GetParameterMustMoreThanMessage(fieldName, err.Param())
} else if isStringParameter(err.Kind()) {
return errs.GetParameterMustMoreThanCharsMessage(fieldName, err.Param())
}
case "len": case "len":
return errs.GetParameterLengthNotEqualMessage(fieldName, err.Param()) return errs.GetParameterLengthNotEqualMessage(fieldName, err.Param())
case "notBlank": case "notBlank":
@@ -67,3 +76,16 @@ func getValidationErrorText(err validator.FieldError) string {
return errs.GetParameterInvalidMessage(fieldName) return errs.GetParameterInvalidMessage(fieldName)
} }
func isIntegerParameter(kind reflect.Kind) bool {
switch kind {
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
return true
default:
return false
}
}
func isStringParameter(kind reflect.Kind) bool {
return kind == reflect.String
}
+24 -2
View File
@@ -25,8 +25,19 @@ const parameterizedErrors = [
}] }]
}, },
{ {
localeKey: 'parameter too long', localeKey: 'parameter too large',
regex: /^parameter "(\w+)" must be less than (\d+)$/, regex: /^parameter "(\w+)" must be less than (\d+)$/,
parameters: [{
field: 'parameter',
localized: true
}, {
field: 'number',
localized: false
}]
},
{
localeKey: 'parameter too long',
regex: /^parameter "(\w+)" must be less than (\d+) characters$/,
parameters: [{ parameters: [{
field: 'parameter', field: 'parameter',
localized: true localized: true
@@ -36,8 +47,19 @@ const parameterizedErrors = [
}] }]
}, },
{ {
localeKey: 'parameter too short', localeKey: 'parameter too small',
regex: /^parameter "(\w+)" must be more than (\d+)$/, regex: /^parameter "(\w+)" must be more than (\d+)$/,
parameters: [{
field: 'parameter',
localized: true
}, {
field: 'number',
localized: false
}]
},
{
localeKey: 'parameter too short',
regex: /^parameter "(\w+)" must be more than (\d+) characters$/,
parameters: [{ parameters: [{
field: 'parameter', field: 'parameter',
localized: true localized: true
+2
View File
@@ -364,7 +364,9 @@ export default {
'parameterizedError': { 'parameterizedError': {
'parameter invalid': '{parameter} is invalid', 'parameter invalid': '{parameter} is invalid',
'parameter required': '{parameter} is required', 'parameter required': '{parameter} is required',
'parameter too large': '{parameter} must be at most {number}',
'parameter too long': '{parameter} must be at most {length} characters', 'parameter too long': '{parameter} must be at most {length} characters',
'parameter too small': '{parameter} must be at least {number}',
'parameter too short': '{parameter} must be at least {length} characters', 'parameter too short': '{parameter} must be at least {length} characters',
'parameter length not equal': '{parameter} must be {length} characters', 'parameter length not equal': '{parameter} must be {length} characters',
'parameter cannot be blank': '{parameter} cannot be blank', 'parameter cannot be blank': '{parameter} cannot be blank',
+2
View File
@@ -364,7 +364,9 @@ export default {
'parameterizedError': { 'parameterizedError': {
'parameter invalid': '{parameter}无效', 'parameter invalid': '{parameter}无效',
'parameter required': '{parameter}为必填项', 'parameter required': '{parameter}为必填项',
'parameter too large': '{parameter}必须小于{number}',
'parameter too long': '{parameter}必须小于{length}个字符', 'parameter too long': '{parameter}必须小于{length}个字符',
'parameter too small': '{parameter}必须大于{number}',
'parameter too short': '{parameter}必须大于{length}个字符', 'parameter too short': '{parameter}必须大于{length}个字符',
'parameter length not equal': '{parameter}必须等于{length}个字符', 'parameter length not equal': '{parameter}必须等于{length}个字符',
'parameter cannot be blank': '{parameter}不能为空', 'parameter cannot be blank': '{parameter}不能为空',