559 lines
15 KiB
Go
559 lines
15 KiB
Go
|
package http
|
|||
|
|
|||
|
import (
|
|||
|
"strconv"
|
|||
|
"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-card/model/card/operate"
|
|||
|
"go-common/app/interface/main/app-feed/model"
|
|||
|
"go-common/app/interface/main/app-feed/model/feed"
|
|||
|
"go-common/library/ecode"
|
|||
|
bm "go-common/library/net/http/blademaster"
|
|||
|
)
|
|||
|
|
|||
|
const (
|
|||
|
_headerBuvid = "Buvid"
|
|||
|
_headerDisplayID = "Display-ID"
|
|||
|
_headerDeviceID = "Device-ID"
|
|||
|
_androidFnvalBuild = 5325000
|
|||
|
_iosFnvalBuild = 8160
|
|||
|
_iosQnBuildGt = 8170
|
|||
|
_iosQnBuildLt = 8190
|
|||
|
_androidQnBuildLt = 5335000
|
|||
|
_qn480 = 32
|
|||
|
)
|
|||
|
|
|||
|
func feedIndex(c *bm.Context) {
|
|||
|
var mid int64
|
|||
|
params := c.Request.Form
|
|||
|
header := c.Request.Header
|
|||
|
if midInter, ok := c.Get("mid"); ok {
|
|||
|
mid = midInter.(int64)
|
|||
|
}
|
|||
|
// get params
|
|||
|
mobiApp := params.Get("mobi_app")
|
|||
|
device := params.Get("device")
|
|||
|
platform := params.Get("platform")
|
|||
|
network := params.Get("network")
|
|||
|
buildStr := params.Get("build")
|
|||
|
idxStr := params.Get("idx")
|
|||
|
pullStr := params.Get("pull")
|
|||
|
styleStr := params.Get("style")
|
|||
|
loginEventStr := params.Get("login_event")
|
|||
|
openEvent := params.Get("open_event")
|
|||
|
bannerHash := params.Get("banner_hash")
|
|||
|
adExtra := params.Get("ad_extra")
|
|||
|
qnStr := params.Get("qn")
|
|||
|
interest := params.Get("interest")
|
|||
|
flushStr := params.Get("flush")
|
|||
|
autoplayCard, _ := strconv.Atoi(params.Get("autoplay_card"))
|
|||
|
fnver, _ := strconv.Atoi(params.Get("fnver"))
|
|||
|
fnval, _ := strconv.Atoi(params.Get("fnval"))
|
|||
|
// check params
|
|||
|
build, err := strconv.Atoi(buildStr)
|
|||
|
if err != nil {
|
|||
|
c.JSON(nil, ecode.RequestErr)
|
|||
|
return
|
|||
|
}
|
|||
|
plat := model.Plat(mobiApp, device)
|
|||
|
if (model.IsAndroid(plat) && build <= _androidFnvalBuild) || (model.IsIOSNormal(plat) && build <= _iosFnvalBuild) {
|
|||
|
fnval = 0
|
|||
|
}
|
|||
|
style, _ := strconv.Atoi(styleStr)
|
|||
|
flush, _ := strconv.Atoi(flushStr)
|
|||
|
// get audit data, if check audit hit.
|
|||
|
is, ok := feedSvc.Audit(c, mobiApp, plat, build)
|
|||
|
if ok {
|
|||
|
c.JSON(is, nil)
|
|||
|
return
|
|||
|
}
|
|||
|
buvid := header.Get(_headerBuvid)
|
|||
|
disid := header.Get(_headerDisplayID)
|
|||
|
dvcid := header.Get(_headerDeviceID)
|
|||
|
// page
|
|||
|
idx, err := strconv.ParseInt(idxStr, 10, 64)
|
|||
|
if err != nil || idx < 0 {
|
|||
|
idx = 0
|
|||
|
}
|
|||
|
// pull default
|
|||
|
pull, err := strconv.ParseBool(pullStr)
|
|||
|
if err != nil {
|
|||
|
pull = true
|
|||
|
}
|
|||
|
// login event
|
|||
|
loginEvent, err := strconv.Atoi(loginEventStr)
|
|||
|
if err != nil {
|
|||
|
loginEvent = 0
|
|||
|
}
|
|||
|
// qn
|
|||
|
qn, _ := strconv.Atoi(qnStr)
|
|||
|
now := time.Now()
|
|||
|
// index
|
|||
|
data, userFeature, isRcmd, newUser, code, feedclean, autoPlayInfoc, err := feedSvc.Index(c, mid, plat, build, buvid, network, mobiApp, device, platform, openEvent, loginEvent, idx, pull, now, bannerHash, adExtra, qn, interest, style, flush, fnver, fnval, autoplayCard)
|
|||
|
res := map[string]interface{}{
|
|||
|
"data": data,
|
|||
|
"config": map[string]interface{}{
|
|||
|
"feed_clean_abtest": feedclean,
|
|||
|
},
|
|||
|
}
|
|||
|
c.JSONMap(res, err)
|
|||
|
if err != nil {
|
|||
|
return
|
|||
|
}
|
|||
|
// infoc
|
|||
|
items := make([]*ai.Item, 0, len(data))
|
|||
|
for _, item := range data {
|
|||
|
items = append(items, item.AI)
|
|||
|
}
|
|||
|
feedSvc.IndexInfoc(c, mid, plat, build, buvid, disid, "/x/feed/index", userFeature, style, code, items, isRcmd, pull, newUser, now, "", dvcid, network, flush, autoPlayInfoc, 0)
|
|||
|
}
|
|||
|
|
|||
|
func feedUpper(c *bm.Context) {
|
|||
|
var mid int64
|
|||
|
params := c.Request.Form
|
|||
|
midInter, _ := c.Get("mid")
|
|||
|
mid = midInter.(int64)
|
|||
|
// get params
|
|||
|
mobiApp := params.Get("mobi_app")
|
|||
|
device := params.Get("device")
|
|||
|
buildStr := params.Get("build")
|
|||
|
pnStr := params.Get("pn")
|
|||
|
psStr := params.Get("ps")
|
|||
|
// check params
|
|||
|
build, err := strconv.Atoi(buildStr)
|
|||
|
if err != nil {
|
|||
|
c.JSON(nil, ecode.RequestErr)
|
|||
|
return
|
|||
|
}
|
|||
|
// check page
|
|||
|
pn, err := strconv.Atoi(pnStr)
|
|||
|
if err != nil || pn < 1 {
|
|||
|
pn = 1
|
|||
|
}
|
|||
|
ps, err := strconv.Atoi(psStr)
|
|||
|
if err != nil || ps < 1 {
|
|||
|
ps = 20
|
|||
|
} else if ps > 200 {
|
|||
|
ps = 200
|
|||
|
}
|
|||
|
plat := model.Plat(mobiApp, device)
|
|||
|
now := time.Now()
|
|||
|
uas, _ := feedSvc.Upper(c, mid, plat, build, pn, ps, now)
|
|||
|
data := map[string]interface{}{}
|
|||
|
if len(uas) != 0 {
|
|||
|
data["item"] = uas
|
|||
|
} else {
|
|||
|
data["item"] = []struct{}{}
|
|||
|
}
|
|||
|
uls, count := feedSvc.UpperLive(c, mid)
|
|||
|
if len(uls) != 0 {
|
|||
|
data["live"] = struct {
|
|||
|
Item []*feed.Item `json:"item"`
|
|||
|
Count int `json:"count"`
|
|||
|
Conut int `json:"conut"`
|
|||
|
}{uls, count, count}
|
|||
|
}
|
|||
|
c.JSON(data, nil)
|
|||
|
}
|
|||
|
|
|||
|
func feedUpperArchive(c *bm.Context) {
|
|||
|
var mid int64
|
|||
|
params := c.Request.Form
|
|||
|
midInter, _ := c.Get("mid")
|
|||
|
mid = midInter.(int64)
|
|||
|
// get params
|
|||
|
mobiApp := params.Get("mobi_app")
|
|||
|
device := params.Get("device")
|
|||
|
buildStr := params.Get("build")
|
|||
|
pnStr := params.Get("pn")
|
|||
|
psStr := params.Get("ps")
|
|||
|
// check params
|
|||
|
build, err := strconv.Atoi(buildStr)
|
|||
|
if err != nil {
|
|||
|
c.JSON(nil, ecode.RequestErr)
|
|||
|
return
|
|||
|
}
|
|||
|
// check page
|
|||
|
pn, err := strconv.Atoi(pnStr)
|
|||
|
if err != nil || pn < 1 {
|
|||
|
pn = 1
|
|||
|
}
|
|||
|
ps, err := strconv.Atoi(psStr)
|
|||
|
if err != nil || ps < 1 {
|
|||
|
ps = 20
|
|||
|
} else if ps > 200 {
|
|||
|
ps = 200
|
|||
|
}
|
|||
|
plat := model.Plat(mobiApp, device)
|
|||
|
now := time.Now()
|
|||
|
uas, _ := feedSvc.UpperArchive(c, mid, plat, build, pn, ps, now)
|
|||
|
data := map[string]interface{}{}
|
|||
|
if len(uas) != 0 {
|
|||
|
data["item"] = uas
|
|||
|
} else {
|
|||
|
data["item"] = []struct{}{}
|
|||
|
}
|
|||
|
c.JSON(data, nil)
|
|||
|
}
|
|||
|
|
|||
|
func feedUpperBangumi(c *bm.Context) {
|
|||
|
var mid int64
|
|||
|
params := c.Request.Form
|
|||
|
midInter, _ := c.Get("mid")
|
|||
|
mid = midInter.(int64)
|
|||
|
// get params
|
|||
|
mobiApp := params.Get("mobi_app")
|
|||
|
device := params.Get("device")
|
|||
|
buildStr := params.Get("build")
|
|||
|
pnStr := params.Get("pn")
|
|||
|
psStr := params.Get("ps")
|
|||
|
// check params
|
|||
|
build, err := strconv.Atoi(buildStr)
|
|||
|
if err != nil {
|
|||
|
c.JSON(nil, ecode.RequestErr)
|
|||
|
return
|
|||
|
}
|
|||
|
// check page
|
|||
|
pn, err := strconv.Atoi(pnStr)
|
|||
|
if err != nil || pn < 1 {
|
|||
|
pn = 1
|
|||
|
}
|
|||
|
ps, err := strconv.Atoi(psStr)
|
|||
|
if err != nil || ps < 1 {
|
|||
|
ps = 20
|
|||
|
} else if ps > 200 {
|
|||
|
ps = 200
|
|||
|
}
|
|||
|
plat := model.Plat(mobiApp, device)
|
|||
|
now := time.Now()
|
|||
|
uas, _ := feedSvc.UpperBangumi(c, mid, plat, build, pn, ps, now)
|
|||
|
data := map[string]interface{}{}
|
|||
|
if len(uas) != 0 {
|
|||
|
data["item"] = uas
|
|||
|
} else {
|
|||
|
data["item"] = []struct{}{}
|
|||
|
}
|
|||
|
c.JSON(data, nil)
|
|||
|
}
|
|||
|
|
|||
|
func feedUpperArticle(c *bm.Context) {
|
|||
|
var mid int64
|
|||
|
params := c.Request.Form
|
|||
|
midInter, _ := c.Get("mid")
|
|||
|
mid = midInter.(int64)
|
|||
|
// get params
|
|||
|
mobiApp := params.Get("mobi_app")
|
|||
|
device := params.Get("device")
|
|||
|
buildStr := params.Get("build")
|
|||
|
pnStr := params.Get("pn")
|
|||
|
psStr := params.Get("ps")
|
|||
|
// check params
|
|||
|
build, err := strconv.Atoi(buildStr)
|
|||
|
if err != nil {
|
|||
|
c.JSON(nil, ecode.RequestErr)
|
|||
|
return
|
|||
|
}
|
|||
|
// check page
|
|||
|
pn, err := strconv.Atoi(pnStr)
|
|||
|
if err != nil || pn < 1 {
|
|||
|
pn = 1
|
|||
|
}
|
|||
|
ps, err := strconv.Atoi(psStr)
|
|||
|
if err != nil || ps < 1 {
|
|||
|
ps = 20
|
|||
|
} else if ps > 200 {
|
|||
|
ps = 200
|
|||
|
}
|
|||
|
plat := model.Plat(mobiApp, device)
|
|||
|
now := time.Now()
|
|||
|
uas, _ := feedSvc.UpperArticle(c, mid, plat, build, pn, ps, now)
|
|||
|
data := map[string]interface{}{}
|
|||
|
if len(uas) != 0 {
|
|||
|
data["item"] = uas
|
|||
|
} else {
|
|||
|
data["item"] = []struct{}{}
|
|||
|
}
|
|||
|
c.JSON(data, nil)
|
|||
|
}
|
|||
|
|
|||
|
func feedUnreadCount(c *bm.Context) {
|
|||
|
var mid int64
|
|||
|
params := c.Request.Form
|
|||
|
midInter, _ := c.Get("mid")
|
|||
|
mid = midInter.(int64)
|
|||
|
// get params
|
|||
|
mobiApp := params.Get("mobi_app")
|
|||
|
device := params.Get("device")
|
|||
|
buildStr := params.Get("build")
|
|||
|
// check params
|
|||
|
build, err := strconv.Atoi(buildStr)
|
|||
|
if err != nil {
|
|||
|
c.JSON(nil, ecode.RequestErr)
|
|||
|
return
|
|||
|
}
|
|||
|
plat := model.Plat(mobiApp, device)
|
|||
|
total, feedCount, articleCount := feedSvc.UnreadCount(c, mid, plat, build, time.Now())
|
|||
|
c.JSON(struct {
|
|||
|
Total int `json:"total"`
|
|||
|
Count int `json:"count"`
|
|||
|
Article int `json:"article"`
|
|||
|
}{total, feedCount, articleCount}, nil)
|
|||
|
}
|
|||
|
|
|||
|
func feedDislike(c *bm.Context) {
|
|||
|
var mid int64
|
|||
|
params := c.Request.Form
|
|||
|
header := c.Request.Header
|
|||
|
if midInter, ok := c.Get("mid"); ok {
|
|||
|
mid = midInter.(int64)
|
|||
|
}
|
|||
|
gt := params.Get("goto")
|
|||
|
if gt == "" {
|
|||
|
c.JSON(nil, ecode.RequestErr)
|
|||
|
return
|
|||
|
}
|
|||
|
id, _ := strconv.ParseInt(params.Get("id"), 10, 64)
|
|||
|
reasonID, _ := strconv.ParseInt(params.Get("reason_id"), 10, 64)
|
|||
|
cmreasonID, _ := strconv.ParseInt(params.Get("cm_reason_id"), 10, 64)
|
|||
|
feedbackID, _ := strconv.ParseInt(params.Get("feedback_id"), 10, 64)
|
|||
|
upperID, _ := strconv.ParseInt(params.Get("mid"), 10, 64)
|
|||
|
rid, _ := strconv.ParseInt(params.Get("rid"), 10, 64)
|
|||
|
tagID, _ := strconv.ParseInt(params.Get("tag_id"), 10, 64)
|
|||
|
adcb := params.Get("ad_cb")
|
|||
|
buvid := header.Get(_headerBuvid)
|
|||
|
if buvid == "" && mid == 0 {
|
|||
|
c.JSON(nil, ecode.RequestErr)
|
|||
|
return
|
|||
|
}
|
|||
|
c.JSON(nil, feedSvc.Dislike(c, mid, id, buvid, gt, reasonID, cmreasonID, feedbackID, upperID, rid, tagID, adcb, time.Now()))
|
|||
|
}
|
|||
|
|
|||
|
func feedDislikeCancel(c *bm.Context) {
|
|||
|
var mid int64
|
|||
|
params := c.Request.Form
|
|||
|
header := c.Request.Header
|
|||
|
if midInter, ok := c.Get("mid"); ok {
|
|||
|
mid = midInter.(int64)
|
|||
|
}
|
|||
|
gt := params.Get("goto")
|
|||
|
if gt == "" {
|
|||
|
c.JSON(nil, ecode.RequestErr)
|
|||
|
return
|
|||
|
}
|
|||
|
id, _ := strconv.ParseInt(params.Get("id"), 10, 64)
|
|||
|
reasonID, _ := strconv.ParseInt(params.Get("reason_id"), 10, 64)
|
|||
|
cmreasonID, _ := strconv.ParseInt(params.Get("cm_reason_id"), 10, 64)
|
|||
|
feedbackID, _ := strconv.ParseInt(params.Get("feedback_id"), 10, 64)
|
|||
|
upperID, _ := strconv.ParseInt(params.Get("mid"), 10, 64)
|
|||
|
rid, _ := strconv.ParseInt(params.Get("rid"), 10, 64)
|
|||
|
tagID, _ := strconv.ParseInt(params.Get("tag_id"), 10, 64)
|
|||
|
adcb := params.Get("ad_cb")
|
|||
|
buvid := header.Get(_headerBuvid)
|
|||
|
if buvid == "" && mid == 0 {
|
|||
|
c.JSON(nil, ecode.RequestErr)
|
|||
|
return
|
|||
|
}
|
|||
|
c.JSON(nil, feedSvc.DislikeCancel(c, mid, id, buvid, gt, reasonID, cmreasonID, feedbackID, upperID, rid, tagID, adcb, time.Now()))
|
|||
|
}
|
|||
|
|
|||
|
func feedUpperRecent(c *bm.Context) {
|
|||
|
var mid int64
|
|||
|
params := c.Request.Form
|
|||
|
if midInter, ok := c.Get("mid"); ok {
|
|||
|
mid = midInter.(int64)
|
|||
|
}
|
|||
|
aidStr := params.Get("param")
|
|||
|
aid, err := strconv.ParseInt(aidStr, 10, 64)
|
|||
|
if err != nil {
|
|||
|
c.JSON(nil, ecode.RequestErr)
|
|||
|
return
|
|||
|
}
|
|||
|
upperStr := params.Get("vmid")
|
|||
|
upperID, err := strconv.ParseInt(upperStr, 10, 64)
|
|||
|
if err != nil {
|
|||
|
c.JSON(nil, ecode.RequestErr)
|
|||
|
return
|
|||
|
}
|
|||
|
c.JSON(struct {
|
|||
|
Item []*feed.Item `json:"item"`
|
|||
|
}{feedSvc.UpperRecent(c, mid, upperID, aid, time.Now())}, nil)
|
|||
|
}
|
|||
|
|
|||
|
func feedIndexTab(c *bm.Context) {
|
|||
|
var (
|
|||
|
id int64
|
|||
|
items []*feed.Item
|
|||
|
isBnj bool
|
|||
|
bnjDays int
|
|||
|
cover string
|
|||
|
err error
|
|||
|
mid int64
|
|||
|
)
|
|||
|
params := c.Request.Form
|
|||
|
if midInter, ok := c.Get("mid"); ok {
|
|||
|
mid = midInter.(int64)
|
|||
|
}
|
|||
|
now := time.Now()
|
|||
|
idStr := params.Get("id")
|
|||
|
mobiApp := params.Get("mobi_app")
|
|||
|
device := params.Get("device")
|
|||
|
buildStr := params.Get("build")
|
|||
|
// check params
|
|||
|
build, err := strconv.Atoi(buildStr)
|
|||
|
if err != nil {
|
|||
|
c.JSON(nil, ecode.RequestErr)
|
|||
|
return
|
|||
|
}
|
|||
|
plat := model.Plat(mobiApp, device)
|
|||
|
if id, _ = strconv.ParseInt(idStr, 10, 64); id <= 0 {
|
|||
|
c.JSON(struct {
|
|||
|
Tab []*operate.Menu `json:"tab"`
|
|||
|
}{feedSvc.Menus(c, plat, build, now)}, nil)
|
|||
|
return
|
|||
|
}
|
|||
|
items, cover, isBnj, bnjDays, err = feedSvc.Actives(c, id, mid, now)
|
|||
|
c.JSON(struct {
|
|||
|
Cover string `json:"cover"`
|
|||
|
IsBnj bool `json:"is_bnj,omitempty"`
|
|||
|
BnjDays int `json:"bnj_days,omitempty"`
|
|||
|
Item []*feed.Item `json:"item"`
|
|||
|
}{cover, isBnj, bnjDays, items}, err)
|
|||
|
}
|
|||
|
|
|||
|
func feedIndex2(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
|
|||
|
}
|
|||
|
_, 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)
|
|||
|
// get audit data, if check audit hit.
|
|||
|
if data, ok := feedSvc.Audit2(c, param.MobiApp, plat, param.Build, param.Column); ok {
|
|||
|
c.JSON(struct {
|
|||
|
Item []card.Handler `json:"items"`
|
|||
|
}{Item: data}, nil)
|
|||
|
return
|
|||
|
}
|
|||
|
if (model.IsAndroid(plat) && param.Build <= _androidFnvalBuild) || (model.IsIOSNormal(plat) && param.Build <= _iosFnvalBuild) {
|
|||
|
param.Fnval = 0
|
|||
|
}
|
|||
|
if (model.IsAndroid(plat) && param.Build > _androidFnvalBuild && param.Build < _androidQnBuildLt) || (model.IsIOSNormal(plat) && param.Build > _iosQnBuildGt && param.Build <= _iosQnBuildLt) || param.Qn <= 0 {
|
|||
|
param.Qn = _qn480
|
|||
|
}
|
|||
|
now := time.Now()
|
|||
|
// index
|
|||
|
plat = model.PlatAPPBuleChange(plat)
|
|||
|
data, config, infc, err := feedSvc.Index2(c, buvid, mid, plat, param, style, now)
|
|||
|
c.JSON(struct {
|
|||
|
Item []card.Handler `json:"items"`
|
|||
|
Config *feed.Config `json:"config"`
|
|||
|
}{Item: data, Config: config}, 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/feed/index", infc.UserFeature, style, infc.Code, items, infc.IsRcmd, param.Pull, infc.NewUser, now, "", dvcid, param.Network, param.Flush, infc.AutoPlayInfoc, param.DeviceType)
|
|||
|
}
|
|||
|
|
|||
|
func feedIndexTab2(c *bm.Context) {
|
|||
|
var (
|
|||
|
id int64
|
|||
|
items []card.Handler
|
|||
|
isBnj bool
|
|||
|
bnjDays int
|
|||
|
cover string
|
|||
|
err error
|
|||
|
mid int64
|
|||
|
)
|
|||
|
params := c.Request.Form
|
|||
|
if midInter, ok := c.Get("mid"); ok {
|
|||
|
mid = midInter.(int64)
|
|||
|
}
|
|||
|
now := time.Now()
|
|||
|
idStr := params.Get("id")
|
|||
|
mobiApp := params.Get("mobi_app")
|
|||
|
device := params.Get("device")
|
|||
|
forceHost, _ := strconv.Atoi(params.Get("force_host"))
|
|||
|
buildStr := params.Get("build")
|
|||
|
// check params
|
|||
|
build, err := strconv.Atoi(buildStr)
|
|||
|
if err != nil {
|
|||
|
c.JSON(nil, ecode.RequestErr)
|
|||
|
return
|
|||
|
}
|
|||
|
plat := model.Plat(mobiApp, device)
|
|||
|
if id, _ = strconv.ParseInt(idStr, 10, 64); id <= 0 {
|
|||
|
c.JSON(struct {
|
|||
|
Tab []*operate.Menu `json:"tab"`
|
|||
|
}{feedSvc.Menus(c, plat, build, now)}, nil)
|
|||
|
return
|
|||
|
}
|
|||
|
items, cover, isBnj, bnjDays, err = feedSvc.Actives2(c, id, mid, mobiApp, plat, build, forceHost, now)
|
|||
|
c.JSON(struct {
|
|||
|
Cover string `json:"cover"`
|
|||
|
IsBnj bool `json:"is_bnj,omitempty"`
|
|||
|
BnjDays int `json:"bnj_days,omitempty"`
|
|||
|
Item []card.Handler `json:"items"`
|
|||
|
}{cover, isBnj, bnjDays, items}, err)
|
|||
|
}
|
|||
|
|
|||
|
func feedIndexConverge(c *bm.Context) {
|
|||
|
var (
|
|||
|
mid int64
|
|||
|
title string
|
|||
|
cover string
|
|||
|
uri string
|
|||
|
)
|
|||
|
if midInter, ok := c.Get("mid"); ok {
|
|||
|
mid = midInter.(int64)
|
|||
|
}
|
|||
|
param := &feed.ConvergeParam{}
|
|||
|
if err := c.Bind(param); err != nil {
|
|||
|
return
|
|||
|
}
|
|||
|
plat := model.Plat(param.MobiApp, param.Device)
|
|||
|
if (model.IsAndroid(plat) && param.Build <= _androidFnvalBuild) || (model.IsIOSNormal(plat) && param.Build <= _iosFnvalBuild) {
|
|||
|
param.Fnval = 0
|
|||
|
}
|
|||
|
data, converge, err := feedSvc.Converge(c, mid, plat, param, time.Now())
|
|||
|
if converge != nil {
|
|||
|
title = converge.Title
|
|||
|
cover = converge.Cover
|
|||
|
uri = converge.URI
|
|||
|
}
|
|||
|
c.JSON(struct {
|
|||
|
Items []card.Handler `json:"items,omitempty"`
|
|||
|
Title string `json:"title,omitempty"`
|
|||
|
Cover string `json:"cover,omitempty"`
|
|||
|
Param string `json:"param,omitempty"`
|
|||
|
URI string `json:"uri,omitempty"`
|
|||
|
}{Items: data, Title: title, Cover: cover, Param: strconv.FormatInt(param.ID, 10), URI: uri}, err)
|
|||
|
}
|