商品可售时间设置校验

This commit is contained in:
苏尹岚
2019-11-18 09:37:52 +08:00
parent 839a344433
commit b31adda4d5
5 changed files with 44 additions and 17 deletions

View File

@@ -617,7 +617,6 @@ func UpdateStore(ctx *jxcontext.Context, storeID int, payload map[string]interfa
if err = dao.GetEntity(db, store); err != nil {
return 0, err
}
valid := dao.StrictMakeMapByStructObject(payload, store, userName)
if err = checkStoreDeliveryRange(utils.Interface2String(valid["deliveryRange"])); err != nil {
return 0, err
@@ -733,6 +732,22 @@ func UpdateStore(ctx *jxcontext.Context, storeID int, payload map[string]interfa
if valid["deliveryRange"] != nil {
valid["deliveryRange"] = strings.Trim(valid["deliveryRange"].(string), ";")
}
//时间校验
if store.OpenTime1 != 0 && store.CloseTime1 != 0 {
if err := ValidateStructPartial(store, "OpenTime1", "CloseTime1"); err != nil {
return 0, errors.New(fmt.Sprintf("门店营业时间1设置不合法时间范围1 [%v] 至 [%v]", store.OpenTime1, store.CloseTime1))
}
}
if store.OpenTime2 != 0 && store.CloseTime2 != 0 {
if err := ValidateStructPartial(store, "OpenTime2", "CloseTime2"); err != nil {
return 0, errors.New(fmt.Sprintf("门店营业时间2设置不合法时间范围2 [%v] 至 [%v]", store.OpenTime2, store.CloseTime2))
}
}
if beginAt, endAt := GetTimeMixByInt(store.OpenTime1, store.CloseTime1, store.OpenTime2, store.CloseTime2); beginAt != 0 && endAt != 0 {
return 0, errors.New(fmt.Sprintf("两段门店营业时间不可交叉时间范围1 [%v] 至 [%v], 时间范围2 [%v] 至 [%v]", store.OpenTime1, store.CloseTime1, store.OpenTime2, store.CloseTime2))
}
// districtCode := 0
// if valid["districtCode"] != nil {
// districtCode = int(utils.MustInterface2Int64(valid["districtCode"]))

View File

@@ -122,8 +122,8 @@ type StoreSkuBindInfo struct {
IsFocus int `json:"isFocus"` // -1不关注0忽略1关注
IsSale int `json:"isSale"` // -1不可售0忽略1可售
SubStoreID int `json:"subStoreID,omitempty"`
StatusSaleBegin int16 `json:"statusSaleBegin"` //商品可售时间范围
StatusSaleEnd int16 `json:"statusSaleEnd"`
StatusSaleBegin int16 `json:"statusSaleBegin" validate:"max=2359,min=1,ltfield=StatusSaleEnd"` //商品可售时间范围
StatusSaleEnd int16 `json:"statusSaleEnd" validate:"max=2359,min=1"`
Skus []*StoreSkuBindSkuInfo `json:"skus,omitempty"`
}
@@ -1079,15 +1079,10 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
updateFieldMap["JxPrice"] = 1
}
if skuBindInfo.StatusSaleBegin != 0 && skuBindInfo.StatusSaleEnd != 0 {
if skuBindInfo.StatusSaleBegin < 0 || skuBindInfo.StatusSaleBegin > 2359 ||
skuBindInfo.StatusSaleEnd < 0 || skuBindInfo.StatusSaleEnd > 2359 {
if err := ValidateStruct(skuBindInfo); err != nil {
dao.Rollback(db)
return nil, fmt.Errorf("更改商品:%s, 可售时间不合法!时间范围:[%v] 至 [%v]", allBinds[0].Name, skuBindInfo.StatusSaleBegin, skuBindInfo.StatusSaleEnd)
}
if skuBindInfo.StatusSaleBegin >= skuBindInfo.StatusSaleEnd {
dao.Rollback(db)
return nil, fmt.Errorf("更改商品:%s, 可售时间不允许交叉!时间范围:[%v] 至 [%v]", allBinds[0].Name, skuBindInfo.StatusSaleBegin, skuBindInfo.StatusSaleEnd)
}
updateFieldMap["StatusSaleBegin"] = int(skuBindInfo.StatusSaleBegin)
updateFieldMap["StatusSaleEnd"] = int(skuBindInfo.StatusSaleEnd)
skuBind.StatusSaleBegin = skuBindInfo.StatusSaleBegin

View File

@@ -3,6 +3,8 @@ package cms
import (
"fmt"
"gopkg.in/go-playground/validator.v9"
"git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/model"
)
@@ -10,6 +12,7 @@ import (
var (
unitNamesMap map[string]int
specUnitNamesMap map[string]int
validate = validator.New()
)
func init() {
@@ -33,3 +36,15 @@ func ValidateUnit(value interface{}) (err error) {
func ValidateSpecUnit(value interface{}) (err error) {
return validateStringInMap("SpecUnit", value, specUnitNamesMap)
}
func ValidateStruct(value interface{}) (err error) {
return validate.Struct(value)
}
func ValidateVar(value interface{}, tag string) (err error) {
return validate.Var(value, tag)
}
func ValidateStructPartial(value interface{}, fields ...string) (err error) {
return validate.StructPartial(value, fields...)
}