- GetActStoreSkuInfo没有商品信息时不报错
- 不存储空的饿百网页活动
This commit is contained in:
@@ -435,6 +435,10 @@ func vendorActInfo2Model(ctx *jxcontext.Context, db *dao.DaoDB, act2 *model.Act2
|
||||
func (a *ActManager) CreateActFromVendor(ctx *jxcontext.Context, act2 *model.Act2, actStoreSku []*model.ActStoreSku2) (actID int, err error) {
|
||||
globals.SugarLogger.Debugf("CreateActFromVendor vendorID:%d, vendorActID:%s", act2.VendorID, act2.VendorActID)
|
||||
db := dao.GetDB()
|
||||
return createActFromVendor(ctx, db, act2, actStoreSku)
|
||||
}
|
||||
|
||||
func createActFromVendor(ctx *jxcontext.Context, db *dao.DaoDB, act2 *model.Act2, actStoreSku []*model.ActStoreSku2) (actID int, err error) {
|
||||
dao.Begin(db)
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
@@ -500,9 +504,9 @@ func GetActStoreSkuInfo(ctx *jxcontext.Context, actID int, vendorIDs []int) (act
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if len(actStoreSkuMap) == 0 {
|
||||
return nil, fmt.Errorf("不能找到活动:%d", actID)
|
||||
}
|
||||
// if len(actStoreSkuMap) == 0 {
|
||||
// return nil, fmt.Errorf("不能找到活动:%d", actID)
|
||||
// }
|
||||
for _, v := range actStoreSkuMap {
|
||||
actStoreSkuList = append(actStoreSkuList, v...)
|
||||
}
|
||||
@@ -654,24 +658,94 @@ func SyncAct(ctx *jxcontext.Context, parentTask tasksch.ITask, actID int, vendor
|
||||
return hint, err
|
||||
}
|
||||
|
||||
func RefreshPageAct(ctx *jxcontext.Context, vendorIDs []int, createdFrom time.Time, isAsync bool) (hint string, err error) {
|
||||
// db := dao.GetDB()
|
||||
// task := tasksch.NewParallelTask("RefreshPageAct", nil, ctx,
|
||||
// func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
// vendorID := batchItemList[0].(int)
|
||||
// if handler, _ := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IPurchasePlatformPageActHandler); handler != nil {
|
||||
// actList, err2 := handler.GetPageActList(ctx, createdFrom)
|
||||
// if err = err2; err != nil {
|
||||
// return nil, err
|
||||
// }
|
||||
// actInfo, err2 := dao.QueryActs(db, 0, 0, -1, "", vendorID, []int{model.ActStatusCreated}, []int{model.ActCreateTypeSpider},
|
||||
// nil, 0, 0, 0, utils.DefaultTimeValue, utils.DefaultTimeValue, createdFrom, utils.DefaultTimeValue)
|
||||
// if err = err2; err != nil {
|
||||
// return nil, err
|
||||
// }
|
||||
// // var
|
||||
// }
|
||||
// return retVal, err
|
||||
// }, vendorIDs)
|
||||
func RefreshPageActs(ctx *jxcontext.Context, vendorIDs []int, createdFrom time.Time, isAsync bool) (hint string, err error) {
|
||||
task := tasksch.NewParallelTask("RefreshPageActs", nil, ctx,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
vendorID := batchItemList[0].(int)
|
||||
if handler, _ := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IPurchasePlatformPageActHandler); handler != nil {
|
||||
db := dao.GetDB()
|
||||
actList, err2 := handler.GetPageActList(ctx, createdFrom)
|
||||
globals.SugarLogger.Debug(utils.Format4Output(actList, false))
|
||||
if err = err2; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
actInfo, err2 := dao.QueryActs(db, 0, 0, -1, "", vendorID, nil, []int{model.ActCreateTypeSpider},
|
||||
nil, 0, 0, 0, utils.DefaultTimeValue, utils.DefaultTimeValue, createdFrom, utils.DefaultTimeValue)
|
||||
if err = err2; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
localActMap := make(map[string]*dao.ActVendorInfo)
|
||||
for _, v := range actInfo.Data {
|
||||
if v.VendorList[0].VendorActID != "" {
|
||||
localActMap[v.VendorList[0].VendorActID] = v
|
||||
}
|
||||
}
|
||||
var needAddActList []*model.Act2
|
||||
var needUpdateActList []*model.Act
|
||||
for _, v := range actList {
|
||||
localAct := localActMap[v.VendorActID]
|
||||
if localAct == nil {
|
||||
if v.Status == model.ActStatusCreated {
|
||||
needAddActList = append(needAddActList, v)
|
||||
}
|
||||
} else if v.Status != localAct.Status {
|
||||
localAct.Status = v.Status
|
||||
needUpdateActList = append(needUpdateActList, &localAct.Act)
|
||||
}
|
||||
}
|
||||
subTask := tasksch.NewParallelTask("RefreshPageAct Sub", nil, ctx,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
act2 := batchItemList[0].(*model.Act2)
|
||||
actStoreSkuList, err := handler.GetPageActSkuList(ctx, act2.VendorActID)
|
||||
if err == nil {
|
||||
retVal = actStoreSkuList
|
||||
}
|
||||
return retVal, err
|
||||
}, needAddActList)
|
||||
tasksch.AddChild(task, subTask).Run()
|
||||
|
||||
skuList, err2 := subTask.GetResult(0)
|
||||
if err = err2; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
needAddActSkuMap := make(map[string][]*model.ActStoreSku2)
|
||||
for _, v := range skuList {
|
||||
actStoreSku := v.(*model.ActStoreSku2)
|
||||
needAddActSkuMap[actStoreSku.VendorActID] = append(needAddActSkuMap[actStoreSku.VendorActID], actStoreSku)
|
||||
}
|
||||
|
||||
dao.Begin(db)
|
||||
defer func() {
|
||||
if r := recover(); r != nil || err != nil {
|
||||
dao.Rollback(db)
|
||||
if r != nil {
|
||||
panic(r)
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
for _, v := range needAddActList {
|
||||
if len(needAddActSkuMap[v.VendorActID]) > 0 {
|
||||
if _, err = createActFromVendor(ctx, db, v, needAddActSkuMap[v.VendorActID]); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
}
|
||||
for _, v := range needUpdateActList {
|
||||
if _, err = dao.UpdateEntity(db, v, model.FieldStatus); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
dao.Commit(db)
|
||||
}
|
||||
return retVal, err
|
||||
}, vendorIDs)
|
||||
tasksch.HandleTask(task, nil, true).Run()
|
||||
if !isAsync {
|
||||
hint = "1"
|
||||
_, err = task.GetResult(0)
|
||||
} else {
|
||||
hint = task.GetID()
|
||||
}
|
||||
return hint, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user