This commit is contained in:
苏尹岚
2021-01-28 16:45:56 +08:00
parent 61f32cb7a6
commit 4724d57094
4 changed files with 38 additions and 42 deletions

View File

@@ -177,7 +177,7 @@ func AddCategory(ctx *jxcontext.Context, cat *model.SkuCategory, userName string
return nil, err return nil, err
} }
if cat.IsExdSpec == model.NO { 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) dao.Rollback(db)
return nil, err return nil, err
} }
@@ -884,7 +884,7 @@ func AddSkuName(ctx *jxcontext.Context, skuNameExt *model.SkuNameExt, userName s
dao.Rollback(db) dao.Rollback(db)
return nil, err 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) dao.Rollback(db)
return nil, err return nil, err
} }
@@ -903,7 +903,7 @@ func AddSkuName(ctx *jxcontext.Context, skuNameExt *model.SkuNameExt, userName s
return nil, err return nil, err
} }
if sku.EclpID == "" { 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) dao.Rollback(db)
return nil, err return nil, err
} }
@@ -1249,7 +1249,7 @@ func AddSku(ctx *jxcontext.Context, nameID int, sku *model.Sku, userName string)
dao.Rollback(db) dao.Rollback(db)
return nil, err 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) dao.Rollback(db)
return nil, err return nil, err
} }
@@ -2761,6 +2761,7 @@ func AddVendorCategoryMap(ctx *jxcontext.Context, vendorCategoryMap *model.Vendo
return nil, fmt.Errorf("已存在绑定的京西分类,分类名:[%v]", storeCatMaps[0].VendorCategoryName) return nil, fmt.Errorf("已存在绑定的京西分类,分类名:[%v]", storeCatMaps[0].VendorCategoryName)
} }
} }
vendorOrgCodes, _ := dao.GetVendorOrgCode(db, vendorCategoryMap.VendorID, vendorCategoryMap.VendorOrgCode, model.VendorOrgTypePlatform)
vendorCategoryMap.VendorCategoryName = strings.Trim(vendorCategoryMap.VendorCategoryName, " ") vendorCategoryMap.VendorCategoryName = strings.Trim(vendorCategoryMap.VendorCategoryName, " ")
dao.WrapAddIDCULDEntity(vendorCategoryMap, ctx.GetUserName()) dao.WrapAddIDCULDEntity(vendorCategoryMap, ctx.GetUserName())
dao.Begin(db) dao.Begin(db)
@@ -2774,6 +2775,13 @@ func AddVendorCategoryMap(ctx *jxcontext.Context, vendorCategoryMap *model.Vendo
dao.Rollback(db) dao.Rollback(db)
return nil, err 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) dao.Commit(db)
result = vendorCategoryMap result = vendorCategoryMap
if vendorCategoryMap.CategoryID != 0 { if vendorCategoryMap.CategoryID != 0 {
@@ -2910,6 +2918,7 @@ func LoadStoreVendorCategories(ctx *jxcontext.Context, vendorOrgCode string, ven
if len(storeCats) == 0 { if len(storeCats) == 0 {
return fmt.Errorf("未查询到该门店有门店分类,请重新选择! [%v]", storeID) return fmt.Errorf("未查询到该门店有门店分类,请重新选择! [%v]", storeID)
} }
vendorOrgCodes, _ := dao.GetVendorOrgCode(db, vendorID, vendorOrgCode, model.VendorOrgTypePlatform)
dao.Begin(db) dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
@@ -2947,12 +2956,7 @@ func LoadStoreVendorCategories(ctx *jxcontext.Context, vendorOrgCode string, ven
} }
dao.Commit(db) dao.Commit(db)
for _, v := range storeCats { for _, v := range storeCats {
OnUpdateThing(ctx, db, []*MultiStoreVendorInfo{ OnUpdateThing(ctx, db, vendorOrgCodes, int64(v.CategoryID), model.ThingTypeCategory)
&MultiStoreVendorInfo{
VendorID: vendorID,
OrgCode: vendorOrgCode,
},
}, int64(v.CategoryID), model.ThingTypeCategory)
} }
return err return err
} }

View File

@@ -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, "", "", "") list1, _ := dao.GetStoresMapList(db, []int{model.VendorIDJD}, []int{storeID}, nil, model.StoreStatusAll, 1, "", "", "")
//表示这个门店绑定了京东 //表示这个门店绑定了京东
if len(list1) > 0 { if len(list1) > 0 {
vendorOrgCodes, _ := dao.GetVendorOrgCode(db, model.VendorIDJD, list1[0].VendorOrgCode, model.VendorOrgTypePlatform)
//thingmap里肯定存在再判断有没有同步上去 //thingmap里肯定存在再判断有没有同步上去
thingMaps, _ := dao.GetThingMapList(db, model.ThingTypeSku, []int{model.VendorIDJD}, []int{v.RealSkuID}, []string{list1[0].VendorOrgCode}) thingMaps, _ := dao.GetThingMapList(db, model.ThingTypeSku, []int{model.VendorIDJD}, []int{v.RealSkuID}, []string{list1[0].VendorOrgCode})
if len(thingMaps) > 0 { if len(thingMaps) > 0 {
@@ -1254,24 +1255,14 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
if !model.IsSyncStatusNew(thingMaps[0].SyncStatus) { if !model.IsSyncStatusNew(thingMaps[0].SyncStatus) {
isSyncSkus = true isSyncSkus = true
appCodeList = append(appCodeList, list1[0].VendorOrgCode) appCodeList = append(appCodeList, list1[0].VendorOrgCode)
OnCreateThing(ctx, db, []*MultiStoreVendorInfo{ OnCreateThing(ctx, db, vendorOrgCodes, int64(v.RealSkuID), model.ThingTypeSku, model.SyncFlagNewMask, false)
&MultiStoreVendorInfo{
VendorID: model.VendorIDJD,
OrgCode: list1[0].VendorOrgCode,
},
}, int64(v.RealSkuID), model.ThingTypeSku, model.SyncFlagNewMask)
} }
} }
} else { } else {
//万一不存在 //万一不存在
isSyncSkus = true isSyncSkus = true
appCodeList = append(appCodeList, list1[0].VendorOrgCode) appCodeList = append(appCodeList, list1[0].VendorOrgCode)
OnCreateThing(ctx, db, []*MultiStoreVendorInfo{ OnCreateThing(ctx, db, vendorOrgCodes, int64(v.RealSkuID), model.ThingTypeSku, model.SyncFlagNewMask, false)
&MultiStoreVendorInfo{
VendorID: model.VendorIDJD,
OrgCode: list1[0].VendorOrgCode,
},
}, int64(v.RealSkuID), model.ThingTypeSku, model.SyncFlagNewMask)
} }
} }
} }

View File

@@ -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) 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 { if thingType == model.ThingTypeSkuName {
return nil return nil
} }
if len(vendorInfoList) == 0 { if len(vendorInfoList) == 0 {
vendorInfoList = getMultiStoreVendorInfoList() vendorInfoList, err = dao.GetVendorOrgCode(db, model.VendorIDJD, "", model.VendorOrgTypePlatform)
} }
errList := errlist.New() errList := errlist.New()
for _, v := range vendorInfoList { for _, v := range vendorInfoList {
@@ -277,9 +277,14 @@ func OnCreateThing(ctx *jxcontext.Context, db *dao.DaoDB, vendorInfoList []*Mult
ThingID: thingID, ThingID: thingID,
ThingType: thingType, ThingType: thingType,
VendorID: v.VendorID, VendorID: v.VendorID,
VendorOrgCode: v.OrgCode, VendorOrgCode: v.VendorOrgCode,
SyncStatus: syncFlag,
} }
if thingType == model.ThingTypeCategory && !vendorFlag {
if v.IsJxCat == model.YES {
syncFlag = 0
}
}
thingMap.SyncStatus = syncFlag
dao.WrapAddIDCULDEntity(thingMap, ctx.GetUserName()) dao.WrapAddIDCULDEntity(thingMap, ctx.GetUserName())
if err2 := dao.CreateEntity(db, thingMap); err2 != nil { if err2 := dao.CreateEntity(db, thingMap); err2 != nil {
if dao.IsDuplicateError(err2) { if dao.IsDuplicateError(err2) {
@@ -294,12 +299,12 @@ func OnCreateThing(ctx *jxcontext.Context, db *dao.DaoDB, vendorInfoList []*Mult
return err 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 { if thingType == model.ThingTypeSkuName {
return nil return nil
} }
if len(vendorInfoList) == 0 { if len(vendorInfoList) == 0 {
vendorInfoList = getMultiStoreVendorInfoList() vendorInfoList, err = dao.GetVendorOrgCode(db, model.VendorIDJD, "", model.VendorOrgTypePlatform)
} }
errList := errlist.New() errList := errlist.New()
for _, v := range vendorInfoList { for _, v := range vendorInfoList {
@@ -307,7 +312,7 @@ func onUpdateThing(ctx *jxcontext.Context, db *dao.DaoDB, vendorInfoList []*Mult
ThingID: thingID, ThingID: thingID,
ThingType: thingType, ThingType: thingType,
VendorID: v.VendorID, VendorID: v.VendorID,
VendorOrgCode: v.OrgCode, VendorOrgCode: v.VendorOrgCode,
} }
thingMap.DeletedAt = utils.DefaultTimeValue thingMap.DeletedAt = utils.DefaultTimeValue
if err2 := getThingMap(db, thingMap); err2 == nil { if err2 := getThingMap(db, thingMap); err2 == nil {
@@ -325,7 +330,7 @@ func onUpdateThing(ctx *jxcontext.Context, db *dao.DaoDB, vendorInfoList []*Mult
return err 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) 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]) return "", fmt.Errorf("平台:%s不支持此操作", model.VendorChineseNames[vendorID])
} }
db := dao.GetDB() db := dao.GetDB()
vendorInfo := []*MultiStoreVendorInfo{ vendorOrgCodes, _ := dao.GetVendorOrgCode(db, vendorID, vendorOrgCode, model.VendorOrgTypePlatform)
&MultiStoreVendorInfo{
VendorID: vendorID,
OrgCode: vendorOrgCode,
},
}
var sku2Delete []*partner.StoreSkuInfo var sku2Delete []*partner.StoreSkuInfo
var cat2Delete []*partner.BareCategoryInfo var cat2Delete []*partner.BareCategoryInfo
task := tasksch.NewParallelTask(fmt.Sprintf("平台:%s,账号:%s上的商品与商家分类", model.VendorChineseNames[vendorID], vendorOrgCode), 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 !model.IsSyncStatusDelete(v.SkuSyncStatus) {
if remoteSkuMap[v.VendorSkuID] == 0 { if remoteSkuMap[v.VendorSkuID] == 0 {
if !model.IsSyncStatusNew(v.SkuSyncStatus) { 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 { } else if isForceUpdate {
OnUpdateThing(ctx, db, vendorInfo, int64(v.SkuID), model.ThingTypeSku) OnUpdateThing(ctx, db, vendorOrgCodes, int64(v.SkuID), model.ThingTypeSku)
} }
} }
} else { } else {
//表示根据某门店的门店商品同步京东商品库中这个门店关注并可售了这个商品插到thingmap里同步标志是待创建SyncFlagNewMask才会创建 //表示根据某门店的门店商品同步京东商品库中这个门店关注并可售了这个商品插到thingmap里同步标志是待创建SyncFlagNewMask才会创建
//若该门店没关注可售那插到thingmap里的话就该同步标志为0就不会创建 //若该门店没关注可售那插到thingmap里的话就该同步标志为0就不会创建
//getSyncFlag //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 !model.IsSyncStatusDelete(v.CatSyncStatus) {
if remoteCatMap[v.VendorCatID] == 0 { if remoteCatMap[v.VendorCatID] == 0 {
if !model.IsSyncStatusNew(v.CatSyncStatus) { 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) { } 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 { } else {
OnCreateThing(ctx, db, vendorInfo, int64(v.ID), model.ThingTypeCategory, model.SyncFlagNewMask) OnCreateThing(ctx, db, vendorOrgCodes, int64(v.ID), model.ThingTypeCategory, model.SyncFlagNewMask, false)
} }
} }
} }

View File

@@ -790,6 +790,7 @@ func GetStoreCategoryMap(db *DaoDB, parentID, level, storeID, categoryID int) (s
sql += " AND a.category_id = ?" sql += " AND a.category_id = ?"
sqlParams = append(sqlParams, categoryID) sqlParams = append(sqlParams, categoryID)
} }
sql += " AND ORDER BY a.level, a.store_category_seq"
err = GetRows(db, &storeCatMaps, sql, sqlParams) err = GetRows(db, &storeCatMaps, sql, sqlParams)
if err != nil { if err != nil {
return nil, err return nil, err