- 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) {
|
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)
|
globals.SugarLogger.Debugf("CreateActFromVendor vendorID:%d, vendorActID:%s", act2.VendorID, act2.VendorActID)
|
||||||
db := dao.GetDB()
|
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)
|
dao.Begin(db)
|
||||||
defer func() {
|
defer func() {
|
||||||
if r := recover(); r != nil {
|
if r := recover(); r != nil {
|
||||||
@@ -500,9 +504,9 @@ func GetActStoreSkuInfo(ctx *jxcontext.Context, actID int, vendorIDs []int) (act
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if len(actStoreSkuMap) == 0 {
|
// if len(actStoreSkuMap) == 0 {
|
||||||
return nil, fmt.Errorf("不能找到活动:%d", actID)
|
// return nil, fmt.Errorf("不能找到活动:%d", actID)
|
||||||
}
|
// }
|
||||||
for _, v := range actStoreSkuMap {
|
for _, v := range actStoreSkuMap {
|
||||||
actStoreSkuList = append(actStoreSkuList, v...)
|
actStoreSkuList = append(actStoreSkuList, v...)
|
||||||
}
|
}
|
||||||
@@ -654,24 +658,94 @@ func SyncAct(ctx *jxcontext.Context, parentTask tasksch.ITask, actID int, vendor
|
|||||||
return hint, err
|
return hint, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func RefreshPageAct(ctx *jxcontext.Context, vendorIDs []int, createdFrom time.Time, isAsync bool) (hint string, err error) {
|
func RefreshPageActs(ctx *jxcontext.Context, vendorIDs []int, createdFrom time.Time, isAsync bool) (hint string, err error) {
|
||||||
// db := dao.GetDB()
|
task := tasksch.NewParallelTask("RefreshPageActs", nil, ctx,
|
||||||
// task := tasksch.NewParallelTask("RefreshPageAct", nil, ctx,
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
// func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
vendorID := batchItemList[0].(int)
|
||||||
// vendorID := batchItemList[0].(int)
|
if handler, _ := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IPurchasePlatformPageActHandler); handler != nil {
|
||||||
// if handler, _ := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IPurchasePlatformPageActHandler); handler != nil {
|
db := dao.GetDB()
|
||||||
// actList, err2 := handler.GetPageActList(ctx, createdFrom)
|
actList, err2 := handler.GetPageActList(ctx, createdFrom)
|
||||||
// if err = err2; err != nil {
|
globals.SugarLogger.Debug(utils.Format4Output(actList, false))
|
||||||
// return nil, err
|
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)
|
actInfo, err2 := dao.QueryActs(db, 0, 0, -1, "", vendorID, nil, []int{model.ActCreateTypeSpider},
|
||||||
// if err = err2; err != nil {
|
nil, 0, 0, 0, utils.DefaultTimeValue, utils.DefaultTimeValue, createdFrom, utils.DefaultTimeValue)
|
||||||
// return nil, err
|
if err = err2; err != nil {
|
||||||
// }
|
return nil, err
|
||||||
// // var
|
}
|
||||||
// }
|
localActMap := make(map[string]*dao.ActVendorInfo)
|
||||||
// return retVal, err
|
for _, v := range actInfo.Data {
|
||||||
// }, vendorIDs)
|
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
|
return hint, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -138,7 +138,8 @@ func GetActStoreSkuVendorInfo(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs
|
|||||||
return actStoreSkuMap, err
|
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) {
|
if actID == 0 && utils.IsTimeZero(createdAtFrom) && utils.IsTimeZero(beginAt) {
|
||||||
return nil, fmt.Errorf("actID,createdAtFrom和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) {
|
func (c *PurchaseHandler) GetPageActList(ctx *jxcontext.Context, createdFrom time.Time) (actList []*model.Act2, err error) {
|
||||||
var typeAndStatusList []*tShowStatusAndTypeInfo
|
var typeAndStatusList []*tShowStatusAndTypeInfo
|
||||||
for _, showStatus := range []int{
|
for _, showStatus := range []int{
|
||||||
ebaiapi.PageActivityStatusWaiting,
|
ebaiapi.PageActivityShowStatusWaiting,
|
||||||
ebaiapi.PageActivityStatusOnGoing,
|
ebaiapi.PageActivityShowStatusOnGoing,
|
||||||
// ebaiapi.PageActivityStatusEnded,
|
// ebaiapi.PageActivityStatusEnded,
|
||||||
} {
|
} {
|
||||||
for _, activityType := range []int{
|
for _, activityType := range []int{
|
||||||
@@ -81,7 +81,7 @@ func (c *PurchaseHandler) GetPageActList(ctx *jxcontext.Context, createdFrom tim
|
|||||||
BeginAt: utils.Timestamp2Time(ebaiAct.StartTime),
|
BeginAt: utils.Timestamp2Time(ebaiAct.StartTime),
|
||||||
EndAt: utils.Timestamp2Time(ebaiAct.EndTime),
|
EndAt: utils.Timestamp2Time(ebaiAct.EndTime),
|
||||||
VendorMask: model.GetVendorMask(model.VendorIDEBAI),
|
VendorMask: model.GetVendorMask(model.VendorIDEBAI),
|
||||||
LimitUser: 1,
|
LimitCount: 1,
|
||||||
},
|
},
|
||||||
VendorID: model.VendorIDEBAI,
|
VendorID: model.VendorIDEBAI,
|
||||||
VendorActID: ebaiAct.ActivityID,
|
VendorActID: ebaiAct.ActivityID,
|
||||||
|
|||||||
@@ -246,3 +246,25 @@ func (c *ActController) UpdateActStoreSkuBind() {
|
|||||||
return retVal, "", err
|
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,
|
Filters: nil,
|
||||||
Params: 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.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:ActController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:ActController"],
|
||||||
beego.ControllerComments{
|
beego.ControllerComments{
|
||||||
Method: "SyncAct",
|
Method: "SyncAct",
|
||||||
|
|||||||
Reference in New Issue
Block a user