- add param valueMask to UpdateEntityLogicallyAndUpdateSyncStatus
- judge change content in UpdateSku - support change sku spec
This commit is contained in:
@@ -96,7 +96,7 @@ func UpdateCategory(ctx *jxcontext.Context, categoryID int, payload map[string]i
|
|||||||
valid["name"] = strings.Trim(valid["name"].(string), " ")
|
valid["name"] = strings.Trim(valid["name"].(string), " ")
|
||||||
}
|
}
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
if num, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, cat, valid, userName, nil, model.FieldJdSyncStatus); err == nil {
|
if num, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, cat, valid, userName, nil, model.FieldJdSyncStatus, model.SyncFlagModifiedMask); err == nil {
|
||||||
_, err = CurVendorSync.SyncCategory(ctx, db, categoryID, false, userName)
|
_, err = CurVendorSync.SyncCategory(ctx, db, categoryID, false, userName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -497,7 +497,7 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
|
|||||||
if valid["img"] != "" {
|
if valid["img"] != "" {
|
||||||
valid["imgWeimob"] = ""
|
valid["imgWeimob"] = ""
|
||||||
}
|
}
|
||||||
if num, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, skuName, valid, userName, nil, model.FieldJdSyncStatus); err == nil && num == 1 {
|
if num, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, skuName, valid, userName, nil, model.FieldJdSyncStatus, model.SyncFlagModifiedMask); err == nil && num == 1 {
|
||||||
if utils.Interface2Int64WithDefault(payload["isGlobal"], 0) == 0 && payload["places"] != nil {
|
if utils.Interface2Int64WithDefault(payload["isGlobal"], 0) == 0 && payload["places"] != nil {
|
||||||
if places, ok := payload["places"].([]interface{}); ok {
|
if places, ok := payload["places"].([]interface{}); ok {
|
||||||
if _, err = dao.DeleteSkuNamePlace(db, nameID, nil); err == nil {
|
if _, err = dao.DeleteSkuNamePlace(db, nameID, nil); err == nil {
|
||||||
@@ -519,7 +519,7 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
|
|||||||
sku := &model.Sku{}
|
sku := &model.Sku{}
|
||||||
_, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, sku, nil, userName, map[string]interface{}{
|
_, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, sku, nil, userName, map[string]interface{}{
|
||||||
model.FieldNameID: nameID,
|
model.FieldNameID: nameID,
|
||||||
}, model.FieldJdSyncStatus)
|
}, model.FieldJdSyncStatus, model.SyncFlagModifiedMask)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
dao.Commit(db)
|
dao.Commit(db)
|
||||||
_, err = CurVendorSync.SyncSku(ctx, db, nameID, -1, false, false, userName)
|
_, err = CurVendorSync.SyncSku(ctx, db, nameID, -1, false, false, userName)
|
||||||
@@ -599,14 +599,21 @@ func AddSku(ctx *jxcontext.Context, nameID int, sku *model.Sku, userName string)
|
|||||||
func UpdateSku(ctx *jxcontext.Context, skuID int, payload map[string]interface{}, userName string) (num int64, err error) {
|
func UpdateSku(ctx *jxcontext.Context, skuID int, payload map[string]interface{}, userName string) (num int64, err error) {
|
||||||
sku := &model.Sku{}
|
sku := &model.Sku{}
|
||||||
sku.ID = skuID
|
sku.ID = skuID
|
||||||
valid := dao.NormalMakeMapByStructObject(payload, sku, userName)
|
|
||||||
if len(valid) > 0 {
|
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
|
if err = dao.GetEntity(db, sku); err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
valid := dao.StrictMakeMapByStructObject(payload, sku, userName)
|
||||||
|
if len(valid) > 0 {
|
||||||
dao.Begin(db)
|
dao.Begin(db)
|
||||||
defer func() {
|
defer func() {
|
||||||
dao.Rollback(db)
|
dao.Rollback(db)
|
||||||
}()
|
}()
|
||||||
if num, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, sku, valid, userName, nil, model.FieldJdSyncStatus); err == nil {
|
maskValue := model.SyncFlagModifiedMask
|
||||||
|
if valid["specQuality"] != nil || valid["specUnit"] != nil {
|
||||||
|
maskValue |= model.SyncFlagSpecMask
|
||||||
|
}
|
||||||
|
if num, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, sku, valid, userName, nil, model.FieldJdSyncStatus, maskValue); err == nil {
|
||||||
if num == 1 {
|
if num == 1 {
|
||||||
if num, err = dao.ExecuteSQL(db, `
|
if num, err = dao.ExecuteSQL(db, `
|
||||||
UPDATE sku_name t1
|
UPDATE sku_name t1
|
||||||
|
|||||||
@@ -387,7 +387,7 @@ func UpdateStore(ctx *jxcontext.Context, storeID int, payload map[string]interfa
|
|||||||
dummy := &model.StoreMap{}
|
dummy := &model.StoreMap{}
|
||||||
_, err2 := dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, dummy, nil, userName, map[string]interface{}{
|
_, err2 := dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, dummy, nil, userName, map[string]interface{}{
|
||||||
model.FieldStoreID: store.ID,
|
model.FieldStoreID: store.ID,
|
||||||
}, model.FieldSyncStatus)
|
}, model.FieldSyncStatus, model.SyncFlagModifiedMask)
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
dao.Commit(db)
|
dao.Commit(db)
|
||||||
_, err = CurVendorSync.SyncStore(ctx, db, -1, store.ID, false, userName)
|
_, err = CurVendorSync.SyncStore(ctx, db, -1, store.ID, false, userName)
|
||||||
@@ -530,7 +530,7 @@ func UpdateStoreVendorMap(ctx *jxcontext.Context, db *dao.DaoDB, storeID, vendor
|
|||||||
num, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, storeMap, valid, userName, map[string]interface{}{
|
num, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, storeMap, valid, userName, map[string]interface{}{
|
||||||
model.FieldStoreID: storeID,
|
model.FieldStoreID: storeID,
|
||||||
model.FieldVendorID: vendorID,
|
model.FieldVendorID: vendorID,
|
||||||
}, model.FieldSyncStatus)
|
}, model.FieldSyncStatus, model.SyncFlagModifiedMask)
|
||||||
} else {
|
} else {
|
||||||
num, err = dao.UpdateEntityLogically(db, storeMap, valid, userName, map[string]interface{}{
|
num, err = dao.UpdateEntityLogically(db, storeMap, valid, userName, map[string]interface{}{
|
||||||
model.FieldStoreID: storeID,
|
model.FieldStoreID: storeID,
|
||||||
@@ -542,7 +542,7 @@ func UpdateStoreVendorMap(ctx *jxcontext.Context, db *dao.DaoDB, storeID, vendor
|
|||||||
storeSkuBind := &model.StoreSkuBind{}
|
storeSkuBind := &model.StoreSkuBind{}
|
||||||
if num, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, storeSkuBind, nil, userName, map[string]interface{}{
|
if num, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, storeSkuBind, nil, userName, map[string]interface{}{
|
||||||
model.FieldStoreID: storeID,
|
model.FieldStoreID: storeID,
|
||||||
}, dao.GetSyncStatusStructField(model.VendorNames[vendorID])); err != nil {
|
}, dao.GetSyncStatusStructField(model.VendorNames[vendorID]), model.SyncFlagModifiedMask); err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ func UpdateEntityLogically(db *DaoDB, item interface{}, kvs map[string]interface
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 此函数会更新同步标志
|
// 此函数会更新同步标志
|
||||||
func UpdateEntityLogicallyAndUpdateSyncStatus(db *DaoDB, item interface{}, kvs map[string]interface{}, userName string, conditions map[string]interface{}, syncStatusFieldName string) (num int64, err error) {
|
func UpdateEntityLogicallyAndUpdateSyncStatus(db *DaoDB, item interface{}, kvs map[string]interface{}, userName string, conditions map[string]interface{}, syncStatusFieldName string, valueMask int) (num int64, err error) {
|
||||||
if conditions != nil {
|
if conditions != nil {
|
||||||
conditions = utils.MergeMaps(conditions, map[string]interface{}{
|
conditions = utils.MergeMaps(conditions, map[string]interface{}{
|
||||||
model.FieldDeletedAt: utils.DefaultTimeValue,
|
model.FieldDeletedAt: utils.DefaultTimeValue,
|
||||||
@@ -88,7 +88,7 @@ func UpdateEntityLogicallyAndUpdateSyncStatus(db *DaoDB, item interface{}, kvs m
|
|||||||
valueRows = reflect.Indirect(valueRows)
|
valueRows = reflect.Indirect(valueRows)
|
||||||
for i := 0; i < valueRows.Len(); i++ {
|
for i := 0; i < valueRows.Len(); i++ {
|
||||||
value := reflect.Indirect(valueRows.Index(i))
|
value := reflect.Indirect(valueRows.Index(i))
|
||||||
status := value.FieldByName(syncStatusFieldName).Int() | model.SyncFlagModifiedMask
|
status := value.FieldByName(syncStatusFieldName).Int() | int64(valueMask)
|
||||||
num2, err2 := UpdateEntityByKV(db, value.Interface(), utils.MergeMaps(kvs, map[string]interface{}{
|
num2, err2 := UpdateEntityByKV(db, value.Interface(), utils.MergeMaps(kvs, map[string]interface{}{
|
||||||
model.FieldUpdatedAt: time.Now(),
|
model.FieldUpdatedAt: time.Now(),
|
||||||
model.FieldLastOperator: userName,
|
model.FieldLastOperator: userName,
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ const (
|
|||||||
|
|
||||||
SyncFlagSaleMask = 8
|
SyncFlagSaleMask = 8
|
||||||
SyncFlagPriceMask = 16
|
SyncFlagPriceMask = 16
|
||||||
|
SyncFlagSpecMask = 32
|
||||||
)
|
)
|
||||||
|
|
||||||
// const (
|
// const (
|
||||||
|
|||||||
@@ -547,7 +547,7 @@ func (p *PurchaseHandler) processLocalCatByRemote(db *dao.DaoDB, storeID int, lo
|
|||||||
} else { // 远程有,本门店有,但ID信息不一致
|
} else { // 远程有,本门店有,但ID信息不一致
|
||||||
_, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, &jxCat.StoreSkuCategoryMap, map[string]interface{}{
|
_, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, &jxCat.StoreSkuCategoryMap, map[string]interface{}{
|
||||||
model.FieldEbaiID: v.CategoryID,
|
model.FieldEbaiID: v.CategoryID,
|
||||||
}, userName, nil, model.FieldEbaiSyncStatus)
|
}, userName, nil, model.FieldEbaiSyncStatus, model.SyncFlagModifiedMask)
|
||||||
}
|
}
|
||||||
} else { // 两边都有,且信息一致
|
} else { // 两边都有,且信息一致
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -461,9 +461,11 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt
|
|||||||
params[jdapi.KeySkuPrice] = price
|
params[jdapi.KeySkuPrice] = price
|
||||||
if globals.EnableStoreWrite {
|
if globals.EnableStoreWrite {
|
||||||
err = api.JdAPI.UpdateSkuBaseInfo(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), utils.MergeMaps(params, skuAddParams))
|
err = api.JdAPI.UpdateSkuBaseInfo(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), utils.MergeMaps(params, skuAddParams))
|
||||||
// skuIndex := sku.SkuIndex
|
skuIndex := sku.SkuIndex
|
||||||
// saleAttrValue := composeSkuSpec(sku.SpecQuality, sku.SpecUnit, skuExt.Unit)
|
if skuIndex > 0 {
|
||||||
// err = api.JdAPI.UpdateSpuSaleAttr(utils.Int2Str(skuExt.ID), utils.Int2Str(jdapi.SaleAttrIDBase), "", utils.Int2Str(jdapi.SaleAttrValueIDBase+skuIndex-1), saleAttrValue)
|
saleAttrValue := composeSkuSpec(sku.SpecQuality, sku.SpecUnit, skuExt.Unit)
|
||||||
|
err = api.JdAPI.UpdateSpuSaleAttr(utils.Int2Str(skuExt.ID), utils.Int2Str(jdapi.SaleAttrIDBase), "", utils.Int2Str(jdapi.SaleAttrValueIDBase+skuIndex-1), saleAttrValue)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user