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

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