- refactor DeleteSkuName
- fix bug in FlatMap(should recursively)
This commit is contained in:
@@ -480,7 +480,7 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
|
|||||||
if num, err = dao.UpdateEntityLogically(db, skuName, valid, userName, nil); err == nil && num == 1 {
|
if num, err = dao.UpdateEntityLogically(db, skuName, valid, userName, nil); 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.ExecuteSQL(db, "DELETE FROM sku_name_place_bind WHERE name_id = ?", nameID); err == nil {
|
if _, err = dao.DeleteSkuNamePlace(db, nameID, nil); err == nil {
|
||||||
for _, placeCode := range places {
|
for _, placeCode := range places {
|
||||||
placeBind := &model.SkuNamePlaceBind{}
|
placeBind := &model.SkuNamePlaceBind{}
|
||||||
placeBind.PlaceCode = int(utils.Interface2Int64WithDefault(placeCode, 0))
|
placeBind.PlaceCode = int(utils.Interface2Int64WithDefault(placeCode, 0))
|
||||||
@@ -520,32 +520,32 @@ func DeleteSkuName(ctx *jxcontext.Context, nameID int, userName string) (num int
|
|||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
dao.Begin(db)
|
dao.Begin(db)
|
||||||
defer func() {
|
defer func() {
|
||||||
if r := recover(); r != nil {
|
dao.Rollback(db)
|
||||||
dao.Rollback(db)
|
|
||||||
panic(r)
|
|
||||||
}
|
|
||||||
}()
|
}()
|
||||||
if _, err = DeleteStoreSku(ctx, db, nameID, 0); err == nil {
|
if _, err := dao.DeleteSkuNamePlace(db, nameID, nil); err != nil {
|
||||||
skuName := &model.SkuName{}
|
return 0, err
|
||||||
skuName.ID = nameID
|
}
|
||||||
if num, err = dao.DeleteEntityLogically(db, skuName, nil, userName, nil); err == nil && num == 1 {
|
if _, err = DeleteStoreSku(ctx, db, nameID, 0); err != nil {
|
||||||
dummy := &model.Sku{}
|
return 0, err
|
||||||
num2, err2 := dao.DeleteEntityLogically(db, dummy, map[string]interface{}{
|
}
|
||||||
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
|
numSku, err := dao.DeleteEntityLogically(db, &model.Sku{}, map[string]interface{}{
|
||||||
model.FieldStatus: model.SkuStatusDeleted,
|
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
|
||||||
}, userName, map[string]interface{}{
|
model.FieldStatus: model.SkuStatusDeleted,
|
||||||
model.FieldNameID: nameID,
|
}, userName, map[string]interface{}{
|
||||||
})
|
model.FieldNameID: nameID,
|
||||||
if err2 == nil {
|
})
|
||||||
dao.Commit(db)
|
if err != nil {
|
||||||
if num2 > 0 {
|
return 0, err
|
||||||
_, err = CurVendorSync.SyncSku(ctx, db, skuName.ID, -1, false, userName)
|
}
|
||||||
}
|
skuName := &model.SkuName{}
|
||||||
return num, err
|
skuName.ID = nameID
|
||||||
}
|
if num, err = dao.DeleteEntityLogically(db, skuName, nil, userName, nil); err != nil {
|
||||||
}
|
return 0, err
|
||||||
|
}
|
||||||
|
dao.Commit(db)
|
||||||
|
if numSku > 0 {
|
||||||
|
_, err = CurVendorSync.SyncSku(ctx, db, skuName.ID, -1, false, userName)
|
||||||
}
|
}
|
||||||
dao.Rollback(db)
|
|
||||||
return num, err
|
return num, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -281,6 +281,7 @@ func FlatMap(in map[string]interface{}) map[string]interface{} {
|
|||||||
maps := []map[string]interface{}{}
|
maps := []map[string]interface{}{}
|
||||||
for k, v := range in {
|
for k, v := range in {
|
||||||
if vMap, ok := v.(map[string]interface{}); ok {
|
if vMap, ok := v.(map[string]interface{}); ok {
|
||||||
|
vMap = FlatMap(vMap)
|
||||||
maps = append(maps, vMap)
|
maps = append(maps, vMap)
|
||||||
keys = append(keys, k)
|
keys = append(keys, k)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,3 +18,19 @@ func GetSellCities(db *DaoDB, nameID int, vendorID int) (cities []*model.Place,
|
|||||||
}
|
}
|
||||||
return cities, GetRows(db, &cities, sql, nameID)
|
return cities, GetRows(db, &cities, sql, nameID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func DeleteSkuNamePlace(db *DaoDB, nameID int, placeCodes []int) (num int64, err error) {
|
||||||
|
sql := `
|
||||||
|
DELETE
|
||||||
|
FROM sku_name_place_bind
|
||||||
|
WHERE name_id = ?
|
||||||
|
`
|
||||||
|
sqlParams := []interface{}{
|
||||||
|
nameID,
|
||||||
|
}
|
||||||
|
if len(placeCodes) > 0 {
|
||||||
|
sql += " AND place_code IN (" + GenQuestionMarks(len(placeCodes)) + ")"
|
||||||
|
sqlParams = append(sqlParams, placeCodes)
|
||||||
|
}
|
||||||
|
return ExecuteSQL(db, sql, sqlParams...)
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user