- 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 {
|
} else if countInfos[2].Ct != 0 {
|
||||||
return 0, errors.New("还有商品类别使用此类别,不能删除")
|
return 0, errors.New("还有商品类别使用此类别,不能删除")
|
||||||
}
|
}
|
||||||
|
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 {
|
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)
|
_, err = CurVendorSync.SyncCategory(ctx, db, cat.ID, false, userName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return num, err
|
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) {
|
func GetSkuNames(ctx *jxcontext.Context, keyword string, params map[string]interface{}, offset, pageSize int) (skuNamesInfo *SkuNamesInfo, err error) {
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
sql := `
|
sql := `
|
||||||
@@ -504,6 +525,7 @@ func DeleteSkuName(ctx *jxcontext.Context, nameID int, userName string) (num int
|
|||||||
panic(r)
|
panic(r)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
if _, err = DeleteStoreSku(ctx, db, nameID, 0); err == nil {
|
||||||
skuName := &model.SkuName{}
|
skuName := &model.SkuName{}
|
||||||
skuName.ID = nameID
|
skuName.ID = nameID
|
||||||
if num, err = dao.DeleteEntityLogically(db, skuName, nil, userName, nil); err == nil && num == 1 {
|
if num, err = dao.DeleteEntityLogically(db, skuName, nil, userName, nil); err == nil && num == 1 {
|
||||||
@@ -522,6 +544,7 @@ func DeleteSkuName(ctx *jxcontext.Context, nameID int, userName string) (num int
|
|||||||
return num, err
|
return num, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
dao.Rollback(db)
|
dao.Rollback(db)
|
||||||
return num, err
|
return num, err
|
||||||
}
|
}
|
||||||
@@ -588,18 +611,66 @@ func UpdateSku(ctx *jxcontext.Context, skuID int, payload map[string]interface{}
|
|||||||
|
|
||||||
func DeleteSku(ctx *jxcontext.Context, skuID int, userName string) (num int64, err error) {
|
func DeleteSku(ctx *jxcontext.Context, skuID int, userName string) (num int64, err error) {
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
|
dao.Begin(db)
|
||||||
|
defer func() {
|
||||||
|
dao.Rollback(db)
|
||||||
|
}()
|
||||||
|
|
||||||
|
if _, err = DeleteStoreSku(ctx, db, 0, skuID); err == nil {
|
||||||
sku := &model.Sku{}
|
sku := &model.Sku{}
|
||||||
sku.ID = skuID
|
sku.ID = skuID
|
||||||
if num, err = dao.DeleteEntityLogically(db, sku, map[string]interface{}{
|
if num, err = dao.DeleteEntityLogically(db, sku, map[string]interface{}{
|
||||||
model.FieldStatus: model.SkuStatusDeleted,
|
model.FieldStatus: model.SkuStatusDeleted,
|
||||||
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
|
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
|
||||||
}, userName, nil); err == nil {
|
}, userName, nil); err == nil {
|
||||||
|
dao.Commit(db)
|
||||||
if num == 1 {
|
if num == 1 {
|
||||||
_, err = CurVendorSync.SyncSku(ctx, db, -1, sku.ID, false, userName)
|
_, err = CurVendorSync.SyncSku(ctx, db, -1, sku.ID, false, userName)
|
||||||
} else {
|
} else {
|
||||||
err = ErrEntityNotExist
|
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
|
return num, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user