|
|
package CheckHandler
|
|
|
|
|
|
import (
|
|
|
"fmt"
|
|
|
"github.com/gin-gonic/gin"
|
|
|
"strconv"
|
|
|
"strings"
|
|
|
)
|
|
|
|
|
|
/**
|
|
|
功能:是不是在规定的浮点数范围内
|
|
|
作者:黄海
|
|
|
时间:2020-03-17
|
|
|
*/
|
|
|
func floatRangeLimitIsLegal(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 nowFloat float64
|
|
|
var err error
|
|
|
//如果非空,检查是否为浮点
|
|
|
if len(paraStruct.paraRange) > 0 {
|
|
|
nowFloat, err = strconv.ParseFloat(paraStruct.paraRange, 32)
|
|
|
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 startFloat float64
|
|
|
var stopFloat float64
|
|
|
|
|
|
if startFloat, err = strconv.ParseFloat(startStr, 32); err != nil {
|
|
|
resultStruct.InterfaceName = interName
|
|
|
resultStruct.HttpType = httpType
|
|
|
resultStruct.Parameter = paraStruct.parameterName
|
|
|
resultStruct.Message = "起始值无法转化为浮点数!"
|
|
|
return false, resultStruct
|
|
|
}
|
|
|
if stopFloat, err = strconv.ParseFloat(endStr, 32); err != nil {
|
|
|
resultStruct.InterfaceName = interName
|
|
|
resultStruct.HttpType = httpType
|
|
|
resultStruct.Parameter = paraStruct.parameterName
|
|
|
resultStruct.Message = "终止值无法转化为浮点数!"
|
|
|
return false, resultStruct
|
|
|
}
|
|
|
if stopFloat < startFloat {
|
|
|
resultStruct.InterfaceName = interName
|
|
|
resultStruct.HttpType = httpType
|
|
|
resultStruct.Parameter = paraStruct.parameterName
|
|
|
resultStruct.Message = "停止值小于起始佶,请研发人员检查!"
|
|
|
return false, resultStruct
|
|
|
}
|
|
|
if nowFloat < startFloat || nowFloat > stopFloat {
|
|
|
resultStruct.InterfaceName = interName
|
|
|
resultStruct.HttpType = httpType
|
|
|
resultStruct.Parameter = paraStruct.parameterName
|
|
|
resultStruct.Message = fmt.Sprintf("不在规定的长度范围内!要求%f-%f,目前参数值:%f", startFloat, stopFloat, nowFloat)
|
|
|
return false, resultStruct
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return true, resultStruct
|
|
|
}
|