diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 1d894e076..520a657ef 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -618,6 +618,9 @@ func UpdateStore(ctx *jxcontext.Context, storeID int, payload map[string]interfa return 0, err } var outStore *model.Store + if payload["autoEnableAt"] != nil { + payload["autoEnableAt"] = utils.Time2Date(utils.Str2Time(utils.Interface2String(payload["autoEnableAt"]))) + } valid := dao.StrictMakeMapByStructObject2(payload, store, &outStore, userName) if err = checkStoreDeliveryRange(utils.Interface2String(valid["deliveryRange"])); err != nil { return 0, err @@ -722,7 +725,6 @@ func UpdateStore(ctx *jxcontext.Context, storeID int, payload map[string]interfa } else { if valid["autoEnableAt"] != nil { status = model.StoreStatusHaveRest - valid["autoEnableAt"] = utils.Time2Date(utils.Str2Time(utils.Interface2String(valid["autoEnableAt"]))) } else { status = model.StoreStatusClosed } @@ -735,27 +737,29 @@ func UpdateStore(ctx *jxcontext.Context, storeID int, payload map[string]interfa } //时间校验 - if outStore.OpenTime1 != 0 && outStore.CloseTime1 != 0 { - if err := ValidateStructPartial(outStore, "OpenTime1", "CloseTime1"); err != nil { + if outStore != nil { + if outStore.OpenTime1 != 0 && outStore.CloseTime1 != 0 { + if err := ValidateStructPartial(outStore, "OpenTime1", "CloseTime1"); err != nil { + return 0, errors.New(fmt.Sprintf("门店营业时间1设置不合法!时间范围1 :[%v] 至 [%v]", outStore.OpenTime1, outStore.CloseTime1)) + } + } + if (outStore.OpenTime1 == 0 && outStore.CloseTime1 != 0) || (outStore.OpenTime1 != 0 && outStore.CloseTime1 == 0) { return 0, errors.New(fmt.Sprintf("门店营业时间1设置不合法!时间范围1 :[%v] 至 [%v]", outStore.OpenTime1, outStore.CloseTime1)) } - } - if (outStore.OpenTime1 == 0 && outStore.CloseTime1 != 0) || (outStore.OpenTime1 != 0 && outStore.CloseTime1 == 0) { - return 0, errors.New(fmt.Sprintf("门店营业时间1设置不合法!时间范围1 :[%v] 至 [%v]", outStore.OpenTime1, outStore.CloseTime1)) - } - if outStore.OpenTime2 != 0 && outStore.CloseTime2 != 0 { - if err := ValidateStructPartial(outStore, "OpenTime2", "CloseTime2"); err != nil { - return 0, errors.New(fmt.Sprintf("门店营业时间2设置不合法!时间范围2 :[%v] 至 [%v]", outStore.OpenTime2, outStore.CloseTime2)) + if outStore.OpenTime2 != 0 && outStore.CloseTime2 != 0 { + if err := ValidateStructPartial(outStore, "OpenTime2", "CloseTime2"); err != nil { + return 0, errors.New(fmt.Sprintf("门店营业时间2设置不合法!时间范围2 :[%v] 至 [%v]", outStore.OpenTime2, outStore.CloseTime2)) + } + } + if (outStore.OpenTime2 == 0 && outStore.CloseTime2 != 0) || (outStore.OpenTime2 != 0 && outStore.CloseTime2 == 0) { + return 0, errors.New(fmt.Sprintf("门店营业时间2设置不合法!时间范围2 :[%v] 至 [%v]", outStore.OpenTime1, outStore.CloseTime1)) + } + if outStore.OpenTime2 > outStore.OpenTime1 { + return 0, errors.New(fmt.Sprintf("门店营业时间设置不合法!第二段营业时间应该在第一段营业时间之后!")) + } + if beginAt, endAt := GetTimeMixByInt(outStore.OpenTime1, outStore.CloseTime1, outStore.OpenTime2, outStore.CloseTime2); beginAt != 0 && endAt != 0 { + return 0, errors.New(fmt.Sprintf("两段门店营业时间不可交叉!时间范围1 :[%v] 至 [%v], 时间范围2 :[%v] 至 [%v]", outStore.OpenTime1, outStore.CloseTime1, outStore.OpenTime2, outStore.CloseTime2)) } - } - if (outStore.OpenTime2 == 0 && outStore.CloseTime2 != 0) || (outStore.OpenTime2 != 0 && outStore.CloseTime2 == 0) { - return 0, errors.New(fmt.Sprintf("门店营业时间2设置不合法!时间范围2 :[%v] 至 [%v]", outStore.OpenTime1, outStore.CloseTime1)) - } - if outStore.OpenTime2 > outStore.OpenTime1 { - return 0, errors.New(fmt.Sprintf("门店营业时间设置不合法!第二段营业时间应该在第一段营业时间之后!")) - } - if beginAt, endAt := GetTimeMixByInt(outStore.OpenTime1, outStore.CloseTime1, outStore.OpenTime2, outStore.CloseTime2); beginAt != 0 && endAt != 0 { - return 0, errors.New(fmt.Sprintf("两段门店营业时间不可交叉!时间范围1 :[%v] 至 [%v], 时间范围2 :[%v] 至 [%v]", outStore.OpenTime1, outStore.CloseTime1, outStore.OpenTime2, outStore.CloseTime2)) } // districtCode := 0 diff --git a/business/jxstore/yonghui/yonghui.go b/business/jxstore/yonghui/yonghui.go index 724bb5e14..4477fad48 100644 --- a/business/jxstore/yonghui/yonghui.go +++ b/business/jxstore/yonghui/yonghui.go @@ -248,6 +248,17 @@ func GetGoodsInfoAndDetailMap(goodsList []*weimobapi.GoodsInfo) (goodsMap map[st return goodsMap } +// func getSelectedClassifyLeafList(l []weimobapi.SelectedClassifyList) (list []int64) { +// for _, v := range l { +// if v.ChildrenClassify == nil { +// list = append(list, v.ClassifyID) +// } else { +// subList := getSelectedClassifyLeafList(v.ChildrenClassify) +// } +// } +// return list +// } + func updateWeiMobGoods(costPrice, salePrice float64, goodsDetail *weimobapi.GoodsDetailInfo) (goodsID int64, skuMap map[string]int64, err error) { var ( categoryList []*weimobapi.CategoryList @@ -272,6 +283,7 @@ func updateWeiMobGoods(costPrice, salePrice float64, goodsDetail *weimobapi.Good if err != nil { baseapi.SugarLogger.Errorf("FindFreightTemplateList error:%v", err) } + //寻找分类子ID categoryList = goodsDetail.CategoryList if len(categoryList) > 0 { @@ -279,6 +291,17 @@ func updateWeiMobGoods(costPrice, salePrice float64, goodsDetail *weimobapi.Good } else { return 0, nil, errors.New(fmt.Sprintf("未查询到此商品的分类信息!goodsID : [%v] ,", goodsDetail.GoodsID)) } + + selectedClassifyList := goodsDetail.SelectedClassifyList + var selectedClassifyListID []int64 + if len(selectedClassifyList) > 0 { + for _, v := range selectedClassifyList { + selectedClassifyListID = append(selectedClassifyListID, v.ChildrenClassify[0].ClassifyID) + } + // categoryID = categoryList[len(categoryList)-1].CategoryID + } else { + return 0, nil, errors.New(fmt.Sprintf("未查询到此商品的分类信息!goodsID : [%v] ,", goodsDetail.GoodsID)) + } b2CSku := &weimobapi.B2CSku{ Weight: skuListInfo.B2CSku.Weight, Volume: skuListInfo.B2CSku.Volume, @@ -298,16 +321,17 @@ func updateWeiMobGoods(costPrice, salePrice float64, goodsDetail *weimobapi.Good } skuListParam = append(skuListParam, skuList) goods := &weimobapi.Goods{ - B2CGoods: b2CGoods, - SkuList: skuListParam, - Title: goodsDetail.Title, - IsMultiSku: goodsDetail.IsMultiSku, - IsPutAway: weimobapi.GoodsTypeNormal, - GoodsImageURL: goodsDetail.GoodsImageURL, - GoodsID: goodsDetail.GoodsID, - CategoryID: categoryID, - OuterGoodsCode: goodsDetail.OuterGoodsCode, - PointDeductRatio: goodsDetail.PointDeductRatio, + B2CGoods: b2CGoods, + SkuList: skuListParam, + Title: goodsDetail.Title, + IsMultiSku: goodsDetail.IsMultiSku, + IsPutAway: weimobapi.GoodsTypeNormal, + GoodsImageURL: goodsDetail.GoodsImageURL, + GoodsID: goodsDetail.GoodsID, + CategoryID: categoryID, + OuterGoodsCode: goodsDetail.OuterGoodsCode, + PointDeductRatio: goodsDetail.PointDeductRatio, + SelectedClassifyIDList: selectedClassifyListID, } updateGoodsParam := &weimobapi.UpdateGoodsParam{ Goods: goods, diff --git a/business/partner/purchase/ebai/store_sku2.go b/business/partner/purchase/ebai/store_sku2.go index 60bde45c1..3dd42be7d 100644 --- a/business/partner/purchase/ebai/store_sku2.go +++ b/business/partner/purchase/ebai/store_sku2.go @@ -208,13 +208,10 @@ func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, storeID i if len(storeSkuList) > 1 { opResult, err2 := api.EbaiAPI.SkuPriceUpdateBatch(ctx.GetTrackInfo(), utils.Int2Str(storeID), StoreSkuInfoList2Ebai(storeSkuList), ebaiapi.SkuIDTypeSkuID) if err = err2; err != nil && opResult != nil { - failedList = putils.SelectStoreSkuListByOpResult(storeID, storeSkuList, opResult) + failedList = putils.SelectStoreSkuListByOpResult(storeSkuList, opResult) } } else if len(storeSkuList) == 1 { - err = api.EbaiAPI.SkuPriceUpdateOne(ctx.GetTrackInfo(), utils.Int2Str(storeID), StoreSkuInfoList2Ebai(storeSkuList)[0]) - // if err != nil && opResult2 != nil { - // failedList = putils.SelectStoreSkuListByOpResult(storeID, storeSkuList, opResult2) - // } + _, err = api.EbaiAPI.SkuPriceUpdateOne(ctx.GetTrackInfo(), utils.Int2Str(storeID), StoreSkuInfoList2Ebai(storeSkuList)[0]) } } return failedList, err diff --git a/globals/refutil/refutil.go b/globals/refutil/refutil.go index c28475bc2..7cf3e21c6 100644 --- a/globals/refutil/refutil.go +++ b/globals/refutil/refutil.go @@ -8,6 +8,7 @@ import ( "reflect" "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/jx-callback/globals" ) func CheckAndGetStructValue(item interface{}) *reflect.Value { @@ -70,7 +71,9 @@ func FilterMapByStructObject(mapData map[string]interface{}, obj interface{}, ob } } if objPtr != nil { - utils.Map2StructByJson(m, objPtr, true) + if err := utils.Map2StructByJson(m, objPtr, true); err != nil { + globals.SugarLogger.Warnf("FilterMapByStructObject failed with err:%v, mapData:%s", err, utils.Format4Output(mapData, true)) + } } return valid, invalid }