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 }