- UpdateEntityLogicallyAndUpdateSyncStatus for model.SyncFlagModifiedMask
This commit is contained in:
@@ -69,9 +69,8 @@ func UpdateCategory(categoryID int, payload map[string]interface{}, userName str
|
|||||||
cat.ID = categoryID
|
cat.ID = categoryID
|
||||||
valid := dao.NormalMakeMapByStructObject(payload, cat, userName)
|
valid := dao.NormalMakeMapByStructObject(payload, cat, userName)
|
||||||
if len(valid) > 0 {
|
if len(valid) > 0 {
|
||||||
valid[model.FieldJdSyncStatus] = model.SyncFlagModifiedMask
|
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
if num, err = dao.UpdateEntityLogically(db, cat, valid, userName, nil); err == nil {
|
if num, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, cat, valid, userName, nil, model.FieldJdSyncStatus); err == nil {
|
||||||
err = CurVendorSync.SyncCategory(db, categoryID, false, userName)
|
err = CurVendorSync.SyncCategory(db, categoryID, false, userName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -100,7 +99,7 @@ func ReorderCategories(parentID int, categoryIDs []int, userName string) (err er
|
|||||||
}
|
}
|
||||||
for k, v := range categoryIDs {
|
for k, v := range categoryIDs {
|
||||||
catsMap[v].Seq = k
|
catsMap[v].Seq = k
|
||||||
catsMap[v].JdSyncStatus = model.SyncFlagModifiedMask
|
catsMap[v].JdSyncStatus |= model.SyncFlagModifiedMask
|
||||||
if _, err = dao.UpdateEntity(db, catsMap[v], "Seq"); err != nil {
|
if _, err = dao.UpdateEntity(db, catsMap[v], "Seq"); err != nil {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@@ -396,11 +395,9 @@ func UpdateSkuName(nameID int, payload map[string]interface{}, userName string)
|
|||||||
}
|
}
|
||||||
if err == nil {
|
if err == nil {
|
||||||
sku := &model.Sku{}
|
sku := &model.Sku{}
|
||||||
_, err2 := dao.UpdateEntityLogically(db, sku, map[string]interface{}{
|
_, err2 := dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, sku, nil, userName, map[string]interface{}{
|
||||||
model.FieldJdSyncStatus: model.SyncFlagModifiedMask,
|
|
||||||
}, userName, map[string]interface{}{
|
|
||||||
model.FieldNameID: nameID,
|
model.FieldNameID: nameID,
|
||||||
})
|
}, model.FieldJdSyncStatus)
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
dao.Commit(db)
|
dao.Commit(db)
|
||||||
err2 = CurVendorSync.SyncSku(db, nameID, -1, false, userName)
|
err2 = CurVendorSync.SyncSku(db, nameID, -1, false, userName)
|
||||||
@@ -472,9 +469,8 @@ func UpdateSku(skuID int, payload map[string]interface{}, userName string) (num
|
|||||||
sku.ID = skuID
|
sku.ID = skuID
|
||||||
valid := dao.NormalMakeMapByStructObject(payload, sku, userName)
|
valid := dao.NormalMakeMapByStructObject(payload, sku, userName)
|
||||||
if len(valid) > 0 {
|
if len(valid) > 0 {
|
||||||
valid[model.FieldJdSyncStatus] = model.SyncFlagModifiedMask
|
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
if num, err = dao.UpdateEntityLogically(db, sku, valid, userName, nil); err == nil {
|
if num, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, sku, valid, userName, nil, model.FieldJdSyncStatus); err == nil {
|
||||||
if num == 1 {
|
if num == 1 {
|
||||||
err = CurVendorSync.SyncSku(db, -1, sku.ID, false, userName)
|
err = CurVendorSync.SyncSku(db, -1, sku.ID, false, userName)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -193,11 +193,9 @@ func UpdateStore(storeID int, payload map[string]interface{}, userName string) (
|
|||||||
}()
|
}()
|
||||||
if num, err = dao.UpdateEntityLogically(db, store, valid, userName, nil); err == nil && num == 1 {
|
if num, err = dao.UpdateEntityLogically(db, store, valid, userName, nil); err == nil && num == 1 {
|
||||||
dummy := &model.StoreMap{}
|
dummy := &model.StoreMap{}
|
||||||
_, err2 := dao.UpdateEntityLogically(db, dummy, map[string]interface{}{
|
_, err2 := dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, dummy, nil, userName, map[string]interface{}{
|
||||||
model.FieldSyncStatus: model.SyncFlagModifiedMask,
|
|
||||||
}, userName, map[string]interface{}{
|
|
||||||
model.FieldStoreID: store.ID,
|
model.FieldStoreID: store.ID,
|
||||||
})
|
}, model.FieldSyncStatus)
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
dao.Commit(db)
|
dao.Commit(db)
|
||||||
err = CurVendorSync.SyncStore(db, -1, store.ID, false, userName)
|
err = CurVendorSync.SyncStore(db, -1, store.ID, false, userName)
|
||||||
@@ -301,12 +299,17 @@ func UpdateStoreVendorMap(db *dao.DaoDB, storeID, vendorID int, payload map[stri
|
|||||||
valid := dao.NormalMakeMapByStructObject(payload, dummyStoreMap, userName)
|
valid := dao.NormalMakeMapByStructObject(payload, dummyStoreMap, userName)
|
||||||
if len(valid) > 0 {
|
if len(valid) > 0 {
|
||||||
if valid["status"] != nil { // 对于store vendor map,只有Status改变才需要同步到厂商
|
if valid["status"] != nil { // 对于store vendor map,只有Status改变才需要同步到厂商
|
||||||
valid[model.FieldSyncStatus] = model.SyncFlagModifiedMask
|
num, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, dummyStoreMap, valid, userName, map[string]interface{}{
|
||||||
|
model.FieldStoreID: storeID,
|
||||||
|
model.FieldVendorID: vendorID,
|
||||||
|
}, model.FieldSyncStatus)
|
||||||
|
} else {
|
||||||
|
num, err = dao.UpdateEntityLogically(db, dummyStoreMap, valid, userName, map[string]interface{}{
|
||||||
|
model.FieldStoreID: storeID,
|
||||||
|
model.FieldVendorID: vendorID,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
if num, err = dao.UpdateEntityLogically(db, dummyStoreMap, valid, userName, map[string]interface{}{
|
if err == nil && num > 0 {
|
||||||
model.FieldStoreID: storeID,
|
|
||||||
model.FieldVendorID: vendorID,
|
|
||||||
}); err == nil && num > 0 {
|
|
||||||
if valid["status"] != nil {
|
if valid["status"] != nil {
|
||||||
err = CurVendorSync.SyncStore(db, vendorID, storeID, false, userName)
|
err = CurVendorSync.SyncStore(db, vendorID, storeID, false, userName)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -236,9 +236,12 @@ func (v *VendorSync) RefreshSkuIDs(nameID, skuID int, isForce bool, userName str
|
|||||||
}
|
}
|
||||||
|
|
||||||
func makeSyncError(err error) (newErr error) {
|
func makeSyncError(err error) (newErr error) {
|
||||||
return &SyncError{
|
if err != nil {
|
||||||
Original: err,
|
return &SyncError{
|
||||||
|
Original: err,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *SyncError) Error() string {
|
func (e *SyncError) Error() string {
|
||||||
|
|||||||
@@ -70,6 +70,41 @@ func UpdateEntityLogically(db *DaoDB, item interface{}, kvs map[string]interface
|
|||||||
}), conditions)
|
}), conditions)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 些函数会更新同步标志
|
||||||
|
func UpdateEntityLogicallyAndUpdateSyncStatus(db *DaoDB, item interface{}, kvs map[string]interface{}, userName string, conditions map[string]interface{}, syncStatusFieldName string) (num int64, err error) {
|
||||||
|
if conditions != nil {
|
||||||
|
conditions = utils.MergeMaps(conditions, map[string]interface{}{
|
||||||
|
model.FieldDeletedAt: utils.DefaultTimeValue,
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
conditions = map[string]interface{}{
|
||||||
|
model.FieldID: jxutils.GetObjFieldByName(item, model.FieldID),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
typeInfo := reflect.TypeOf(item)
|
||||||
|
valueRows := reflect.New(reflect.SliceOf(typeInfo))
|
||||||
|
rows := valueRows.Interface()
|
||||||
|
if err = GetEntitiesByKV(db, rows, conditions, false); err == nil {
|
||||||
|
// globals.SugarLogger.Debug(utils.Format4Output(rows, false))
|
||||||
|
valueRows = reflect.Indirect(valueRows)
|
||||||
|
for i := 0; i < valueRows.Len(); i++ {
|
||||||
|
value := reflect.Indirect(valueRows.Index(i))
|
||||||
|
status := value.FieldByName(syncStatusFieldName).Int() | model.SyncFlagModifiedMask
|
||||||
|
num2, err2 := UpdateEntityByKV(db, value.Interface(), utils.MergeMaps(kvs, map[string]interface{}{
|
||||||
|
model.FieldUpdatedAt: time.Now(),
|
||||||
|
model.FieldLastOperator: userName,
|
||||||
|
syncStatusFieldName: status,
|
||||||
|
}), nil)
|
||||||
|
if err = err2; err == nil {
|
||||||
|
num += num2
|
||||||
|
} else {
|
||||||
|
return num, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return num, err
|
||||||
|
}
|
||||||
|
|
||||||
func DeleteEntityLogically(db *DaoDB, item interface{}, kvs map[string]interface{}, userName string, conditions map[string]interface{}) (num int64, err error) {
|
func DeleteEntityLogically(db *DaoDB, item interface{}, kvs map[string]interface{}, userName string, conditions map[string]interface{}) (num int64, err error) {
|
||||||
return UpdateEntityLogically(db, item, utils.MergeMaps(kvs, map[string]interface{}{
|
return UpdateEntityLogically(db, item, utils.MergeMaps(kvs, map[string]interface{}{
|
||||||
model.FieldDeletedAt: time.Now(),
|
model.FieldDeletedAt: time.Now(),
|
||||||
|
|||||||
Reference in New Issue
Block a user