作者 tangxvhui

更新:新增 接受订单数据时进行参数检验

@@ -3,8 +3,10 @@ package controllers @@ -3,8 +3,10 @@ package controllers
3 import ( 3 import (
4 "errors" 4 "errors"
5 "fmt" 5 "fmt"
  6 + "regexp"
6 "strconv" 7 "strconv"
7 "time" 8 "time"
  9 + "unicode/utf8"
8 10
9 "github.com/astaxie/beego/logs" 11 "github.com/astaxie/beego/logs"
10 orderCmd "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/orderinfo/command" 12 orderCmd "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/orderinfo/command"
@@ -192,6 +194,9 @@ func (postData postPurposeOrderDetail) Valid() error { @@ -192,6 +194,9 @@ func (postData postPurposeOrderDetail) Valid() error {
192 if len(postData.OrderDist) == 0 { 194 if len(postData.OrderDist) == 0 {
193 return lib.ThrowError(lib.ARG_ERROR, "订单区域必填") 195 return lib.ThrowError(lib.ARG_ERROR, "订单区域必填")
194 } 196 }
  197 + if len(postData.Product) > 0 {
  198 + return lib.ThrowError(lib.ARG_ERROR, "货品列表必填")
  199 + }
195 if len(postData.Product) > 50 { 200 if len(postData.Product) > 50 {
196 return lib.ThrowError(lib.ARG_ERROR, "货品列表最多50项") 201 return lib.ThrowError(lib.ARG_ERROR, "货品列表最多50项")
197 } 202 }
@@ -213,9 +218,29 @@ type postOrderGood struct { @@ -213,9 +218,29 @@ type postOrderGood struct {
213 } 218 }
214 219
215 func (postData postOrderGood) Valid() error { 220 func (postData postOrderGood) Valid() error {
216 - if len(postData.ProductName) == 0 { 221 + lenProductName := utf8.RuneCountInString(postData.ProductName)
  222 + if lenProductName == 0 {
217 return lib.ThrowError(lib.ARG_ERROR, "商品名称必填") 223 return lib.ThrowError(lib.ARG_ERROR, "商品名称必填")
218 } 224 }
  225 + if lenProductName >= 50 {
  226 + return lib.ThrowError(lib.ARG_ERROR, "商品名称最多50位")
  227 + }
  228 + if postData.OrderNum >= 1e16 {
  229 + return lib.ThrowError(lib.ARG_ERROR, "商品数量最多16位")
  230 + }
  231 + if postData.Univalence >= 1e16 {
  232 + return lib.ThrowError(lib.ARG_ERROR, "商品单价最多16位")
  233 + }
  234 + if postData.PartnerRatio > 100 {
  235 + return lib.ThrowError(lib.ARG_ERROR, "合伙人分红比例超额")
  236 + }
  237 + partnerRatio := fmt.Sprint(postData.PartnerRatio)
  238 + regexpStr := `^(100|[1-9]\d|\d)(.\d{1,2})$`
  239 + ok := regexp.MustCompile(regexpStr).MatchString(partnerRatio)
  240 + if !ok {
  241 + return lib.ThrowError(lib.ARG_ERROR, "合伙人分红比例精确到小数点2位")
  242 + }
  243 +
219 return nil 244 return nil
220 } 245 }
221 246
@@ -308,9 +333,14 @@ type postOrderPurposeDelivery struct { @@ -308,9 +333,14 @@ type postOrderPurposeDelivery struct {
308 } 333 }
309 334
310 func (postData postOrderPurposeDelivery) Valid() error { 335 func (postData postOrderPurposeDelivery) Valid() error {
311 - if len(postData.ShipmentsId) == 0 { 336 + lenShipmentsId := utf8.RuneCountInString(postData.ShipmentsId)
  337 + if lenShipmentsId == 0 {
312 return lib.ThrowError(lib.ARG_ERROR, "发货单号必填") 338 return lib.ThrowError(lib.ARG_ERROR, "发货单号必填")
313 } 339 }
  340 + if lenShipmentsId > 50 {
  341 + return lib.ThrowError(lib.ARG_ERROR, "发货单号最多50位")
  342 + }
  343 +
314 for i := range postData.ProductDetail { 344 for i := range postData.ProductDetail {
315 if err := postData.ProductDetail[i].Valid(); err != nil { 345 if err := postData.ProductDetail[i].Valid(); err != nil {
316 return err 346 return err