- 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
|
||||
}
|
||||
|
||||
@@ -138,7 +138,8 @@ func GetActStoreSkuVendorInfo(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs
|
||||
return actStoreSkuMap, err
|
||||
}
|
||||
|
||||
func QueryActs(db *DaoDB, actID int, offset, pageSize int, keyword string, vendorID int, statusList, actTypeList, createTypeList []int, storeID, skuID, cityCode int, beginAt, endAt, createdAtFrom, createdAtTo time.Time) (pagedInfo *PagedActListInfo, err error) {
|
||||
func QueryActs(db *DaoDB, actID int, offset, pageSize int, keyword string, vendorID int, statusList, actTypeList, createTypeList []int,
|
||||
storeID, skuID, cityCode int, beginAt, endAt, createdAtFrom, createdAtTo time.Time) (pagedInfo *PagedActListInfo, err error) {
|
||||
if actID == 0 && utils.IsTimeZero(createdAtFrom) && utils.IsTimeZero(beginAt) {
|
||||
return nil, fmt.Errorf("actID,createdAtFrom和beginAt中,至少要指定一个条件")
|
||||
}
|
||||
|
||||
@@ -40,8 +40,8 @@ func ebaiPageActStatus2Jx(status int) int {
|
||||
func (c *PurchaseHandler) GetPageActList(ctx *jxcontext.Context, createdFrom time.Time) (actList []*model.Act2, err error) {
|
||||
var typeAndStatusList []*tShowStatusAndTypeInfo
|
||||
for _, showStatus := range []int{
|
||||
ebaiapi.PageActivityStatusWaiting,
|
||||
ebaiapi.PageActivityStatusOnGoing,
|
||||
ebaiapi.PageActivityShowStatusWaiting,
|
||||
ebaiapi.PageActivityShowStatusOnGoing,
|
||||
// ebaiapi.PageActivityStatusEnded,
|
||||
} {
|
||||
for _, activityType := range []int{
|
||||
@@ -81,7 +81,7 @@ func (c *PurchaseHandler) GetPageActList(ctx *jxcontext.Context, createdFrom tim
|
||||
BeginAt: utils.Timestamp2Time(ebaiAct.StartTime),
|
||||
EndAt: utils.Timestamp2Time(ebaiAct.EndTime),
|
||||
VendorMask: model.GetVendorMask(model.VendorIDEBAI),
|
||||
LimitUser: 1,
|
||||
LimitCount: 1,
|
||||
},
|
||||
VendorID: model.VendorIDEBAI,
|
||||
VendorActID: ebaiAct.ActivityID,
|
||||
|
||||
@@ -246,3 +246,25 @@ func (c *ActController) UpdateActStoreSkuBind() {
|
||||
return retVal, "", err
|
||||
})
|
||||
}
|
||||
|
||||
// @Title 添加SKU活动商品
|
||||
// @Description 添加SKU活动商品
|
||||
// @Param token header string true "认证token"
|
||||
// @Param vendorIDs formData string true "厂商ID列表"
|
||||
// @Param createdFrom formData string true "创建开始日期"
|
||||
// @Param isAsync formData bool false "是否异步"
|
||||
// @Success 200 {object} controllers.CallResult
|
||||
// @Failure 200 {object} controllers.CallResult
|
||||
// @router /RefreshPageActs [put]
|
||||
func (c *ActController) RefreshPageActs() {
|
||||
c.callRefreshPageActs(func(params *tActRefreshPageActsParams) (retVal interface{}, errCode string, err error) {
|
||||
timeList, err := jxutils.BatchStr2Time(params.CreatedFrom)
|
||||
if err == nil {
|
||||
var vendorIDs []int
|
||||
if err = jxutils.Strings2Objs(params.VendorIDs, &vendorIDs); err == nil {
|
||||
retVal, err = act.RefreshPageActs(params.Ctx, vendorIDs, timeList[0], params.IsAsync)
|
||||
}
|
||||
}
|
||||
return retVal, "", err
|
||||
})
|
||||
}
|
||||
|
||||
@@ -52,6 +52,15 @@ func init() {
|
||||
Filters: nil,
|
||||
Params: nil})
|
||||
|
||||
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:ActController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:ActController"],
|
||||
beego.ControllerComments{
|
||||
Method: "RefreshPageActs",
|
||||
Router: `/RefreshPageActs`,
|
||||
AllowHTTPMethods: []string{"put"},
|
||||
MethodParams: param.Make(),
|
||||
Filters: nil,
|
||||
Params: nil})
|
||||
|
||||
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:ActController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:ActController"],
|
||||
beego.ControllerComments{
|
||||
Method: "SyncAct",
|
||||
|
||||
Reference in New Issue
Block a user