+ DeleteSkusFromAct

This commit is contained in:
gazebo
2019-08-09 09:33:01 +08:00
parent 3541fada72
commit 35e06e8c94
2 changed files with 68 additions and 0 deletions

View File

@@ -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
}

View File

@@ -272,3 +272,17 @@ func (c *ActController) RefreshPageActs() {
return retVal, "", err
})
}
// @Title 将SKU从所有活动中删除
// @Description 将SKU从所有活动中删除
// @Param token header string true "认证token"
// @Param skuIDs formData string true "skuID列表"
// @Param vendorID formData int true "厂商ID"
// @Param isAsync formData bool false "是否异步"
// @Param isContinueWhenError formData bool false "单个同步失败是否继续缺省false"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /DeleteSkusFromAct [delete]
func (c *ActController) DeleteSkusFromAct() {
}