- when delete category or sku, delete store sku and store category info also.
This commit is contained in:
@@ -158,13 +158,34 @@ func DeleteCategory(ctx *jxcontext.Context, categoryID int, userName string) (nu
|
||||
} else if countInfos[2].Ct != 0 {
|
||||
return 0, errors.New("还有商品类别使用此类别,不能删除")
|
||||
}
|
||||
if num, err = dao.DeleteEntityLogically(db, cat, utils.Params2Map(model.FieldJdSyncStatus, model.SyncFlagDeletedMask), userName, nil); err == nil && num == 1 {
|
||||
_, err = CurVendorSync.SyncCategory(ctx, db, cat.ID, false, userName)
|
||||
dao.Begin(db)
|
||||
defer func() {
|
||||
dao.Rollback(db)
|
||||
}()
|
||||
if _, err = DeleteCategoryMap(ctx, db, categoryID); err == nil {
|
||||
if num, err = dao.DeleteEntityLogically(db, cat, utils.Params2Map(model.FieldJdSyncStatus, model.SyncFlagDeletedMask), userName, nil); err == nil && num == 1 {
|
||||
dao.Commit(db)
|
||||
_, err = CurVendorSync.SyncCategory(ctx, db, cat.ID, false, userName)
|
||||
}
|
||||
}
|
||||
}
|
||||
return num, err
|
||||
}
|
||||
|
||||
func DeleteCategoryMap(ctx *jxcontext.Context, db *dao.DaoDB, categoryID int) (num int64, err error) {
|
||||
if db == nil {
|
||||
db = dao.GetDB()
|
||||
}
|
||||
catMap := &model.StoreSkuCategoryMap{}
|
||||
return dao.DeleteEntityLogically(db, catMap, map[string]interface{}{
|
||||
model.FieldElmSyncStatus: model.SyncFlagDeletedMask,
|
||||
model.FieldEbaiSyncStatus: model.SyncFlagDeletedMask,
|
||||
}, ctx.GetUserName(), map[string]interface{}{
|
||||
model.FieldCategoryID: categoryID,
|
||||
model.FieldDeletedAt: utils.DefaultTimeValue,
|
||||
})
|
||||
}
|
||||
|
||||
func GetSkuNames(ctx *jxcontext.Context, keyword string, params map[string]interface{}, offset, pageSize int) (skuNamesInfo *SkuNamesInfo, err error) {
|
||||
db := dao.GetDB()
|
||||
sql := `
|
||||
@@ -504,22 +525,24 @@ func DeleteSkuName(ctx *jxcontext.Context, nameID int, userName string) (num int
|
||||
panic(r)
|
||||
}
|
||||
}()
|
||||
skuName := &model.SkuName{}
|
||||
skuName.ID = nameID
|
||||
if num, err = dao.DeleteEntityLogically(db, skuName, nil, userName, nil); err == nil && num == 1 {
|
||||
dummy := &model.Sku{}
|
||||
num2, err2 := dao.DeleteEntityLogically(db, dummy, map[string]interface{}{
|
||||
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
|
||||
model.FieldStatus: model.SkuStatusDeleted,
|
||||
}, userName, map[string]interface{}{
|
||||
model.FieldNameID: nameID,
|
||||
})
|
||||
if err2 == nil {
|
||||
dao.Commit(db)
|
||||
if num2 > 0 {
|
||||
_, err = CurVendorSync.SyncSku(ctx, db, skuName.ID, -1, false, userName)
|
||||
if _, err = DeleteStoreSku(ctx, db, nameID, 0); err == nil {
|
||||
skuName := &model.SkuName{}
|
||||
skuName.ID = nameID
|
||||
if num, err = dao.DeleteEntityLogically(db, skuName, nil, userName, nil); err == nil && num == 1 {
|
||||
dummy := &model.Sku{}
|
||||
num2, err2 := dao.DeleteEntityLogically(db, dummy, map[string]interface{}{
|
||||
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
|
||||
model.FieldStatus: model.SkuStatusDeleted,
|
||||
}, userName, map[string]interface{}{
|
||||
model.FieldNameID: nameID,
|
||||
})
|
||||
if err2 == nil {
|
||||
dao.Commit(db)
|
||||
if num2 > 0 {
|
||||
_, err = CurVendorSync.SyncSku(ctx, db, skuName.ID, -1, false, userName)
|
||||
}
|
||||
return num, err
|
||||
}
|
||||
return num, err
|
||||
}
|
||||
}
|
||||
dao.Rollback(db)
|
||||
@@ -588,16 +611,64 @@ func UpdateSku(ctx *jxcontext.Context, skuID int, payload map[string]interface{}
|
||||
|
||||
func DeleteSku(ctx *jxcontext.Context, skuID int, userName string) (num int64, err error) {
|
||||
db := dao.GetDB()
|
||||
sku := &model.Sku{}
|
||||
sku.ID = skuID
|
||||
if num, err = dao.DeleteEntityLogically(db, sku, map[string]interface{}{
|
||||
model.FieldStatus: model.SkuStatusDeleted,
|
||||
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
|
||||
}, userName, nil); err == nil {
|
||||
if num == 1 {
|
||||
_, err = CurVendorSync.SyncSku(ctx, db, -1, sku.ID, false, userName)
|
||||
} else {
|
||||
err = ErrEntityNotExist
|
||||
dao.Begin(db)
|
||||
defer func() {
|
||||
dao.Rollback(db)
|
||||
}()
|
||||
|
||||
if _, err = DeleteStoreSku(ctx, db, 0, skuID); err == nil {
|
||||
sku := &model.Sku{}
|
||||
sku.ID = skuID
|
||||
if num, err = dao.DeleteEntityLogically(db, sku, map[string]interface{}{
|
||||
model.FieldStatus: model.SkuStatusDeleted,
|
||||
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
|
||||
}, userName, nil); err == nil {
|
||||
dao.Commit(db)
|
||||
if num == 1 {
|
||||
_, err = CurVendorSync.SyncSku(ctx, db, -1, sku.ID, false, userName)
|
||||
} else {
|
||||
err = ErrEntityNotExist
|
||||
}
|
||||
}
|
||||
}
|
||||
return num, err
|
||||
}
|
||||
|
||||
func DeleteStoreSku(ctx *jxcontext.Context, db *dao.DaoDB, nameID, skuID int) (num int64, err error) {
|
||||
if db == nil {
|
||||
db = dao.GetDB()
|
||||
}
|
||||
|
||||
sql := `
|
||||
SELECT *
|
||||
FROM sku t1
|
||||
WHERE 1 = 1
|
||||
`
|
||||
sqlParams := []interface{}{}
|
||||
if nameID > 0 {
|
||||
sql += " AND t1.name_id = ?"
|
||||
sqlParams = append(sqlParams, nameID)
|
||||
} else {
|
||||
sql += " AND t1.sku_id = ?"
|
||||
sqlParams = append(sqlParams, skuID)
|
||||
}
|
||||
|
||||
var skuList []*model.Sku
|
||||
if err = dao.GetRows(db, &skuList, sql, sqlParams); err == nil {
|
||||
num = int64(len(skuList))
|
||||
for _, v := range skuList {
|
||||
storeSkuBind := &model.StoreSkuBind{}
|
||||
_, err = dao.DeleteEntityLogically(db, storeSkuBind, map[string]interface{}{
|
||||
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
|
||||
model.FieldElmSyncStatus: model.SyncFlagDeletedMask,
|
||||
model.FieldEbaiSyncStatus: model.SyncFlagDeletedMask,
|
||||
}, ctx.GetUserName(), map[string]interface{}{
|
||||
model.FieldSkuID: v.ID,
|
||||
model.FieldDeletedAt: utils.DefaultTimeValue,
|
||||
})
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
return num, err
|
||||
|
||||
Reference in New Issue
Block a user