From a18b32792347e84a10d8e21aab4b0ee359b758c5 Mon Sep 17 00:00:00 2001 From: QM303176530 <303176530@qq.com> Date: Fri, 8 May 2020 23:17:20 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A8=E5=8D=95=E6=A0=A1=E9=AA=8C=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E5=B0=81=E8=A3=85=E4=BB=A5=E5=8F=8A=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/api/v1/sys_menu.go | 25 ++++++++++++++++++----- server/utils/verify.go | 43 ++++++++++++++++++++++++++++++++++++--- 2 files changed, 60 insertions(+), 8 deletions(-) diff --git a/server/api/v1/sys_menu.go b/server/api/v1/sys_menu.go index 470b728c..ec345ee1 100644 --- a/server/api/v1/sys_menu.go +++ b/server/api/v1/sys_menu.go @@ -40,11 +40,6 @@ func GetMenu(c *gin.Context) { func GetMenuList(c *gin.Context) { var pageInfo request.PageInfo _ = c.ShouldBindJSON(&pageInfo) - verifyMap := make(map[string][]string) - verifyMap["PageSize"] = []string{"lt=333"} - verifyMap["Page"] = []string{"isBlank"} - vErr := utils.Verify(pageInfo, verifyMap) - fmt.Println(vErr) err, menuList, total := service.GetInfoList() if err != nil { response.FailWithMessage(fmt.Sprintf("获取数据失败,%v", err), c) @@ -69,6 +64,26 @@ func GetMenuList(c *gin.Context) { func AddBaseMenu(c *gin.Context) { var menu model.SysBaseMenu _ = c.ShouldBindJSON(&menu) + MenuVerify := utils.Rules{ + "Path": {utils.NotEmpty()}, + "ParentId": {utils.NotEmpty()}, + "Name": {utils.NotEmpty()}, + "Component": {utils.NotEmpty()}, + "Sort": {utils.Ge("0")}, + } + MenuVerifyErr := utils.Verify(menu, MenuVerify) + if MenuVerifyErr != nil { + response.FailWithMessage(MenuVerifyErr.Error(), c) + return + } + MetaVerify := utils.Rules{ + "Title": {utils.NotEmpty()}, + } + MetaVerifyErr := utils.Verify(menu.Meta, MetaVerify) + if MetaVerifyErr != nil { + response.FailWithMessage(MetaVerifyErr.Error(), c) + return + } err := service.AddBaseMenu(menu) if err != nil { response.FailWithMessage(fmt.Sprintf("添加失败,%v", err), c) diff --git a/server/utils/verify.go b/server/utils/verify.go index a9e7c793..4072046e 100644 --- a/server/utils/verify.go +++ b/server/utils/verify.go @@ -7,8 +7,45 @@ import ( "strings" ) +type Rules map[string][]string + +// 非空 不能为其对应类型的0值 +func NotEmpty() string { + return "notEmpty" +} + +//小于入参(<) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较 +func Lt(mark string) string { + return "lt=" + mark +} + +//小于等于入参(<=) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较 +func Le(mark string) string { + return "le=" + mark +} + +//等于入参(==) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较 +func Eq(mark string) string { + return "eq=" + mark +} + +//不等于入参(!=) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较 +func Ne(mark string) string { + return "ne=" + mark +} + +//大于等于入参(>=) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较 +func Ge(mark string) string { + return "ge=" + mark +} + +//大于入参(>) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较 +func Gt(mark string) string { + return "gt=" + mark +} + // 校验方法 接收两个参数 入参实例,规则map -func Verify(st interface{}, roleMap map[string][]string) (err error) { +func Verify(st interface{}, roleMap Rules) (err error) { compareMap := map[string]bool{ "lt": true, "le": true, @@ -33,13 +70,13 @@ func Verify(st interface{}, roleMap map[string][]string) (err error) { if len(roleMap[tagVal.Name]) > 0 { for _, v := range roleMap[tagVal.Name] { switch { - case strings.Index(v, "isBlank") > -1: + case v == "notEmpty": if isBlank(val) { return errors.New(tagVal.Name + "值不能为空") } case compareMap[strings.Split(v, "=")[0]]: if !compareVerify(val, v) { - return errors.New(tagVal.Name + "不在范围内") + return errors.New(tagVal.Name + "长度或值不在合法范围," + v) } } } -- GitLab