+ DeleteSkusFromAct
This commit is contained in:
@@ -803,3 +803,57 @@ func RefreshPageActs(ctx *jxcontext.Context, vendorIDs []int, createdFrom time.T
|
||||
}
|
||||
return hint, err
|
||||
}
|
||||
|
||||
func DeleteSkusFromAct(ctx *jxcontext.Context, vendorID int, skuIDs []int, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||
db := dao.GetDB()
|
||||
actMap := make(map[int]*model.Act)
|
||||
for _, skuID := range skuIDs {
|
||||
pagedInfo, err2 := dao.QueryActs(db, 0, 0, -1, "", vendorID, []int{model.ActStatusCreated}, nil, nil, 0, skuID, 0, time.Now(), time.Now(), utils.DefaultTimeValue, utils.DefaultTimeValue)
|
||||
if err = err2; err != nil {
|
||||
return "", err
|
||||
}
|
||||
for _, v := range pagedInfo.Data {
|
||||
actMap[v.Act.ID] = &v.Act
|
||||
}
|
||||
}
|
||||
if len(actMap) == 0 {
|
||||
return "", nil
|
||||
}
|
||||
skuIDMap := jxutils.IntList2Map(skuIDs)
|
||||
var actIDList []int
|
||||
for k := range actMap {
|
||||
actIDList = append(actIDList, k)
|
||||
}
|
||||
task := tasksch.NewParallelTask("将SKU从所有活动中删除", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
actID := batchItemList[0].(int)
|
||||
actStoreSkuList, err := dao.GetActStoreSkuVendorList(db, actID, []int{-1}, nil, skuIDs)
|
||||
if err == nil {
|
||||
// db := dao.GetDB()
|
||||
var deleteList []*ActStoreSkuParam
|
||||
for _, v := range actStoreSkuList {
|
||||
if skuIDMap[v.SkuID] == 1 {
|
||||
deleteList = append(deleteList, &ActStoreSkuParam{
|
||||
ActStoreSku: model.ActStoreSku{
|
||||
StoreID: v.StoreID,
|
||||
SkuID: v.SkuID,
|
||||
},
|
||||
})
|
||||
}
|
||||
}
|
||||
if len(deleteList) > 0 {
|
||||
if err = DeleteActStoreSkuBind(ctx, db, actID, deleteList); err == nil {
|
||||
_, err = SyncAct(ctx, task, actID, nil, nil, skuIDs, false)
|
||||
}
|
||||
}
|
||||
}
|
||||
return retVal, err
|
||||
}, actIDList)
|
||||
tasksch.HandleTask(task, nil, true).Run()
|
||||
if isAsync {
|
||||
hint = task.GetID()
|
||||
} else {
|
||||
_, err = task.GetResult(0)
|
||||
}
|
||||
return hint, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user