You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
2.0 KiB
69 lines
2.0 KiB
package http |
|
|
|
import ( |
|
"time" |
|
|
|
cdm "go-common/app/interface/main/app-card/model" |
|
"go-common/app/interface/main/app-card/model/card" |
|
"go-common/app/interface/main/app-card/model/card/ai" |
|
"go-common/app/interface/main/app-intl/model" |
|
"go-common/app/interface/main/app-intl/model/feed" |
|
"go-common/library/ecode" |
|
bm "go-common/library/net/http/blademaster" |
|
) |
|
|
|
const ( |
|
_headerBuvid = "Buvid" |
|
_headerDisplayID = "Display-ID" |
|
_headerDeviceID = "Device-ID" |
|
) |
|
|
|
func feedIndex(c *bm.Context) { |
|
var mid int64 |
|
if midInter, ok := c.Get("mid"); ok { |
|
mid = midInter.(int64) |
|
} |
|
header := c.Request.Header |
|
buvid := header.Get(_headerBuvid) |
|
disid := header.Get(_headerDisplayID) |
|
dvcid := header.Get(_headerDeviceID) |
|
param := &feed.IndexParam{} |
|
// get params |
|
if err := c.Bind(param); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
column, ok := cdm.Columnm[param.Column] |
|
if !ok { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
// 兼容老的style逻辑,3为新单列 |
|
style := int(cdm.Columnm[param.Column]) |
|
if style == 1 { |
|
style = 3 |
|
} |
|
// check params |
|
plat := model.Plat(param.MobiApp, param.Device) |
|
now := time.Now() |
|
// index |
|
data, userFeature, isRcmd, newUser, code, autoPlay, feedclean, autoPlayInfoc, err := feedSvc.Index(c, buvid, mid, plat, param, now, style) |
|
autoplayCard := struct { |
|
Column cdm.ColumnStatus `json:"column"` |
|
AutoplayCard int8 `json:"autoplay_card"` |
|
FeedCleanAbtest int8 `json:"feed_clean_abtest"` |
|
}{Column: column, AutoplayCard: autoPlay, FeedCleanAbtest: feedclean} |
|
c.JSON(struct { |
|
Item []card.Handler `json:"items"` |
|
Config interface{} `json:"config"` |
|
}{Item: data, Config: autoplayCard}, err) |
|
if err != nil { |
|
return |
|
} |
|
// infoc |
|
items := make([]*ai.Item, 0, len(data)) |
|
for _, item := range data { |
|
items = append(items, item.Get().Rcmd) |
|
} |
|
feedSvc.IndexInfoc(c, mid, plat, param.Build, buvid, disid, "/x/intl/feed/index", userFeature, style, code, items, isRcmd, param.Pull, newUser, now, "", dvcid, param.Network, param.Flush, autoPlayInfoc, param.DeviceType) |
|
}
|
|
|