diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index 905bfd148..97f03fb23 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -177,7 +177,7 @@ func AddCategory(ctx *jxcontext.Context, cat *model.SkuCategory, userName string return nil, err } if cat.IsExdSpec == model.NO { - if err = OnCreateThing(ctx, db, nil, int64(cat.ID), model.ThingTypeCategory, model.SyncFlagNewMask); err != nil { + if err = OnCreateThing(ctx, db, nil, int64(cat.ID), model.ThingTypeCategory, model.SyncFlagNewMask, false); err != nil { dao.Rollback(db) return nil, err } @@ -884,7 +884,7 @@ func AddSkuName(ctx *jxcontext.Context, skuNameExt *model.SkuNameExt, userName s dao.Rollback(db) return nil, err } - if err = OnCreateThing(ctx, db, nil, int64(skuNameExt.SkuName.ID), model.ThingTypeSkuName, model.SyncFlagNewMask); err != nil { + if err = OnCreateThing(ctx, db, nil, int64(skuNameExt.SkuName.ID), model.ThingTypeSkuName, model.SyncFlagNewMask, false); err != nil { dao.Rollback(db) return nil, err } @@ -903,7 +903,7 @@ func AddSkuName(ctx *jxcontext.Context, skuNameExt *model.SkuNameExt, userName s return nil, err } if sku.EclpID == "" { - if err = OnCreateThing(ctx, db, nil, int64(sku.ID), model.ThingTypeSku, 0); err != nil { + if err = OnCreateThing(ctx, db, nil, int64(sku.ID), model.ThingTypeSku, 0, false); err != nil { dao.Rollback(db) return nil, err } @@ -1249,7 +1249,7 @@ func AddSku(ctx *jxcontext.Context, nameID int, sku *model.Sku, userName string) dao.Rollback(db) return nil, err } - if err = OnCreateThing(ctx, db, nil, int64(sku.ID), model.ThingTypeSku, 0); err != nil { + if err = OnCreateThing(ctx, db, nil, int64(sku.ID), model.ThingTypeSku, 0, false); err != nil { dao.Rollback(db) return nil, err } @@ -2761,6 +2761,7 @@ func AddVendorCategoryMap(ctx *jxcontext.Context, vendorCategoryMap *model.Vendo return nil, fmt.Errorf("已存在绑定的京西分类,分类名:[%v]", storeCatMaps[0].VendorCategoryName) } } + vendorOrgCodes, _ := dao.GetVendorOrgCode(db, vendorCategoryMap.VendorID, vendorCategoryMap.VendorOrgCode, model.VendorOrgTypePlatform) vendorCategoryMap.VendorCategoryName = strings.Trim(vendorCategoryMap.VendorCategoryName, " ") dao.WrapAddIDCULDEntity(vendorCategoryMap, ctx.GetUserName()) dao.Begin(db) @@ -2774,6 +2775,13 @@ func AddVendorCategoryMap(ctx *jxcontext.Context, vendorCategoryMap *model.Vendo dao.Rollback(db) return nil, err } + //如果传了京西绑定,要去thingmap里改同步标志 + if vendorCategoryMap.CategoryID != 0 { + if err = OnCreateThing(ctx, db, vendorOrgCodes, int64(vendorCategoryMap.CategoryID), model.ThingTypeCategory, model.SyncFlagNewMask, true); err != nil { + dao.Rollback(db) + return nil, err + } + } dao.Commit(db) result = vendorCategoryMap if vendorCategoryMap.CategoryID != 0 { @@ -2910,6 +2918,7 @@ func LoadStoreVendorCategories(ctx *jxcontext.Context, vendorOrgCode string, ven if len(storeCats) == 0 { return fmt.Errorf("未查询到该门店有门店分类,请重新选择! [%v]", storeID) } + vendorOrgCodes, _ := dao.GetVendorOrgCode(db, vendorID, vendorOrgCode, model.VendorOrgTypePlatform) dao.Begin(db) defer func() { if r := recover(); r != nil { @@ -2947,12 +2956,7 @@ func LoadStoreVendorCategories(ctx *jxcontext.Context, vendorOrgCode string, ven } dao.Commit(db) for _, v := range storeCats { - OnUpdateThing(ctx, db, []*MultiStoreVendorInfo{ - &MultiStoreVendorInfo{ - VendorID: vendorID, - OrgCode: vendorOrgCode, - }, - }, int64(v.CategoryID), model.ThingTypeCategory) + OnUpdateThing(ctx, db, vendorOrgCodes, int64(v.CategoryID), model.ThingTypeCategory) } return err } diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 6281e9351..1a1e684fc 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -1245,6 +1245,7 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs list1, _ := dao.GetStoresMapList(db, []int{model.VendorIDJD}, []int{storeID}, nil, model.StoreStatusAll, 1, "", "", "") //表示这个门店绑定了京东 if len(list1) > 0 { + vendorOrgCodes, _ := dao.GetVendorOrgCode(db, model.VendorIDJD, list1[0].VendorOrgCode, model.VendorOrgTypePlatform) //thingmap里肯定存在,再判断有没有同步上去 thingMaps, _ := dao.GetThingMapList(db, model.ThingTypeSku, []int{model.VendorIDJD}, []int{v.RealSkuID}, []string{list1[0].VendorOrgCode}) if len(thingMaps) > 0 { @@ -1254,24 +1255,14 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs if !model.IsSyncStatusNew(thingMaps[0].SyncStatus) { isSyncSkus = true appCodeList = append(appCodeList, list1[0].VendorOrgCode) - OnCreateThing(ctx, db, []*MultiStoreVendorInfo{ - &MultiStoreVendorInfo{ - VendorID: model.VendorIDJD, - OrgCode: list1[0].VendorOrgCode, - }, - }, int64(v.RealSkuID), model.ThingTypeSku, model.SyncFlagNewMask) + OnCreateThing(ctx, db, vendorOrgCodes, int64(v.RealSkuID), model.ThingTypeSku, model.SyncFlagNewMask, false) } } } else { //万一不存在 isSyncSkus = true appCodeList = append(appCodeList, list1[0].VendorOrgCode) - OnCreateThing(ctx, db, []*MultiStoreVendorInfo{ - &MultiStoreVendorInfo{ - VendorID: model.VendorIDJD, - OrgCode: list1[0].VendorOrgCode, - }, - }, int64(v.RealSkuID), model.ThingTypeSku, model.SyncFlagNewMask) + OnCreateThing(ctx, db, vendorOrgCodes, int64(v.RealSkuID), model.ThingTypeSku, model.SyncFlagNewMask, false) } } } diff --git a/business/jxstore/cms/sync2.go b/business/jxstore/cms/sync2.go index 46e33f1e2..b125d2bb7 100644 --- a/business/jxstore/cms/sync2.go +++ b/business/jxstore/cms/sync2.go @@ -264,12 +264,12 @@ func getThingMap(db *dao.DaoDB, thingMap *model.ThingMap) (err error) { return dao.GetEntity(db, thingMap, "ThingID", "ThingType", "VendorID", "VendorOrgCode", model.FieldDeletedAt) } -func OnCreateThing(ctx *jxcontext.Context, db *dao.DaoDB, vendorInfoList []*MultiStoreVendorInfo, thingID int64, thingType, syncFlag int8) (err error) { +func OnCreateThing(ctx *jxcontext.Context, db *dao.DaoDB, vendorInfoList []*model.VendorOrgCode, thingID int64, thingType, syncFlag int8, vendorFlag bool) (err error) { if thingType == model.ThingTypeSkuName { return nil } if len(vendorInfoList) == 0 { - vendorInfoList = getMultiStoreVendorInfoList() + vendorInfoList, err = dao.GetVendorOrgCode(db, model.VendorIDJD, "", model.VendorOrgTypePlatform) } errList := errlist.New() for _, v := range vendorInfoList { @@ -277,9 +277,14 @@ func OnCreateThing(ctx *jxcontext.Context, db *dao.DaoDB, vendorInfoList []*Mult ThingID: thingID, ThingType: thingType, VendorID: v.VendorID, - VendorOrgCode: v.OrgCode, - SyncStatus: syncFlag, + VendorOrgCode: v.VendorOrgCode, } + if thingType == model.ThingTypeCategory && !vendorFlag { + if v.IsJxCat == model.YES { + syncFlag = 0 + } + } + thingMap.SyncStatus = syncFlag dao.WrapAddIDCULDEntity(thingMap, ctx.GetUserName()) if err2 := dao.CreateEntity(db, thingMap); err2 != nil { if dao.IsDuplicateError(err2) { @@ -294,12 +299,12 @@ func OnCreateThing(ctx *jxcontext.Context, db *dao.DaoDB, vendorInfoList []*Mult return err } -func onUpdateThing(ctx *jxcontext.Context, db *dao.DaoDB, vendorInfoList []*MultiStoreVendorInfo, thingID int64, thingType int8, syncStatus int8) (err error) { +func onUpdateThing(ctx *jxcontext.Context, db *dao.DaoDB, vendorInfoList []*model.VendorOrgCode, thingID int64, thingType int8, syncStatus int8) (err error) { if thingType == model.ThingTypeSkuName { return nil } if len(vendorInfoList) == 0 { - vendorInfoList = getMultiStoreVendorInfoList() + vendorInfoList, err = dao.GetVendorOrgCode(db, model.VendorIDJD, "", model.VendorOrgTypePlatform) } errList := errlist.New() for _, v := range vendorInfoList { @@ -307,7 +312,7 @@ func onUpdateThing(ctx *jxcontext.Context, db *dao.DaoDB, vendorInfoList []*Mult ThingID: thingID, ThingType: thingType, VendorID: v.VendorID, - VendorOrgCode: v.OrgCode, + VendorOrgCode: v.VendorOrgCode, } thingMap.DeletedAt = utils.DefaultTimeValue if err2 := getThingMap(db, thingMap); err2 == nil { @@ -325,7 +330,7 @@ func onUpdateThing(ctx *jxcontext.Context, db *dao.DaoDB, vendorInfoList []*Mult return err } -func OnUpdateThing(ctx *jxcontext.Context, db *dao.DaoDB, vendorInfoList []*MultiStoreVendorInfo, thingID int64, thingType int8) (err error) { +func OnUpdateThing(ctx *jxcontext.Context, db *dao.DaoDB, vendorInfoList []*model.VendorOrgCode, thingID int64, thingType int8) (err error) { return onUpdateThing(ctx, db, vendorInfoList, thingID, thingType, model.SyncFlagModifiedMask) } @@ -451,12 +456,7 @@ func amendAndPruneVendorStuff(ctx *jxcontext.Context, parentTask tasksch.ITask, return "", fmt.Errorf("平台:%s不支持此操作", model.VendorChineseNames[vendorID]) } db := dao.GetDB() - vendorInfo := []*MultiStoreVendorInfo{ - &MultiStoreVendorInfo{ - VendorID: vendorID, - OrgCode: vendorOrgCode, - }, - } + vendorOrgCodes, _ := dao.GetVendorOrgCode(db, vendorID, vendorOrgCode, model.VendorOrgTypePlatform) var sku2Delete []*partner.StoreSkuInfo var cat2Delete []*partner.BareCategoryInfo task := tasksch.NewParallelTask(fmt.Sprintf("平台:%s,账号:%s上的商品与商家分类", model.VendorChineseNames[vendorID], vendorOrgCode), @@ -518,17 +518,17 @@ func amendAndPruneVendorStuff(ctx *jxcontext.Context, parentTask tasksch.ITask, if !model.IsSyncStatusDelete(v.SkuSyncStatus) { if remoteSkuMap[v.VendorSkuID] == 0 { if !model.IsSyncStatusNew(v.SkuSyncStatus) { - OnCreateThing(ctx, db, vendorInfo, int64(v.SkuID), model.ThingTypeSku, getSyncFlag(v.SkuID)) + OnCreateThing(ctx, db, vendorOrgCodes, int64(v.SkuID), model.ThingTypeSku, getSyncFlag(v.SkuID), false) } } else if isForceUpdate { - OnUpdateThing(ctx, db, vendorInfo, int64(v.SkuID), model.ThingTypeSku) + OnUpdateThing(ctx, db, vendorOrgCodes, int64(v.SkuID), model.ThingTypeSku) } } } else { //表示根据某门店的门店商品同步京东商品库中,这个门店关注并可售了这个商品,插到thingmap里同步标志是待创建(SyncFlagNewMask)才会创建 //若该门店没关注可售,那插到thingmap里的话就该同步标志为0,就不会创建 //getSyncFlag - OnCreateThing(ctx, db, vendorInfo, int64(v.SkuID), model.ThingTypeSku, getSyncFlag(v.SkuID)) + OnCreateThing(ctx, db, vendorOrgCodes, int64(v.SkuID), model.ThingTypeSku, getSyncFlag(v.SkuID), false) } } } @@ -567,14 +567,14 @@ func amendAndPruneVendorStuff(ctx *jxcontext.Context, parentTask tasksch.ITask, if !model.IsSyncStatusDelete(v.CatSyncStatus) { if remoteCatMap[v.VendorCatID] == 0 { if !model.IsSyncStatusNew(v.CatSyncStatus) { - OnCreateThing(ctx, db, vendorInfo, int64(v.ID), model.ThingTypeCategory, model.SyncFlagNewMask) + OnCreateThing(ctx, db, vendorOrgCodes, int64(v.ID), model.ThingTypeCategory, model.SyncFlagNewMask, false) } } else if isForceUpdate && !model.IsSyncStatusUpdate(v.CatSyncStatus) { - OnUpdateThing(ctx, db, vendorInfo, int64(v.ID), model.ThingTypeCategory) + OnUpdateThing(ctx, db, vendorOrgCodes, int64(v.ID), model.ThingTypeCategory) } } } else { - OnCreateThing(ctx, db, vendorInfo, int64(v.ID), model.ThingTypeCategory, model.SyncFlagNewMask) + OnCreateThing(ctx, db, vendorOrgCodes, int64(v.ID), model.ThingTypeCategory, model.SyncFlagNewMask, false) } } } diff --git a/business/model/dao/store.go b/business/model/dao/store.go index cc47ec941..d73634c81 100644 --- a/business/model/dao/store.go +++ b/business/model/dao/store.go @@ -790,6 +790,7 @@ func GetStoreCategoryMap(db *DaoDB, parentID, level, storeID, categoryID int) (s sql += " AND a.category_id = ?" sqlParams = append(sqlParams, categoryID) } + sql += " AND ORDER BY a.level, a.store_category_seq" err = GetRows(db, &storeCatMaps, sql, sqlParams) if err != nil { return nil, err