From ccba7185694a6897ad9bcd7875c9928632b7974e Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 11 Dec 2019 15:02:32 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E5=85=A8=E9=83=A8=E5=90=AF=E7=94=A8useThin?= =?UTF-8?q?gMap?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- conf/app.conf | 5 ----- 1 file changed, 5 deletions(-) diff --git a/conf/app.conf b/conf/app.conf index cca7c2976..12237e789 100644 --- a/conf/app.conf +++ b/conf/app.conf @@ -175,7 +175,6 @@ dingdingAppKey = "ding7iu9cptairtcls0c" dingdingSecret = "LWrZAFeqUfuVv7n_tc8vPpCAx6PT4CwManx2XCVhJOqGsx2L5XCDuX1sAN_JtvsI" dingdingCallbackURL = "http://callback.jxc4.com/dingding/msg" -useThingMap = true [jxgy] httpport = 8088 @@ -234,7 +233,6 @@ getWeixinTokenURL = "http://www.jxc4.com/v2/sys/GetWXToken" getYLYTokenURL = "http://www.jxc4.com/v2/sys/GetYLYToken" storeName = "京西果园" -useThingMap = true [test] jdOrgCode = "82029" @@ -296,8 +294,6 @@ enableEbaiStoreWrite = true enableMtwmStoreWrite = true enableWscStoreWrite = false -useThingMap = true - [beta] enableStoreWrite = false enableJdStoreWrite = false @@ -336,4 +332,3 @@ getWeixinTokenURL = "http://www.jxc4.com/v2/sys/GetWXToken" getWeimobTokenURL = "http://www.jxc4.com/v2/sys/GetWeimobToken" dbConnectStr = "root:WebServer@1@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true" -useThingMap = true From 95a669476e3b7b52ec87273bb7c9a49627b10664 Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 11 Dec 2019 15:44:42 +0800 Subject: [PATCH 2/5] =?UTF-8?q?-partner.ReadSku=20=E4=BF=AE=E6=94=B9partne?= =?UTF-8?q?r.GetSkus=E5=8E=9F=E5=9E=8B=EF=BC=8C=E6=B7=BB=E5=8A=A0vendorOrg?= =?UTF-8?q?Code=EF=BC=8C=E5=8E=BB=E9=99=A4skuName?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/sku.go | 12 +- business/jxstore/cms/store_sku_check.go | 3 +- business/partner/partner.go | 5 +- business/partner/purchase/jd/order_test.go | 6 +- business/partner/purchase/jd/sku.go | 267 +++++------------- business/partner/purchase/jd/sku2.go | 124 ++++++++ business/partner/purchase/jd/sku_test.go | 24 +- .../partner/purchase/jd/store_sku2_test.go | 2 +- business/partner/purchase/jx/sku.go | 8 +- controllers/cms_sku.go | 30 +- routers/commentsRouter_controllers.go | 9 - 11 files changed, 241 insertions(+), 249 deletions(-) diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index 022b2da19..a7910e7a4 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -1207,12 +1207,12 @@ func DeleteSkuNamePlace(ctx *jxcontext.Context, nameID, placeCode int, userName return num, err } -func GetVendorSku(ctx *jxcontext.Context, vendorID int, vendorOrgCode, vendorSkuID string) (skuNameInfo *model.SkuNameExt, err error) { - if handler := CurVendorSync.GetMultiStoreHandler(vendorID); handler != nil { - return handler.ReadSku(ctx, vendorOrgCode, vendorSkuID) - } - return nil, ErrCanNotFindVendor -} +// func GetVendorSku(ctx *jxcontext.Context, vendorID int, vendorOrgCode, vendorSkuID string) (skuNameInfo *model.SkuNameExt, err error) { +// if handler := CurVendorSync.GetMultiStoreHandler(vendorID); handler != nil { +// return handler.ReadSku(ctx, vendorOrgCode, vendorSkuID) +// } +// return nil, ErrCanNotFindVendor +// } func SortCategorySkus(ctx *jxcontext.Context, catID int, skuIDList []int) (err error) { db := dao.GetDB() diff --git a/business/jxstore/cms/store_sku_check.go b/business/jxstore/cms/store_sku_check.go index e876eb343..70670b705 100644 --- a/business/jxstore/cms/store_sku_check.go +++ b/business/jxstore/cms/store_sku_check.go @@ -202,7 +202,8 @@ func GetMultiStoreAllSkuInfo(ctx *jxcontext.Context, vendorMap map[int]bool) { } if partner.IsMultiStore(vendorID) { multiHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IMultipleStoresHandler) - allSkuNameInfoList, err := multiHandler.GetSkus(ctx, 0, "", "") + // TODO vendorOrgCode处理 + allSkuNameInfoList, err := multiHandler.GetSkus(ctx, "", 0, "") skuNameInfoList = allSkuNameInfoList if err != nil { baseapi.SugarLogger.Errorf("GetMultiStoreAllSkuInfo error:%v", err) diff --git a/business/partner/partner.go b/business/partner/partner.go index 54ae60877..72d197ef9 100644 --- a/business/partner/partner.go +++ b/business/partner/partner.go @@ -172,15 +172,14 @@ type IMultipleStoresHandler interface { UpdateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) DeleteSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) - ReadSku(ctx *jxcontext.Context, vendorOrgCode, vendorSkuID string) (skuNameExt *model.SkuNameExt, err error) + // ReadSku(ctx *jxcontext.Context, vendorOrgCode, vendorSkuID string) (skuNameExt *model.SkuNameExt, err error) CreateSku2(ctx *jxcontext.Context, sku *dao.StoreSkuSyncInfo) (err error) UpdateSku2(ctx *jxcontext.Context, sku *dao.StoreSkuSyncInfo) (err error) DeleteSku2(ctx *jxcontext.Context, sku *dao.StoreSkuSyncInfo) (err error) // RefreshAllSkusID(ctx *jxcontext.Context, parentTask tasksch.ITask, isAsync bool) (hint string, err error) - // TODO 此接口需要添加vendorOrgCode - GetSkus(ctx *jxcontext.Context, skuID int, vendorSkuID, skuName string) (skuNameList []*SkuNameInfo, err error) + GetSkus(ctx *jxcontext.Context, vendorOrgCode string, skuID int, vendorSkuID string) (skuNameList []*SkuNameInfo, err error) } type ISingleStoreHandler interface { diff --git a/business/partner/purchase/jd/order_test.go b/business/partner/purchase/jd/order_test.go index b0e2ac099..5703907bf 100644 --- a/business/partner/purchase/jd/order_test.go +++ b/business/partner/purchase/jd/order_test.go @@ -41,7 +41,11 @@ func TestListOrders(t *testing.T) { } func TestGetSelfTakeCode(t *testing.T) { - selfTakeCode, err := CurPurchaseHandler.GetSelfTakeCode(jxcontext.AdminCtx, "921160248000222") + order, err := partner.CurOrderManager.LoadOrder("921160248000222", model.VendorIDJD) + if err != nil { + t.Fatal(err) + } + selfTakeCode, err := CurPurchaseHandler.GetSelfTakeCode(jxcontext.AdminCtx, order) if err != nil { t.Fatal(err.Error()) } diff --git a/business/partner/purchase/jd/sku.go b/business/partner/purchase/jd/sku.go index 99360470b..214aea54b 100644 --- a/business/partner/purchase/jd/sku.go +++ b/business/partner/purchase/jd/sku.go @@ -9,11 +9,8 @@ import ( "git.rosy.net.cn/baseapi/platformapi/jdapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxutils" - "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" - "git.rosy.net.cn/jx-callback/business/jxutils/tasksch" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model/dao" - "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/globals" ) @@ -180,77 +177,77 @@ func (p *PurchaseHandler) CreateSku(db *dao.DaoDB, sku *model.Sku, userName stri }) } -func (p *PurchaseHandler) ReadSku(ctx *jxcontext.Context, vendorOrgCode, vendorSkuID string) (skuNameExt *model.SkuNameExt, err error) { - jdSkuID := utils.Str2Int64(vendorSkuID) - a := getAPI(vendorOrgCode) - skuList, _, err := a.QuerySkuInfos(&jdapi.QuerySkuParam{ - SkuID: jdSkuID, - }) - if err == nil { - if len(skuList) >= 1 { - skuNameExt = &model.SkuNameExt{} - if imgList, err2 := a.QueryListBySkuIds(&jdapi.QueryListBySkuIdsParam{ - SkuIDs: []int64{jdSkuID}, - }); err2 == nil && len(imgList) > 0 { - skuNameExt.Img = imgList[0].SourceImgURL - } - sku := skuList[0] - prefix, name, comment, specUnit, unit, specQuality := jxutils.SplitSkuName(sku.SkuName) - if name == "" { - name = sku.SkuName - unit = "份" - specUnit = "g" - } - skuNameExt.Prefix = prefix - skuNameExt.Name = name - skuNameExt.Unit = unit - skuNameExt.Price = sku.SkuPrice - skuNameExt.Skus = []*model.SkuWithVendor{ - &model.SkuWithVendor{ - Sku: &model.Sku{ - SpecQuality: specQuality, - SpecUnit: specUnit, - Weight: jxutils.FloatWeight2Int(float32(sku.Weight)), - JdID: sku.SkuID, - Status: jdStatus2jxStatus(sku.FixedStatus), - Comment: comment, - }, - }, - } - skuNameExt.Skus[0].ID = int(utils.Str2Int64(sku.OutSkuID)) +// func (p *PurchaseHandler) ReadSku(ctx *jxcontext.Context, vendorOrgCode, vendorSkuID string) (skuNameExt *model.SkuNameExt, err error) { +// jdSkuID := utils.Str2Int64(vendorSkuID) +// a := getAPI(vendorOrgCode) +// skuList, _, err := a.QuerySkuInfos(&jdapi.QuerySkuParam{ +// SkuID: jdSkuID, +// }) +// if err == nil { +// if len(skuList) >= 1 { +// skuNameExt = &model.SkuNameExt{} +// if imgList, err2 := a.QueryListBySkuIds(&jdapi.QueryListBySkuIdsParam{ +// SkuIDs: []int64{jdSkuID}, +// }); err2 == nil && len(imgList) > 0 { +// skuNameExt.Img = imgList[0].SourceImgURL +// } +// sku := skuList[0] +// prefix, name, comment, specUnit, unit, specQuality := jxutils.SplitSkuName(sku.SkuName) +// if name == "" { +// name = sku.SkuName +// unit = "份" +// specUnit = "g" +// } +// skuNameExt.Prefix = prefix +// skuNameExt.Name = name +// skuNameExt.Unit = unit +// skuNameExt.Price = sku.SkuPrice +// skuNameExt.Skus = []*model.SkuWithVendor{ +// &model.SkuWithVendor{ +// Sku: &model.Sku{ +// SpecQuality: specQuality, +// SpecUnit: specUnit, +// Weight: jxutils.FloatWeight2Int(float32(sku.Weight)), +// JdID: sku.SkuID, +// Status: jdStatus2jxStatus(sku.FixedStatus), +// Comment: comment, +// }, +// }, +// } +// skuNameExt.Skus[0].ID = int(utils.Str2Int64(sku.OutSkuID)) - db := dao.GetDB() - shopCategories := sku.ShopCategories - if len(shopCategories) > 0 { - skuCat := &model.SkuCategory{} - skuCat.JdID = shopCategories[0] - if dao.GetEntity(db, skuCat, "JdID") == nil { - skuNameExt.CategoryID = skuCat.ID - } - } - sellCities := sku.SellCities - for _, v := range sellCities { - if v == 0 { - skuNameExt.IsGlobal = 1 - } - } - if len(sellCities) == 0 || skuNameExt.IsGlobal == 1 { - skuNameExt.IsGlobal = 1 - } else { - var places []*model.Place - if err = dao.GetRows(db, &places, "SELECT * FROM place WHERE jd_code IN ("+dao.GenQuestionMarks(len(sellCities))+") AND level = 2", sellCities); err == nil { - skuNameExt.Places = make([]int, len(places)) - for k, v := range places { - skuNameExt.Places[k] = v.Code - } - } - } - } else { - err = partner.ErrCanNotFindItem - } - } - return skuNameExt, err -} +// db := dao.GetDB() +// shopCategories := sku.ShopCategories +// if len(shopCategories) > 0 { +// skuCat := &model.SkuCategory{} +// skuCat.JdID = shopCategories[0] +// if dao.GetEntity(db, skuCat, "JdID") == nil { +// skuNameExt.CategoryID = skuCat.ID +// } +// } +// sellCities := sku.SellCities +// for _, v := range sellCities { +// if v == 0 { +// skuNameExt.IsGlobal = 1 +// } +// } +// if len(sellCities) == 0 || skuNameExt.IsGlobal == 1 { +// skuNameExt.IsGlobal = 1 +// } else { +// var places []*model.Place +// if err = dao.GetRows(db, &places, "SELECT * FROM place WHERE jd_code IN ("+dao.GenQuestionMarks(len(sellCities))+") AND level = 2", sellCities); err == nil { +// skuNameExt.Places = make([]int, len(places)) +// for k, v := range places { +// skuNameExt.Places[k] = v.Code +// } +// } +// } +// } else { +// err = partner.ErrCanNotFindItem +// } +// } +// return skuNameExt, err +// } func (p *PurchaseHandler) UpdateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) { return p.cuSku(db, sku, func(skuExt *tSkuInfoExt, price int, skuName string, shopCategories []int64, addParams map[string]interface{}) (vendorSkuID string, err error) { @@ -493,127 +490,3 @@ func composeSkuSpec(specQuality float32, specUnit, unit string) string { } return value } - -func (p *PurchaseHandler) GetSkus(ctx *jxcontext.Context, skuID int, vendorSkuID, skuName string) (skuNameList []*partner.SkuNameInfo, err error) { - param := &jdapi.QuerySkuParam{ - SkuID: utils.Str2Int64WithDefault(vendorSkuID, 0), - SkuName: skuName, - IsFilterDel: jdapi.IsFilterDelTrue, - PageNo: 1, - PageSize: jdapi.MaxSkuIDsCount4QueryListBySkuIds, // 为了同时取图,这个值不要大于jdapi.MaxSkuIDsCount4QueryListBySkuIds - } - for { - skuList, _, err2 := getAPI("").QuerySkuInfos(param) - if err = err2; err != nil { - return nil, err - } - if len(skuList) > 0 { - batchSkuNameList := make([]*partner.SkuNameInfo, len(skuList)) - for k, v := range skuList { - batchSkuNameList[k] = vendorSku2Jx(v) - } - setSkuNameListPic(batchSkuNameList) - skuNameList = append(skuNameList, batchSkuNameList...) - } - if len(skuList) < param.PageSize { - break - } - param.PageNo++ - } - return skuNameList, err -} - -func setSkuNameListPic(skuNameList []*partner.SkuNameInfo) []*partner.SkuNameInfo { - jdSkuIDs := make([]int64, len(skuNameList)) - for k, v := range skuNameList { - jdSkuIDs[k] = utils.Str2Int64(v.SkuList[0].VendorSkuID) - } - - imgMap := make(map[int64]*jdapi.ImgHandleQueryResult) - if imgList, err2 := getAPI("").QueryListBySkuIds(&jdapi.QueryListBySkuIdsParam{ - SkuIDs: jdSkuIDs, - }); err2 == nil { - for _, v := range imgList { - if v.ImgType == jdapi.ImgTypeMain { - imgResult := imgMap[v.SkuID] - if imgResult == nil || imgResult.IsMain < v.IsMain { - imgMap[v.SkuID] = v - } - } - } - } - - // 使用扒页面方式获取商品图片 - if false { - var leftJdSkuIDs []int64 - for _, v := range jdSkuIDs { - if imgMap[v] == nil { - leftJdSkuIDs = append(leftJdSkuIDs, v) - } - } - task := tasksch.NewParallelTask("jd setSkuNameListPic", nil, jxcontext.AdminCtx, - func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { - jdSkuID := batchItemList[0].(int64) - imgList, err := getAPI("").GetSkuPageImageInfo(jdSkuID) - if err == nil && len(imgList) > 0 { - retVal = [][]string{ - []string{utils.Int64ToStr(jdSkuID), imgList[0].Big}, - } - } - return retVal, err - }, leftJdSkuIDs) - task.Run() - if resultList, err := task.GetResult(0); err == nil { - for _, v := range resultList { - strList := v.([]string) - imgMap[utils.Str2Int64(strList[0])] = &jdapi.ImgHandleQueryResult{ - SourceImgURL: strList[1], - } - } - } - } - - // 设置商品图片 - for _, v := range skuNameList { - if imgResult := imgMap[utils.Str2Int64(v.SkuList[0].VendorSkuID)]; imgResult != nil { - v.PictureList = []string{imgResult.SourceImgURL} - } - } - return skuNameList -} - -func vendorSku2Jx(vendorSku *jdapi.SkuMain) (skuName *partner.SkuNameInfo) { - prefix, name, comment, specUnit, unit, specQuality := jxutils.SplitSkuName(vendorSku.SkuName) - weight := int(vendorSku.Weight * 1000) - if weight <= 0 { - weight = jxutils.FormatSkuWeight(specQuality, specUnit) - } - skuID := int(utils.Str2Int64WithDefault(vendorSku.OutSkuID, 0)) - vendorSkuID := utils.Int64ToStr(vendorSku.SkuID) - skuName = &partner.SkuNameInfo{ - NameID: skuID, - VendorNameID: vendorSkuID, - VendorCatIDList: []string{utils.Int64ToStr(vendorSku.CategoryID)}, - - Prefix: prefix, - Name: name, - Unit: unit, - SkuList: []*partner.SkuInfo{ - &partner.SkuInfo{ - StoreSkuInfo: partner.StoreSkuInfo{ - VendorSkuID: vendorSkuID, - SkuID: skuID, - - VendorPrice: int64(vendorSku.SkuPrice), - Status: jdStatus2jxStatus(vendorSku.FixedStatus), - }, - SkuName: vendorSku.SkuName, - Comment: comment, - SpecQuality: float64(specQuality), - SpecUnit: specUnit, - Weight: weight, - }, - }, - } - return skuName -} diff --git a/business/partner/purchase/jd/sku2.go b/business/partner/purchase/jd/sku2.go index 9e85466eb..bf82c3bfa 100644 --- a/business/partner/purchase/jd/sku2.go +++ b/business/partner/purchase/jd/sku2.go @@ -7,6 +7,7 @@ import ( "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" + "git.rosy.net.cn/jx-callback/business/jxutils/tasksch" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/business/partner" @@ -199,6 +200,129 @@ func (p *PurchaseHandler) DeleteSku2(ctx *jxcontext.Context, sku *dao.StoreSkuSy return err } +func (p *PurchaseHandler) GetSkus(ctx *jxcontext.Context, vendorOrgCode string, skuID int, vendorSkuID string) (skuNameList []*partner.SkuNameInfo, err error) { + param := &jdapi.QuerySkuParam{ + SkuID: utils.Str2Int64WithDefault(vendorSkuID, 0), + IsFilterDel: jdapi.IsFilterDelTrue, + PageNo: 1, + PageSize: jdapi.MaxSkuIDsCount4QueryListBySkuIds, // 为了同时取图,这个值不要大于jdapi.MaxSkuIDsCount4QueryListBySkuIds + } + for { + skuList, _, err2 := getAPI(vendorOrgCode).QuerySkuInfos(param) + if err = err2; err != nil { + return nil, err + } + if len(skuList) > 0 { + batchSkuNameList := make([]*partner.SkuNameInfo, len(skuList)) + for k, v := range skuList { + batchSkuNameList[k] = vendorSku2Jx(v) + } + setSkuNameListPic(batchSkuNameList) + skuNameList = append(skuNameList, batchSkuNameList...) + } + if len(skuList) < param.PageSize { + break + } + param.PageNo++ + } + return skuNameList, err +} + +func setSkuNameListPic(skuNameList []*partner.SkuNameInfo) []*partner.SkuNameInfo { + jdSkuIDs := make([]int64, len(skuNameList)) + for k, v := range skuNameList { + jdSkuIDs[k] = utils.Str2Int64(v.SkuList[0].VendorSkuID) + } + + imgMap := make(map[int64]*jdapi.ImgHandleQueryResult) + if imgList, err2 := getAPI("").QueryListBySkuIds(&jdapi.QueryListBySkuIdsParam{ + SkuIDs: jdSkuIDs, + }); err2 == nil { + for _, v := range imgList { + if v.ImgType == jdapi.ImgTypeMain { + imgResult := imgMap[v.SkuID] + if imgResult == nil || imgResult.IsMain < v.IsMain { + imgMap[v.SkuID] = v + } + } + } + } + + // 使用扒页面方式获取商品图片 + if false { + var leftJdSkuIDs []int64 + for _, v := range jdSkuIDs { + if imgMap[v] == nil { + leftJdSkuIDs = append(leftJdSkuIDs, v) + } + } + task := tasksch.NewParallelTask("jd setSkuNameListPic", nil, jxcontext.AdminCtx, + func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + jdSkuID := batchItemList[0].(int64) + imgList, err := getAPI("").GetSkuPageImageInfo(jdSkuID) + if err == nil && len(imgList) > 0 { + retVal = [][]string{ + []string{utils.Int64ToStr(jdSkuID), imgList[0].Big}, + } + } + return retVal, err + }, leftJdSkuIDs) + task.Run() + if resultList, err := task.GetResult(0); err == nil { + for _, v := range resultList { + strList := v.([]string) + imgMap[utils.Str2Int64(strList[0])] = &jdapi.ImgHandleQueryResult{ + SourceImgURL: strList[1], + } + } + } + } + + // 设置商品图片 + for _, v := range skuNameList { + if imgResult := imgMap[utils.Str2Int64(v.SkuList[0].VendorSkuID)]; imgResult != nil { + v.PictureList = []string{imgResult.SourceImgURL} + } + } + return skuNameList +} + +func vendorSku2Jx(vendorSku *jdapi.SkuMain) (skuName *partner.SkuNameInfo) { + prefix, name, comment, specUnit, unit, specQuality := jxutils.SplitSkuName(vendorSku.SkuName) + weight := int(vendorSku.Weight * 1000) + if weight <= 0 { + weight = jxutils.FormatSkuWeight(specQuality, specUnit) + } + skuID := int(utils.Str2Int64WithDefault(vendorSku.OutSkuID, 0)) + vendorSkuID := utils.Int64ToStr(vendorSku.SkuID) + skuName = &partner.SkuNameInfo{ + NameID: skuID, + VendorNameID: vendorSkuID, + VendorCatIDList: []string{utils.Int64ToStr(vendorSku.CategoryID)}, + + Prefix: prefix, + Name: name, + Unit: unit, + SkuList: []*partner.SkuInfo{ + &partner.SkuInfo{ + StoreSkuInfo: partner.StoreSkuInfo{ + VendorSkuID: vendorSkuID, + SkuID: skuID, + + VendorPrice: int64(vendorSku.SkuPrice), + Status: jdStatus2jxStatus(vendorSku.FixedStatus), + }, + SkuName: vendorSku.SkuName, + Comment: comment, + SpecQuality: float64(specQuality), + SpecUnit: specUnit, + Weight: weight, + }, + }, + } + return skuName +} + func jdStatus2jxStatus(jdStatus int) (jxStatus int) { switch jdStatus { case jdapi.SkuFixedStatusOnline: diff --git a/business/partner/purchase/jd/sku_test.go b/business/partner/purchase/jd/sku_test.go index d05e7f67d..26a23090e 100644 --- a/business/partner/purchase/jd/sku_test.go +++ b/business/partner/purchase/jd/sku_test.go @@ -45,17 +45,17 @@ func TestGetAllCategories(t *testing.T) { t.Log(utils.Format4Output(result, false)) } -func TestReadSku(t *testing.T) { - skuName, err := CurPurchaseHandler.ReadSku(jxcontext.AdminCtx, "", "2005582952") - t.Log(utils.Format4Output(skuName, false)) - if err != nil { - t.Fatal(err.Error()) - } - if skuName.Name != "味事达酱香鲜特级酿造酱油" || skuName.Skus[0].SpecUnit != "ml" { - t.Fatal("ReadSku return data wrong") - t.Log(string(utils.MustMarshal(skuName))) - } -} +// func TestReadSku(t *testing.T) { +// skuName, err := CurPurchaseHandler.ReadSku(jxcontext.AdminCtx, "", "2005582952") +// t.Log(utils.Format4Output(skuName, false)) +// if err != nil { +// t.Fatal(err.Error()) +// } +// if skuName.Name != "味事达酱香鲜特级酿造酱油" || skuName.Skus[0].SpecUnit != "ml" { +// t.Fatal("ReadSku return data wrong") +// t.Log(string(utils.MustMarshal(skuName))) +// } +// } func TestGetVendorCategories(t *testing.T) { catList, err := CurPurchaseHandler.GetVendorCategories(jxcontext.AdminCtx) @@ -66,7 +66,7 @@ func TestGetVendorCategories(t *testing.T) { } func TestGetSkus(t *testing.T) { - skuNameList, err := CurPurchaseHandler.GetSkus(jxcontext.AdminCtx, 0, "2023747677", "") + skuNameList, err := CurPurchaseHandler.GetSkus(jxcontext.AdminCtx, "", 0, "2023747677") t.Log(utils.Format4Output(skuNameList, false)) t.Log(len(skuNameList)) if err != nil { diff --git a/business/partner/purchase/jd/store_sku2_test.go b/business/partner/purchase/jd/store_sku2_test.go index a15a974d4..82d780ba4 100644 --- a/business/partner/purchase/jd/store_sku2_test.go +++ b/business/partner/purchase/jd/store_sku2_test.go @@ -19,7 +19,7 @@ func TestGetStoreSkusBareInfo(t *testing.T) { // for i := 0; i < 30-1; i++ { // list = append(list, list[0]) // } - skuNameList, err := CurPurchaseHandler.GetSkus(jxcontext.AdminCtx, 0, "", "") + skuNameList, err := CurPurchaseHandler.GetSkus(jxcontext.AdminCtx, "", 0, "") if err != nil { t.Fatal(err) } diff --git a/business/partner/purchase/jx/sku.go b/business/partner/purchase/jx/sku.go index 2aa38e5b3..416c61241 100644 --- a/business/partner/purchase/jx/sku.go +++ b/business/partner/purchase/jx/sku.go @@ -49,9 +49,9 @@ func (p *PurchaseHandler) CreateSku(db *dao.DaoDB, sku *model.Sku, userName stri return err } -func (p *PurchaseHandler) ReadSku(ctx *jxcontext.Context, vendorOrgCode, vendorSkuID string) (skuNameExt *model.SkuNameExt, err error) { - return skuNameExt, err -} +// func (p *PurchaseHandler) ReadSku(ctx *jxcontext.Context, vendorOrgCode, vendorSkuID string) (skuNameExt *model.SkuNameExt, err error) { +// return skuNameExt, err +// } func (p *PurchaseHandler) UpdateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) { return err @@ -77,6 +77,6 @@ func (p *PurchaseHandler) GetVendorCategories(ctx *jxcontext.Context) (vendorCat return vendorCats, err } -func (p *PurchaseHandler) GetSkus(ctx *jxcontext.Context, skuID int, vendorSkuID, skuName string) (skuNameList []*partner.SkuNameInfo, err error) { +func (p *PurchaseHandler) GetSkus(ctx *jxcontext.Context, vendorOrgCode string, skuID int, vendorSkuID string) (skuNameList []*partner.SkuNameInfo, err error) { return skuNameList, err } diff --git a/controllers/cms_sku.go b/controllers/cms_sku.go index 55a4756d5..5a501f55d 100644 --- a/controllers/cms_sku.go +++ b/controllers/cms_sku.go @@ -291,21 +291,21 @@ func (c *SkuController) DeleteSkuNamePlace() { }) } -// @Title 远程查询厂商SKU信息 -// @Description 远程查询厂商SKU信息,这个是实时调用API远程查询(不推荐使用) -// @Param token header string true "认证token" -// @Param vendorSkuID query string true "sku ID" -// @Param vendorID query int true "门店所属的厂商ID" -// @Param vendorOrgCode query string false "厂商内组织代码" -// @Success 200 {object} controllers.CallResult -// @Failure 200 {object} controllers.CallResult -// @router /GetVendorSku [get] -func (c *SkuController) GetVendorSku() { - c.callGetVendorSku(func(params *tSkuGetVendorSkuParams) (retVal interface{}, errCode string, err error) { - retVal, err = cms.GetVendorSku(params.Ctx, params.VendorID, params.VendorOrgCode, params.VendorSkuID) - return retVal, "", err - }) -} +// // @Title 远程查询厂商SKU信息 +// // @Description 远程查询厂商SKU信息,这个是实时调用API远程查询(不推荐使用) +// // @Param token header string true "认证token" +// // @Param vendorSkuID query string true "sku ID" +// // @Param vendorID query int true "门店所属的厂商ID" +// // @Param vendorOrgCode query string false "厂商内组织代码" +// // @Success 200 {object} controllers.CallResult +// // @Failure 200 {object} controllers.CallResult +// // @router /GetVendorSku [get] +// func (c *SkuController) GetVendorSku() { +// c.callGetVendorSku(func(params *tSkuGetVendorSkuParams) (retVal interface{}, errCode string, err error) { +// retVal, err = cms.GetVendorSku(params.Ctx, params.VendorID, params.VendorOrgCode, params.VendorSkuID) +// return retVal, "", err +// }) +// } // @Title 同步商家SKU // @Description 同步商家SKU diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 2aaab868c..ceaa9b5f6 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -1206,15 +1206,6 @@ func init() { Filters: nil, Params: nil}) - beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"], - beego.ControllerComments{ - Method: "GetVendorSku", - Router: `/GetVendorSku`, - AllowHTTPMethods: []string{"get"}, - MethodParams: param.Make(), - Filters: nil, - Params: nil}) - beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"], beego.ControllerComments{ Method: "ReorderCategories", From ef5ec639518d72372f9872e202ed29010b76b0ec Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 11 Dec 2019 16:04:44 +0800 Subject: [PATCH 3/5] =?UTF-8?q?StoreExt=E7=9A=84StoreMaps=E4=B8=8ECourierM?= =?UTF-8?q?aps=E4=BB=8Emap=E6=95=B0=E7=BB=84=E6=94=B9=E4=B8=BAstruct?= =?UTF-8?q?=E6=95=B0=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store.go | 24 +++++++++++++----------- business/jxstore/cms/store_sku_check.go | 13 ++++++------- business/jxstore/misc/misc2.go | 16 ++++++++-------- business/jxstore/misc/store_score.go | 12 ++++++------ 4 files changed, 33 insertions(+), 32 deletions(-) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 8f99c24aa..32314ea4d 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -55,15 +55,17 @@ type StoreExt struct { FloatLng float64 `json:"lng"` FloatLat float64 `json:"lat"` - ProvinceCode int `json:"provinceCode"` - ProvinceName string `json:"provinceName"` - CityName string `json:"cityName"` - DistrictName string `json:"districtName"` - StoreMapStr string `json:"-"` - CourierMapStr string `json:"-"` - PayeeBankName string `json:"payeeBankName"` // 开户行名称 - StoreMaps []map[string]interface{} `orm:"-"` - CourierMaps []map[string]interface{} `orm:"-"` + ProvinceCode int `json:"provinceCode"` + ProvinceName string `json:"provinceName"` + CityName string `json:"cityName"` + DistrictName string `json:"districtName"` + StoreMapStr string `json:"-"` + CourierMapStr string `json:"-"` + PayeeBankName string `json:"payeeBankName"` // 开户行名称 + // StoreMaps []map[string]interface{} `orm:"-"` + // CourierMaps []map[string]interface{} `orm:"-"` + StoreMaps []*model.StoreMap `json:"StoreMaps"` + CourierMaps []*model.StoreCourierMap `json:"CourierMaps"` OrderCount int `json:"orderCount"` } @@ -404,10 +406,10 @@ func setStoreMapInfo(ctx *jxcontext.Context, db *dao.DaoDB, storesInfo *StoresIn v.Licence2Image = "" } for _, v2 := range storeMapMap[v.ID] { - v.StoreMaps = append(v.StoreMaps, utils.Struct2FlatMap(v2)) + v.StoreMaps = append(v.StoreMaps, v2) } for _, v2 := range storeCourierMap[v.ID] { - v.CourierMaps = append(v.CourierMaps, utils.Struct2FlatMap(v2)) + v.CourierMaps = append(v.CourierMaps, v2) } } return nil diff --git a/business/jxstore/cms/store_sku_check.go b/business/jxstore/cms/store_sku_check.go index 70670b705..be5b6108b 100644 --- a/business/jxstore/cms/store_sku_check.go +++ b/business/jxstore/cms/store_sku_check.go @@ -277,10 +277,10 @@ func GetFilterStoreList(storeList []*StoreExt, vendorMap, storeIDMap map[int]boo } } if storeInfo.StoreMaps != nil { - var tempStoreMaps []map[string]interface{} + var tempStoreMaps []*model.StoreMap for _, vendorStoreInfo := range storeInfo.StoreMaps { - vendorID := int(utils.MustInterface2Int64(vendorStoreInfo["vendorID"])) - isSyncStoreSku := int(utils.MustInterface2Int64(vendorStoreInfo["isSync"])) + vendorID := vendorStoreInfo.VendorID + isSyncStoreSku := int(vendorStoreInfo.IsSync) if isSyncStoreSku == 0 { continue } @@ -549,7 +549,7 @@ func CheckSkuDiffBetweenJxAndVendor(ctx *jxcontext.Context, vendorIDList []int, var filterJxSkuInfoMapSingle map[int]*dao.StoreSkuNameExt var filterJxSkuInfoMapMulti map[int]*dao.StoreSkuNameExt for _, vendorListValue := range jxStoreInfoListValue.StoreMaps { - vendorID := int(utils.MustInterface2Int64(vendorListValue["vendorID"])) + vendorID := vendorListValue.VendorID var flag = false if partner.IsMultiStore(vendorID) { if flag == false { @@ -565,14 +565,13 @@ func CheckSkuDiffBetweenJxAndVendor(ctx *jxcontext.Context, vendorIDList []int, } } - vendorStoreID := utils.Interface2String(vendorListValue["vendorStoreID"]) + vendorStoreID := vendorListValue.VendorStoreID baseapi.SugarLogger.Debugf("CheckSkuDiffBetweenJxAndVendor storeID:%d vendorID:%d vendorStoreID:%s vendorListValue:%v", storeID, vendorID, vendorStoreID, vendorListValue) if partner.IsMultiStore(vendorID) { singleStoreHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IPurchasePlatformStoreSkuHandler) allSkuInfoList := GetMultiStoreAllSkuInfoList(vendorID) - // TODO vendorOrgCode - skuBareInfoList, err := singleStoreHandler.GetStoreSkusBareInfo(ctx, "", task, storeID, vendorStoreID, allSkuInfoList) + skuBareInfoList, err := singleStoreHandler.GetStoreSkusBareInfo(ctx, vendorListValue.VendorOrgCode, task, storeID, vendorStoreID, allSkuInfoList) if err != nil { baseapi.SugarLogger.Infof("CheckSkuDiffBetweenJxAndVendor GetStoreSkusBareInfo error:%v", err) } else if len(skuBareInfoList) > 0 { diff --git a/business/jxstore/misc/misc2.go b/business/jxstore/misc/misc2.go index f1f32a551..3b374f0b4 100644 --- a/business/jxstore/misc/misc2.go +++ b/business/jxstore/misc/misc2.go @@ -181,7 +181,7 @@ func GetFilterStoreList(storeList []*cms.StoreExt, vendorMap, storeIDMap map[int } } for _, vendorStoreInfo := range storeInfo.StoreMaps { - vendorID := int(utils.MustInterface2Int64(vendorStoreInfo["vendorID"])) + vendorID := vendorStoreInfo.VendorID //filter for vendorID if len(vendorMap) > 0 { if _, ok := vendorMap[vendorID]; !ok { @@ -193,7 +193,7 @@ func GetFilterStoreList(storeList []*cms.StoreExt, vendorMap, storeIDMap map[int } temp := *storeInfo newStoreInfo := &temp - newStoreInfo.StoreMaps = []map[string]interface{}{vendorStoreInfo} + newStoreInfo.StoreMaps = []*model.StoreMap{vendorStoreInfo} outStoreList = append(outStoreList, newStoreInfo) } } @@ -224,9 +224,9 @@ func StartOrEndOpStoreEx(ctx *jxcontext.Context, isStart bool, startTime, endTim storeListValue := batchItemList[0].(*cms.StoreExt) storeID := storeListValue.ID for _, vendorListValue := range storeListValue.StoreMaps { - vendorID := int(utils.MustInterface2Int64(vendorListValue["vendorID"])) - startOpStoreTime := int16(utils.MustInterface2Int64(vendorListValue["fakeOpenStart"])) - endOpStoreTime := int16(utils.MustInterface2Int64(vendorListValue["fakeOpenStop"])) + vendorID := vendorListValue.VendorID + startOpStoreTime := vendorListValue.FakeOpenStart + endOpStoreTime := vendorListValue.FakeOpenStop //startOpStoreTime, endOpStoreTime := GetOpStoreTime(vendorID) if startTime != 0 && endTime != 0 { startOpStoreTime = startTime @@ -236,7 +236,7 @@ func StartOrEndOpStoreEx(ctx *jxcontext.Context, isStart bool, startTime, endTim if isStart && (startOpStoreTime == 0 || endOpStoreTime == 0) { continue } - vendorStoreID := utils.Interface2String(vendorListValue["vendorStoreID"]) + vendorStoreID := vendorListValue.VendorStoreID baseapi.SugarLogger.Debugf("StartOrEndOpStore storeID:%d vendorID:%d vendorStoreID:%s", storeID, vendorID, vendorStoreID) singleStoreHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler) storeSkuNameList, err := singleStoreHandler.GetStoreSkusFullInfo(ctx, task, storeID, vendorStoreID, nil) @@ -341,8 +341,8 @@ func InitEx() { if err == nil { for _, storeInfo := range storeList { for _, vendorStoreInfo := range storeInfo.StoreMaps { - startOpStoreTime := int16(utils.MustInterface2Int64(vendorStoreInfo["fakeOpenStart"])) - endOpStoreTime := int16(utils.MustInterface2Int64(vendorStoreInfo["fakeOpenStop"])) + startOpStoreTime := vendorStoreInfo.FakeOpenStart + endOpStoreTime := vendorStoreInfo.FakeOpenStop if startOpStoreTime == 0 || endOpStoreTime == 0 { continue } diff --git a/business/jxstore/misc/store_score.go b/business/jxstore/misc/store_score.go index edb6b4ea2..214d9acd3 100644 --- a/business/jxstore/misc/store_score.go +++ b/business/jxstore/misc/store_score.go @@ -263,8 +263,8 @@ func ScoreStoreOpenTime(storeInfo *cms.StoreExt) { finalScore := 0 if isStoreOpen { for _, storeMap := range storeInfo.StoreMaps { - isSyncStoreSku := int(utils.MustInterface2Int64(storeMap["isSync"])) - vendorStoreStatus := int(utils.MustInterface2Int64(storeMap["status"])) + isSyncStoreSku := storeMap.IsSync + vendorStoreStatus := storeMap.Status isVendorStoreOpen := vendorStoreStatus == model.StoreStatusOpened opTimeList := storeInfo.GetOpTimeList() if len(opTimeList) > 0 && isStoreOpen && isVendorStoreOpen && isSyncStoreSku != 0 { @@ -428,8 +428,8 @@ func ScoreFullVendor(storeInfo *cms.StoreExt) { isStoreOpen := storeStatus == model.StoreStatusOpened count := 0 for _, storeMap := range storeInfo.StoreMaps { - isSyncStoreSku := int(utils.MustInterface2Int64(storeMap["isSync"])) - vendorStoreStatus := int(utils.MustInterface2Int64(storeMap["status"])) + isSyncStoreSku := storeMap.IsSync + vendorStoreStatus := storeMap.Status isVendorStoreOpen := vendorStoreStatus == model.StoreStatusOpened opTimeList := storeInfo.GetOpTimeList() if len(opTimeList) > 0 && isStoreOpen && isVendorStoreOpen && isSyncStoreSku != 0 { @@ -569,9 +569,9 @@ func GetFilterStoreListEx(storeList []*cms.StoreExt, storeIDMap map[int]int) (ou continue } } - var tempStoreMaps []map[string]interface{} + var tempStoreMaps []*model.StoreMap for _, vendorStoreInfo := range storeInfo.StoreMaps { - vendorID := int(utils.MustInterface2Int64(vendorStoreInfo["vendorID"])) + vendorID := vendorStoreInfo.VendorID if _, ok := fullVendorList[vendorID]; !ok { continue } From 118ad50abda5f8754c0712fd51091f0548bc98c6 Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 11 Dec 2019 16:27:10 +0800 Subject: [PATCH 4/5] =?UTF-8?q?store=5Fsku=5Fcheck=E5=AF=B9=E4=BA=8Evendor?= =?UTF-8?q?OrgCode=E7=9A=84=E6=AD=A3=E7=A1=AE=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store.go | 1 - business/jxstore/cms/store_sku_check.go | 64 ++++++++++++++----------- business/jxstore/misc/misc2.go | 18 ++++--- 3 files changed, 45 insertions(+), 38 deletions(-) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 32314ea4d..1a378b3d4 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -1190,7 +1190,6 @@ func UpdateStoreVendorMap(ctx *jxcontext.Context, db *dao.DaoDB, storeID, vendor return 0, err } if num > 0 { - // TODO 重算京西商城价 if vendorID != model.VendorIDJX { if valid["pricePercentage"] != nil || valid["pricePercentagePack"] != nil { storeSkuBind := &model.StoreSkuBind{} diff --git a/business/jxstore/cms/store_sku_check.go b/business/jxstore/cms/store_sku_check.go index be5b6108b..f08588711 100644 --- a/business/jxstore/cms/store_sku_check.go +++ b/business/jxstore/cms/store_sku_check.go @@ -17,6 +17,7 @@ import ( "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/globals" + "git.rosy.net.cn/jx-callback/globals/api/apimanager" ) const ( @@ -96,8 +97,9 @@ var ( diffData DiffDataLock depotDiffData DeoptDiffDataLock - multiStoreAllSkuInfoMap map[int]map[int]*partner.SkuNameInfo - multiStoreAllSkuInfoList map[int][]*partner.StoreSkuInfo + multiStoreAllSkuInfoMap map[int]map[string]map[int]*partner.SkuNameInfo + multiStoreAllSkuInfoList map[int]map[string][]*partner.StoreSkuInfo + skuNameInfoList []*partner.SkuNameInfo filterVendorDepotUnSaleSkuIds []int filterJxDepotUnSaleSkuIds []int @@ -166,16 +168,22 @@ func (d *DiffDataLock) InitData() { } func InitMultiStoreData() { - multiStoreAllSkuInfoMap = make(map[int]map[int]*partner.SkuNameInfo) - multiStoreAllSkuInfoList = make(map[int][]*partner.StoreSkuInfo) + multiStoreAllSkuInfoMap = make(map[int]map[string]map[int]*partner.SkuNameInfo) + multiStoreAllSkuInfoList = make(map[int]map[string][]*partner.StoreSkuInfo) } -func GetMultiStoreAllSkuInfoMap(vendorID int) map[int]*partner.SkuNameInfo { - return multiStoreAllSkuInfoMap[vendorID] +func GetMultiStoreAllSkuInfoMap(vendorID int, vendorOrgCode string) (retVal map[int]*partner.SkuNameInfo) { + if multiStoreAllSkuInfoMap[vendorID] != nil { + retVal = multiStoreAllSkuInfoMap[vendorID][vendorOrgCode] + } + return retVal } -func GetMultiStoreAllSkuInfoList(vendorID int) []*partner.StoreSkuInfo { - return multiStoreAllSkuInfoList[vendorID] +func GetMultiStoreAllSkuInfoList(vendorID int, vendorOrgCode string) (retVal []*partner.StoreSkuInfo) { + if multiStoreAllSkuInfoList[vendorID] != nil { + retVal = multiStoreAllSkuInfoList[vendorID][vendorOrgCode] + } + return retVal } //过滤掉平台下架的 @@ -202,24 +210,26 @@ func GetMultiStoreAllSkuInfo(ctx *jxcontext.Context, vendorMap map[int]bool) { } if partner.IsMultiStore(vendorID) { multiHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IMultipleStoresHandler) - // TODO vendorOrgCode处理 - allSkuNameInfoList, err := multiHandler.GetSkus(ctx, "", 0, "") - skuNameInfoList = allSkuNameInfoList - if err != nil { - baseapi.SugarLogger.Errorf("GetMultiStoreAllSkuInfo error:%v", err) - } else { - multiStoreAllSkuInfoList[vendorID] = StoreSkuFullList2BareFilter(allSkuNameInfoList) //map[平台ID:[]StoreSkuInfo1,StoreSkuInfo2...] - tempMap := make(map[int]*partner.SkuNameInfo) - for _, value := range allSkuNameInfoList { - for _, skuInfo := range value.SkuList { - //表示平台商品库未下架的 - if skuInfo.Status > model.SkuStatusDontSale { - filterVendorDepotUnSaleSkuIds = append(filterVendorDepotUnSaleSkuIds, skuInfo.SkuID) - tempMap[skuInfo.SkuID] = value + for _, vendorOrgCode := range apimanager.CurAPIManager.GetAppOrgCodeList(vendorID) { + allSkuNameInfoList, err := multiHandler.GetSkus(ctx, vendorOrgCode, 0, "") + skuNameInfoList = allSkuNameInfoList + if err != nil { + baseapi.SugarLogger.Errorf("GetMultiStoreAllSkuInfo error:%v", err) + } else { + multiStoreAllSkuInfoList[vendorID][vendorOrgCode] = StoreSkuFullList2BareFilter(allSkuNameInfoList) //map[平台ID:[]StoreSkuInfo1,StoreSkuInfo2...] + tempMap := make(map[int]*partner.SkuNameInfo) + for _, value := range allSkuNameInfoList { + for _, skuInfo := range value.SkuList { + //表示平台商品库未下架的 + if skuInfo.Status > model.SkuStatusDontSale { + filterVendorDepotUnSaleSkuIds = append(filterVendorDepotUnSaleSkuIds, skuInfo.SkuID) + tempMap[skuInfo.SkuID] = value + } } } + multiStoreAllSkuInfoMap[vendorID] = make(map[string]map[int]*partner.SkuNameInfo) + multiStoreAllSkuInfoMap[vendorID][vendorOrgCode] = tempMap //map[平台ID][map[skuID1:SkuNameInfo1,skuID2:SkuNameInfo2]...] } - multiStoreAllSkuInfoMap[vendorID] = tempMap //map[平台ID][map[skuID1:SkuNameInfo1,skuID2:SkuNameInfo2]...] } } } @@ -255,8 +265,8 @@ func GetFilterJxSkuInfoMap2(jxSkuInfoList []*model.SkuAndName) map[int]*model.Sk return filterVendorSkuInfoMap } -func GetFilterMultiStoreSkuInfoMap(vendorID int, skuInfoList []*partner.StoreSkuInfo) map[int]*partner.SkuNameInfo { - allSkuInfoMap := GetMultiStoreAllSkuInfoMap(vendorID) +func GetFilterMultiStoreSkuInfoMap(vendorID int, vendorOrgCode string, skuInfoList []*partner.StoreSkuInfo) map[int]*partner.SkuNameInfo { + allSkuInfoMap := GetMultiStoreAllSkuInfoMap(vendorID, vendorOrgCode) filterSkuInfoMap := make(map[int]*partner.SkuNameInfo) for _, value := range skuInfoList { if value.Stock > 0 { @@ -570,12 +580,12 @@ func CheckSkuDiffBetweenJxAndVendor(ctx *jxcontext.Context, vendorIDList []int, if partner.IsMultiStore(vendorID) { singleStoreHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IPurchasePlatformStoreSkuHandler) - allSkuInfoList := GetMultiStoreAllSkuInfoList(vendorID) + allSkuInfoList := GetMultiStoreAllSkuInfoList(vendorID, vendorListValue.VendorOrgCode) skuBareInfoList, err := singleStoreHandler.GetStoreSkusBareInfo(ctx, vendorListValue.VendorOrgCode, task, storeID, vendorStoreID, allSkuInfoList) if err != nil { baseapi.SugarLogger.Infof("CheckSkuDiffBetweenJxAndVendor GetStoreSkusBareInfo error:%v", err) } else if len(skuBareInfoList) > 0 { - filterSkuInfoMap := GetFilterMultiStoreSkuInfoMap(vendorID, skuBareInfoList) //map[京东商品ID:SkuNameInfo] + filterSkuInfoMap := GetFilterMultiStoreSkuInfoMap(vendorID, vendorListValue.VendorOrgCode, skuBareInfoList) //map[京东商品ID:SkuNameInfo] CompareJxAndVendor(vendorID, storeIDStr, vendorStoreID, storeName, filterJxSkuInfoMapMulti, filterSkuInfoMap) } } else { diff --git a/business/jxstore/misc/misc2.go b/business/jxstore/misc/misc2.go index 3b374f0b4..c39f735d3 100644 --- a/business/jxstore/misc/misc2.go +++ b/business/jxstore/misc/misc2.go @@ -103,13 +103,13 @@ func (s *StoreListQueueData) TransferWaitQueueToProcessQueue() { } } -func AddOrDelExtraStoreOptime(ctx *jxcontext.Context, vendorID, storeID int, vendorStoreID string, storeInfo *model.Store, startOpStoreTime, endOpStoreTime int16, needAddTime bool) bool { +func AddOrDelExtraStoreOptime(ctx *jxcontext.Context, vendorID int, vendorOrgCode string, storeID int, vendorStoreID string, storeInfo *model.Store, startOpStoreTime, endOpStoreTime int16, needAddTime bool) bool { opTimeList := storeInfo.GetOpTimeList() if needAddTime { opTimeList = []int16{startOpStoreTime, endOpStoreTime} } handler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IStoreHandler) - return handler.UpdateStoreOpTime(ctx, "", storeID, vendorStoreID, opTimeList) == nil // TODO vendorOrgCode应该用传入的值 + return handler.UpdateStoreOpTime(ctx, vendorOrgCode, storeID, vendorStoreID, opTimeList) == nil } func GetStockValue(isStart bool) int { @@ -142,14 +142,13 @@ func SetSkuStock(isStart bool, storeSkuNameList []*partner.SkuNameInfo) { } } -func SetSpecialSkuStatus(ctx *jxcontext.Context, storeID, vendorID int, vendorStoreID string, storeSkuNameList []*partner.SkuNameInfo) { +func SetSpecialSkuStatus(ctx *jxcontext.Context, vendorID int, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuNameList []*partner.SkuNameInfo) { singleStoreHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler) for _, skuNameInfo := range storeSkuNameList { for _, skuInfo := range skuNameInfo.SkuList { if IsSpecialSku(skuNameInfo.Name) || IsSpecialSku(skuInfo.SkuName) { storeSkuList := []*partner.StoreSkuInfo{&skuInfo.StoreSkuInfo} - // TODO vendorOrgCode - singleStoreHandler.UpdateStoreSkusStatus(ctx, "", storeID, vendorStoreID, storeSkuList, model.SkuStatusNormal) + singleStoreHandler.UpdateStoreSkusStatus(ctx, vendorOrgCode, storeID, vendorStoreID, storeSkuList, model.SkuStatusNormal) } } } @@ -244,24 +243,23 @@ func StartOrEndOpStoreEx(ctx *jxcontext.Context, isStart bool, startTime, endTim baseapi.SugarLogger.Errorf("StartOrEndOpStore GetStoreSkusFullInfo error:%v storeID:%d vendorID:%d vendorStoreID:%s", err, storeID, vendorID, vendorStoreID) } else { SetSkuStock(isStart, storeSkuNameList) - SetSpecialSkuStatus(ctx, storeID, vendorID, vendorStoreID, storeSkuNameList) + SetSpecialSkuStatus(ctx, vendorID, vendorListValue.VendorOrgCode, storeID, vendorStoreID, storeSkuNameList) storeSkuList := putils.StoreSkuFullList2Bare(storeSkuNameList) if vendorID == model.VendorIDMTWM { storeSkuList = GetFilterStoreSkuList(storeSkuList) } if len(storeSkuList) > 0 { if !isStart { - AddOrDelExtraStoreOptime(ctx, vendorID, storeID, vendorStoreID, &storeListValue.Store, startOpStoreTime, endOpStoreTime, false) + AddOrDelExtraStoreOptime(ctx, vendorID, vendorListValue.VendorOrgCode, storeID, vendorStoreID, &storeListValue.Store, startOpStoreTime, endOpStoreTime, false) } _, err = putils.FreeBatchStoreSkuInfo("更新门店商品库存", func(task tasksch.ITask, batchedStoreSkuList []*partner.StoreSkuInfo) (result interface{}, successCount int, err error) { - // TODO vendorOrgCode - _, err = singleStoreHandler.UpdateStoreSkusStock(ctx, "", storeID, vendorStoreID, batchedStoreSkuList) + _, err = singleStoreHandler.UpdateStoreSkusStock(ctx, vendorListValue.VendorOrgCode, storeID, vendorStoreID, batchedStoreSkuList) return nil, 0, err }, ctx, task, storeSkuList, singleStoreHandler.GetStoreSkusBatchSize(partner.FuncUpdateStoreSkusStock), true) if isStart { - AddOrDelExtraStoreOptime(ctx, vendorID, storeID, vendorStoreID, &storeListValue.Store, startOpStoreTime, endOpStoreTime, true) + AddOrDelExtraStoreOptime(ctx, vendorID, vendorListValue.VendorOrgCode, storeID, vendorStoreID, &storeListValue.Store, startOpStoreTime, endOpStoreTime, true) } } } From bc109620951c2ccadec132fa65df37d37c19983f Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 11 Dec 2019 17:29:33 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E4=BF=AE=E5=A4=8DGetActStoreSkuVendorList?= =?UTF-8?q?=E4=B8=ADsqlParams=E7=9A=84=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/dao/act.go | 2 +- business/model/dao/act_test.go | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/business/model/dao/act.go b/business/model/dao/act.go index baf49b436..02800b6a4 100644 --- a/business/model/dao/act.go +++ b/business/model/dao/act.go @@ -116,6 +116,7 @@ func GetActStoreSkuVendorList(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs sql += ` LEFT JOIN store_map t3 ON t3.store_id = t1.store_id AND t3.vendor_id = t2.vendor_id AND t3.deleted_at = ? JOIN sku t4 ON t4.id = t1.sku_id` + sqlParams = append(sqlParams, utils.DefaultTimeValue) if globals.IsUseThingMap { sql += ` LEFT JOIN thing_map t4m ON t4m.thing_id = t4.id AND t4m.thing_type = ? AND t4m.vendor_id = t2.vendor_id AND t4m.vendor_org_code = t3.vendor_org_code AND t4m.deleted_at = ?` @@ -128,7 +129,6 @@ func GetActStoreSkuVendorList(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs WHERE t1.act_id = ? ` sqlParams = append(sqlParams, - utils.DefaultTimeValue, utils.DefaultTimeValue, actID, ) diff --git a/business/model/dao/act_test.go b/business/model/dao/act_test.go index 1acee0c34..7d902cccb 100644 --- a/business/model/dao/act_test.go +++ b/business/model/dao/act_test.go @@ -44,3 +44,10 @@ func TestUpdateActStatusByTime(t *testing.T) { t.Fatal(err) } } + +func TestGetActStoreSkuVendorList(t *testing.T) { + _, _, err := GetActStoreSkuVendorList(GetDB(), 18440, nil, nil, nil, "", 0, 0) + if err != nil { + t.Fatal(err) + } +}