store_sku_check对于vendorOrgCode的正确依赖

This commit is contained in:
gazebo
2019-12-11 16:27:10 +08:00
parent ef5ec63951
commit 118ad50abd
3 changed files with 45 additions and 38 deletions

View File

@@ -1190,7 +1190,6 @@ func UpdateStoreVendorMap(ctx *jxcontext.Context, db *dao.DaoDB, storeID, vendor
return 0, err return 0, err
} }
if num > 0 { if num > 0 {
// TODO 重算京西商城价
if vendorID != model.VendorIDJX { if vendorID != model.VendorIDJX {
if valid["pricePercentage"] != nil || valid["pricePercentagePack"] != nil { if valid["pricePercentage"] != nil || valid["pricePercentagePack"] != nil {
storeSkuBind := &model.StoreSkuBind{} storeSkuBind := &model.StoreSkuBind{}

View File

@@ -17,6 +17,7 @@ import (
"git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/api/apimanager"
) )
const ( const (
@@ -96,8 +97,9 @@ var (
diffData DiffDataLock diffData DiffDataLock
depotDiffData DeoptDiffDataLock depotDiffData DeoptDiffDataLock
multiStoreAllSkuInfoMap map[int]map[int]*partner.SkuNameInfo multiStoreAllSkuInfoMap map[int]map[string]map[int]*partner.SkuNameInfo
multiStoreAllSkuInfoList map[int][]*partner.StoreSkuInfo multiStoreAllSkuInfoList map[int]map[string][]*partner.StoreSkuInfo
skuNameInfoList []*partner.SkuNameInfo skuNameInfoList []*partner.SkuNameInfo
filterVendorDepotUnSaleSkuIds []int filterVendorDepotUnSaleSkuIds []int
filterJxDepotUnSaleSkuIds []int filterJxDepotUnSaleSkuIds []int
@@ -166,16 +168,22 @@ func (d *DiffDataLock) InitData() {
} }
func InitMultiStoreData() { func InitMultiStoreData() {
multiStoreAllSkuInfoMap = make(map[int]map[int]*partner.SkuNameInfo) multiStoreAllSkuInfoMap = make(map[int]map[string]map[int]*partner.SkuNameInfo)
multiStoreAllSkuInfoList = make(map[int][]*partner.StoreSkuInfo) multiStoreAllSkuInfoList = make(map[int]map[string][]*partner.StoreSkuInfo)
} }
func GetMultiStoreAllSkuInfoMap(vendorID int) map[int]*partner.SkuNameInfo { func GetMultiStoreAllSkuInfoMap(vendorID int, vendorOrgCode string) (retVal map[int]*partner.SkuNameInfo) {
return multiStoreAllSkuInfoMap[vendorID] if multiStoreAllSkuInfoMap[vendorID] != nil {
retVal = multiStoreAllSkuInfoMap[vendorID][vendorOrgCode]
}
return retVal
} }
func GetMultiStoreAllSkuInfoList(vendorID int) []*partner.StoreSkuInfo { func GetMultiStoreAllSkuInfoList(vendorID int, vendorOrgCode string) (retVal []*partner.StoreSkuInfo) {
return multiStoreAllSkuInfoList[vendorID] 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) { if partner.IsMultiStore(vendorID) {
multiHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IMultipleStoresHandler) multiHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IMultipleStoresHandler)
// TODO vendorOrgCode处理 for _, vendorOrgCode := range apimanager.CurAPIManager.GetAppOrgCodeList(vendorID) {
allSkuNameInfoList, err := multiHandler.GetSkus(ctx, "", 0, "") allSkuNameInfoList, err := multiHandler.GetSkus(ctx, vendorOrgCode, 0, "")
skuNameInfoList = allSkuNameInfoList skuNameInfoList = allSkuNameInfoList
if err != nil { if err != nil {
baseapi.SugarLogger.Errorf("GetMultiStoreAllSkuInfo error:%v", err) baseapi.SugarLogger.Errorf("GetMultiStoreAllSkuInfo error:%v", err)
} else { } else {
multiStoreAllSkuInfoList[vendorID] = StoreSkuFullList2BareFilter(allSkuNameInfoList) //map[平台ID[]StoreSkuInfo1,StoreSkuInfo2...] multiStoreAllSkuInfoList[vendorID][vendorOrgCode] = StoreSkuFullList2BareFilter(allSkuNameInfoList) //map[平台ID[]StoreSkuInfo1,StoreSkuInfo2...]
tempMap := make(map[int]*partner.SkuNameInfo) tempMap := make(map[int]*partner.SkuNameInfo)
for _, value := range allSkuNameInfoList { for _, value := range allSkuNameInfoList {
for _, skuInfo := range value.SkuList { for _, skuInfo := range value.SkuList {
//表示平台商品库未下架的 //表示平台商品库未下架的
if skuInfo.Status > model.SkuStatusDontSale { if skuInfo.Status > model.SkuStatusDontSale {
filterVendorDepotUnSaleSkuIds = append(filterVendorDepotUnSaleSkuIds, skuInfo.SkuID) filterVendorDepotUnSaleSkuIds = append(filterVendorDepotUnSaleSkuIds, skuInfo.SkuID)
tempMap[skuInfo.SkuID] = value tempMap[skuInfo.SkuID] = value
}
} }
} }
multiStoreAllSkuInfoMap[vendorID] = make(map[string]map[int]*partner.SkuNameInfo)
multiStoreAllSkuInfoMap[vendorID][vendorOrgCode] = tempMap //map[平台ID][map[skuID1SkuNameInfo1skuID2SkuNameInfo2]...]
} }
multiStoreAllSkuInfoMap[vendorID] = tempMap //map[平台ID][map[skuID1SkuNameInfo1skuID2SkuNameInfo2]...]
} }
} }
} }
@@ -255,8 +265,8 @@ func GetFilterJxSkuInfoMap2(jxSkuInfoList []*model.SkuAndName) map[int]*model.Sk
return filterVendorSkuInfoMap return filterVendorSkuInfoMap
} }
func GetFilterMultiStoreSkuInfoMap(vendorID int, skuInfoList []*partner.StoreSkuInfo) map[int]*partner.SkuNameInfo { func GetFilterMultiStoreSkuInfoMap(vendorID int, vendorOrgCode string, skuInfoList []*partner.StoreSkuInfo) map[int]*partner.SkuNameInfo {
allSkuInfoMap := GetMultiStoreAllSkuInfoMap(vendorID) allSkuInfoMap := GetMultiStoreAllSkuInfoMap(vendorID, vendorOrgCode)
filterSkuInfoMap := make(map[int]*partner.SkuNameInfo) filterSkuInfoMap := make(map[int]*partner.SkuNameInfo)
for _, value := range skuInfoList { for _, value := range skuInfoList {
if value.Stock > 0 { if value.Stock > 0 {
@@ -570,12 +580,12 @@ func CheckSkuDiffBetweenJxAndVendor(ctx *jxcontext.Context, vendorIDList []int,
if partner.IsMultiStore(vendorID) { if partner.IsMultiStore(vendorID) {
singleStoreHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IPurchasePlatformStoreSkuHandler) 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) skuBareInfoList, err := singleStoreHandler.GetStoreSkusBareInfo(ctx, vendorListValue.VendorOrgCode, task, storeID, vendorStoreID, allSkuInfoList)
if err != nil { if err != nil {
baseapi.SugarLogger.Infof("CheckSkuDiffBetweenJxAndVendor GetStoreSkusBareInfo error:%v", err) baseapi.SugarLogger.Infof("CheckSkuDiffBetweenJxAndVendor GetStoreSkusBareInfo error:%v", err)
} else if len(skuBareInfoList) > 0 { } 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) CompareJxAndVendor(vendorID, storeIDStr, vendorStoreID, storeName, filterJxSkuInfoMapMulti, filterSkuInfoMap)
} }
} else { } else {

View File

@@ -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() opTimeList := storeInfo.GetOpTimeList()
if needAddTime { if needAddTime {
opTimeList = []int16{startOpStoreTime, endOpStoreTime} opTimeList = []int16{startOpStoreTime, endOpStoreTime}
} }
handler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IStoreHandler) 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 { 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) singleStoreHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler)
for _, skuNameInfo := range storeSkuNameList { for _, skuNameInfo := range storeSkuNameList {
for _, skuInfo := range skuNameInfo.SkuList { for _, skuInfo := range skuNameInfo.SkuList {
if IsSpecialSku(skuNameInfo.Name) || IsSpecialSku(skuInfo.SkuName) { if IsSpecialSku(skuNameInfo.Name) || IsSpecialSku(skuInfo.SkuName) {
storeSkuList := []*partner.StoreSkuInfo{&skuInfo.StoreSkuInfo} storeSkuList := []*partner.StoreSkuInfo{&skuInfo.StoreSkuInfo}
// TODO vendorOrgCode singleStoreHandler.UpdateStoreSkusStatus(ctx, vendorOrgCode, storeID, vendorStoreID, storeSkuList, model.SkuStatusNormal)
singleStoreHandler.UpdateStoreSkusStatus(ctx, "", 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) baseapi.SugarLogger.Errorf("StartOrEndOpStore GetStoreSkusFullInfo error:%v storeID:%d vendorID:%d vendorStoreID:%s", err, storeID, vendorID, vendorStoreID)
} else { } else {
SetSkuStock(isStart, storeSkuNameList) SetSkuStock(isStart, storeSkuNameList)
SetSpecialSkuStatus(ctx, storeID, vendorID, vendorStoreID, storeSkuNameList) SetSpecialSkuStatus(ctx, vendorID, vendorListValue.VendorOrgCode, storeID, vendorStoreID, storeSkuNameList)
storeSkuList := putils.StoreSkuFullList2Bare(storeSkuNameList) storeSkuList := putils.StoreSkuFullList2Bare(storeSkuNameList)
if vendorID == model.VendorIDMTWM { if vendorID == model.VendorIDMTWM {
storeSkuList = GetFilterStoreSkuList(storeSkuList) storeSkuList = GetFilterStoreSkuList(storeSkuList)
} }
if len(storeSkuList) > 0 { if len(storeSkuList) > 0 {
if !isStart { 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) { _, err = putils.FreeBatchStoreSkuInfo("更新门店商品库存", func(task tasksch.ITask, batchedStoreSkuList []*partner.StoreSkuInfo) (result interface{}, successCount int, err error) {
// TODO vendorOrgCode _, err = singleStoreHandler.UpdateStoreSkusStock(ctx, vendorListValue.VendorOrgCode, storeID, vendorStoreID, batchedStoreSkuList)
_, err = singleStoreHandler.UpdateStoreSkusStock(ctx, "", storeID, vendorStoreID, batchedStoreSkuList)
return nil, 0, err return nil, 0, err
}, ctx, task, storeSkuList, singleStoreHandler.GetStoreSkusBatchSize(partner.FuncUpdateStoreSkusStock), true) }, ctx, task, storeSkuList, singleStoreHandler.GetStoreSkusBatchSize(partner.FuncUpdateStoreSkusStock), true)
if isStart { if isStart {
AddOrDelExtraStoreOptime(ctx, vendorID, storeID, vendorStoreID, &storeListValue.Store, startOpStoreTime, endOpStoreTime, true) AddOrDelExtraStoreOptime(ctx, vendorID, vendorListValue.VendorOrgCode, storeID, vendorStoreID, &storeListValue.Store, startOpStoreTime, endOpStoreTime, true)
} }
} }
} }