You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

82 lines
2.7 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package CheckHandler
import (
"fmt"
"github.com/gin-gonic/gin"
"strconv"
"strings"
)
/**
功能:是不是在规定的整数范围内
作者:黄海
时间2020-03-17
*/
func intRangeLimitIsLegal(c *gin.Context, interName string, n int) (bool, ResultStruct) {
//1、调用通用检查器
success, resultStruct, httpType, arr := commonIsLegal(c, interName, n)
if !success {
return success, resultStruct
}
//2、如果通过了常规检查那么进行业务专用检查
for i := 0; i < len(arr); i++ {
paraStruct := arr[i]
var nowInt int
var err error
if len(paraStruct.inputParameterValue) > 0 {
//如果非空,检查是否为整数
nowInt, err = strconv.Atoi(paraStruct.inputParameterValue)
if err != nil {
resultStruct.InterfaceName = interName
resultStruct.HttpType = httpType
resultStruct.Parameter = paraStruct.parameterName
resultStruct.Message = "输入的参数无法转为整数!"
return false, resultStruct
}
//检查是不是在符合的检查范围内
var rangeArray = strings.Split(paraStruct.paraRange, ",")
if len(rangeArray) != 2 {
resultStruct.InterfaceName = interName
resultStruct.HttpType = httpType
resultStruct.Parameter = paraStruct.parameterName
resultStruct.Message = "注释声明错误,不是两个以逗号分隔的数字,请研发人员检查!"
return false, resultStruct
}
var startStr = rangeArray[0]
var endStr = rangeArray[1]
var startInt int
var stopInt int
if startInt, err = strconv.Atoi(startStr); err != nil {
resultStruct.InterfaceName = interName
resultStruct.HttpType = httpType
resultStruct.Parameter = paraStruct.parameterName
resultStruct.Message = "起始值无法转化为整数!"
return false, resultStruct
}
if stopInt, err = strconv.Atoi(endStr); err != nil {
resultStruct.InterfaceName = interName
resultStruct.HttpType = httpType
resultStruct.Parameter = paraStruct.parameterName
resultStruct.Message = "终止值无法转化为整数!"
return false, resultStruct
}
if stopInt < startInt {
resultStruct.InterfaceName = interName
resultStruct.HttpType = httpType
resultStruct.Parameter = paraStruct.parameterName
resultStruct.Message = "停止值小于起始佶,请研发人员检查!"
return false, resultStruct
}
if nowInt < startInt || nowInt > stopInt {
resultStruct.InterfaceName = interName
resultStruct.HttpType = httpType
resultStruct.Parameter = paraStruct.parameterName
resultStruct.Message = fmt.Sprintf("不在规定的长度范围内!要求%d-%d,目前参数值:%d", startInt, stopInt, nowInt)
return false, resultStruct
}
}
}
return true, resultStruct
}