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.

83 lines
2.8 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 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
}