同步京东商城修改
This commit is contained in:
@@ -1092,21 +1092,11 @@ func (v *VendorSync) SyncJdsStoresSkus(ctx *jxcontext.Context, storeIDs []int, i
|
|||||||
func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
||||||
loopMapInfo := batchItemList[0].(*LoopStoreMapInfo)
|
loopMapInfo := batchItemList[0].(*LoopStoreMapInfo)
|
||||||
if handler := v.GetStoreHandler(loopMapInfo.VendorID); handler != nil {
|
if handler := v.GetStoreHandler(loopMapInfo.VendorID); handler != nil {
|
||||||
parallelCount := 5
|
for _, storeMap := range loopMapInfo.StoreMapList {
|
||||||
if model.MultiStoresVendorMap[loopMapInfo.VendorID] == 1 {
|
if storeMap.Status > model.StoreStatusDisabled && storeMap.StoreID != model.JdShopMainStoreID && storeMap.SyncRule != 0 {
|
||||||
parallelCount = 2
|
err = syncJdsStoresSkus(ctx, db, nil, storeMap, isAsync, isContinueWhenError)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
loopStoreTask := tasksch.NewParallelTask(fmt.Sprintf("处理平台%s", model.VendorChineseNames[loopMapInfo.VendorID]),
|
|
||||||
tasksch.NewParallelConfig().SetParallelCount(parallelCount).SetIsContinueWhenError(isContinueWhenError), ctx,
|
|
||||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
|
||||||
storeMap := batchItemList[0].(*model.StoreMap)
|
|
||||||
if storeMap.Status > model.StoreStatusDisabled && storeMap.StoreID != model.JdShopMainStoreID && storeMap.SyncRule != 0 {
|
|
||||||
err = syncJdsStoresSkus(ctx, db, task, storeMap, isAsync, isContinueWhenError)
|
|
||||||
}
|
|
||||||
return nil, err
|
|
||||||
}, loopMapInfo.StoreMapList)
|
|
||||||
t.AddChild(loopStoreTask).Run()
|
|
||||||
_, err = loopStoreTask.GetResult(0)
|
|
||||||
}
|
}
|
||||||
return nil, partner.AddVendorInfo2Err(err, loopMapInfo.VendorID)
|
return nil, partner.AddVendorInfo2Err(err, loopMapInfo.VendorID)
|
||||||
}, isContinueWhenError)
|
}, isContinueWhenError)
|
||||||
@@ -1115,28 +1105,47 @@ func (v *VendorSync) SyncJdsStoresSkus(ctx *jxcontext.Context, storeIDs []int, i
|
|||||||
|
|
||||||
func syncJdsStoresSkus(ctx *jxcontext.Context, db *dao.DaoDB, parentTask tasksch.ITask, storeMap *model.StoreMap, isAsync, isContinueWhenError bool) (err error) {
|
func syncJdsStoresSkus(ctx *jxcontext.Context, db *dao.DaoDB, parentTask tasksch.ITask, storeMap *model.StoreMap, isAsync, isContinueWhenError bool) (err error) {
|
||||||
var (
|
var (
|
||||||
mainSkusMap = make(map[int]*model.StoreSkuBind)
|
mainSkusMap = make(map[int][]*dao.StoreSkuSyncInfo)
|
||||||
skusMap = make(map[int]*model.StoreSkuBind)
|
skusMap = make(map[int][]*dao.StoreSkuSyncInfo)
|
||||||
updateList []*model.StoreSkuBind
|
updateList []*dao.StoreSkuSyncInfo
|
||||||
addList []*model.StoreSkuBind
|
addList []*dao.StoreSkuSyncInfo
|
||||||
skuBindInfos1 []*StoreSkuBindInfo
|
skuBindInfos1 []*StoreSkuBindInfo
|
||||||
skuBindInfos2 []*StoreSkuBindInfo
|
skuBindInfos2 []*StoreSkuBindInfo
|
||||||
)
|
)
|
||||||
storeSkusMain, err := dao.GetStoresSkusInfo(db, []int{model.JdShopMainStoreID}, nil)
|
storeSkusMain, err := dao.GetStoreSkusByNameIDs(db, []int{model.JdShopMainStoreID}, 0)
|
||||||
for _, v := range storeSkusMain {
|
for _, v := range storeSkusMain {
|
||||||
mainSkusMap[v.SkuID] = v
|
mainSkusMap[v.NameID] = append(mainSkusMap[v.NameID], v)
|
||||||
}
|
}
|
||||||
storeSkus, err := dao.GetStoresSkusInfo(db, []int{storeMap.StoreID}, nil)
|
storeSkus, err := dao.GetStoreSkusByNameIDs(db, []int{storeMap.StoreID}, 0)
|
||||||
for _, v := range storeSkus {
|
for _, v := range storeSkus {
|
||||||
skusMap[v.SkuID] = v
|
skusMap[v.NameID] = append(mainSkusMap[v.NameID], v)
|
||||||
if mainSkusMap[v.SkuID] != nil && mainSkusMap[v.SkuID].Status != v.Status {
|
}
|
||||||
updateList = append(updateList, mainSkusMap[v.SkuID])
|
for k, v := range skusMap {
|
||||||
|
if mainSkusMap[k] != nil {
|
||||||
|
flag := false
|
||||||
|
for _, storeSku := range v {
|
||||||
|
if storeSku.StoreSkuStatus == model.StoreSkuBindStatusNormal {
|
||||||
|
flag = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !flag {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
for _, storeSku := range v {
|
||||||
|
for _, storeSkuMain := range mainSkusMap[k] {
|
||||||
|
if storeSkuMain.StoreSkuStatus == model.StoreSkuBindStatusNormal && storeSku.StoreSkuStatus == model.StoreSkuBindStatusDontSale {
|
||||||
|
updateList = append(updateList, storeSkuMain)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for k, v := range mainSkusMap {
|
for k, v := range mainSkusMap {
|
||||||
if skusMap[k] == nil {
|
if skusMap[k] == nil {
|
||||||
if storeMap.SyncRule == 2 {
|
if storeMap.SyncRule == 2 {
|
||||||
addList = append(addList, v)
|
for _, storeSkuMain := range v {
|
||||||
|
addList = append(addList, storeSkuMain)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1149,18 +1158,14 @@ func syncJdsStoresSkus(ctx *jxcontext.Context, db *dao.DaoDB, parentTask tasksch
|
|||||||
|
|
||||||
if len(addList) > 0 {
|
if len(addList) > 0 {
|
||||||
for _, v := range addList {
|
for _, v := range addList {
|
||||||
skuBindInfos2 = append(skuBindInfos2, buildStoreSkuBindInfo(db, storeMap.StoreID, v, false))
|
skuBindInfos2 = append(skuBindInfos2, buildStoreSkuBindInfo(db, storeMap.StoreID, v, true))
|
||||||
}
|
}
|
||||||
_, err = UpdateStoresSkusByBind(ctx, parentTask, skuBindInfos2, isAsync, isContinueWhenError, false)
|
_, err = UpdateStoresSkusByBind(ctx, parentTask, skuBindInfos2, isAsync, isContinueWhenError, false)
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func buildStoreSkuBindInfo(db *dao.DaoDB, storeID int, storeBind *model.StoreSkuBind, isFocus bool) (skuBindInfo *StoreSkuBindInfo) {
|
func buildStoreSkuBindInfo(db *dao.DaoDB, storeID int, storeBind *dao.StoreSkuSyncInfo, isFocus bool) (skuBindInfo *StoreSkuBindInfo) {
|
||||||
result, err := dao.GetSkus(db, []int{storeBind.SkuID}, nil, nil, nil, nil)
|
|
||||||
if err != nil || len(result) == 0 {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
skus := []*StoreSkuBindSkuInfo{
|
skus := []*StoreSkuBindSkuInfo{
|
||||||
&StoreSkuBindSkuInfo{
|
&StoreSkuBindSkuInfo{
|
||||||
SkuID: storeBind.SkuID,
|
SkuID: storeBind.SkuID,
|
||||||
@@ -1168,12 +1173,12 @@ func buildStoreSkuBindInfo(db *dao.DaoDB, storeID int, storeBind *model.StoreSku
|
|||||||
}
|
}
|
||||||
skuBindInfo = &StoreSkuBindInfo{
|
skuBindInfo = &StoreSkuBindInfo{
|
||||||
StoreID: storeID,
|
StoreID: storeID,
|
||||||
NameID: result[0].NameID,
|
NameID: storeBind.NameID,
|
||||||
}
|
}
|
||||||
if isFocus {
|
if isFocus {
|
||||||
skuBindInfo.IsFocus = 1
|
skuBindInfo.IsFocus = 1
|
||||||
}
|
}
|
||||||
if storeBind.Status == model.SkuStatusNormal {
|
if storeBind.StoreSkuStatus == model.SkuStatusNormal {
|
||||||
skus[0].IsSale = 1
|
skus[0].IsSale = 1
|
||||||
} else {
|
} else {
|
||||||
skus[0].IsSale = -1
|
skus[0].IsSale = -1
|
||||||
|
|||||||
@@ -393,7 +393,7 @@ func doDailyWork() {
|
|||||||
dao.SetStoresMapSyncStatus(dao.GetDB(), nil, nil, model.SyncFlagStoreStatus)
|
dao.SetStoresMapSyncStatus(dao.GetDB(), nil, nil, model.SyncFlagStoreStatus)
|
||||||
cms.CurVendorSync.SyncStore2(jxcontext.AdminCtx, dao.GetDB(), nil, nil, true, true)
|
cms.CurVendorSync.SyncStore2(jxcontext.AdminCtx, dao.GetDB(), nil, nil, true, true)
|
||||||
|
|
||||||
// syncStoreSku()
|
syncStoreSku()
|
||||||
InitEx()
|
InitEx()
|
||||||
cms.SyncStoresCourierInfo(jxcontext.AdminCtx, nil, false, true)
|
cms.SyncStoresCourierInfo(jxcontext.AdminCtx, nil, false, true)
|
||||||
netprinter.RebindAllPrinters(jxcontext.AdminCtx, false, true)
|
netprinter.RebindAllPrinters(jxcontext.AdminCtx, false, true)
|
||||||
|
|||||||
@@ -965,17 +965,21 @@ func DeleteSkuNameExPrefixOverdue(db *DaoDB) (num int64, err error) {
|
|||||||
|
|
||||||
func GetStoreSkusByNameIDs(db *DaoDB, storeIDs []int, nameID int) (skuList []*StoreSkuSyncInfo, err error) {
|
func GetStoreSkusByNameIDs(db *DaoDB, storeIDs []int, nameID int) (skuList []*StoreSkuSyncInfo, err error) {
|
||||||
sql := `
|
sql := `
|
||||||
SELECT a.*,c.unit,c.name
|
SELECT a.*, c.unit, c.name, b.name_id, a.status store_sku_status
|
||||||
FROM store_sku_bind a
|
FROM store_sku_bind a
|
||||||
JOIN sku b ON a.sku_id = b.id
|
JOIN sku b ON a.sku_id = b.id
|
||||||
JOIN sku_name c ON b.name_id = c.id
|
JOIN sku_name c ON b.name_id = c.id
|
||||||
WHERE b.name_id = ?
|
WHERE 1=1
|
||||||
AND a.deleted_at = ?
|
AND a.deleted_at = ?
|
||||||
`
|
`
|
||||||
sqlParams := []interface{}{
|
sqlParams := []interface{}{
|
||||||
nameID,
|
nameID,
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
}
|
}
|
||||||
|
if nameID != 0 {
|
||||||
|
sql += " AND b.name_id = ?"
|
||||||
|
sqlParams = append(sqlParams, nameID)
|
||||||
|
}
|
||||||
if len(storeIDs) > 0 {
|
if len(storeIDs) > 0 {
|
||||||
sql += " AND a.store_id in (" + GenQuestionMarks(len(storeIDs)) + ")"
|
sql += " AND a.store_id in (" + GenQuestionMarks(len(storeIDs)) + ")"
|
||||||
sqlParams = append(sqlParams, storeIDs)
|
sqlParams = append(sqlParams, storeIDs)
|
||||||
|
|||||||
Reference in New Issue
Block a user