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.
425 lines
11 KiB
425 lines
11 KiB
package http |
|
|
|
import ( |
|
"strconv" |
|
"time" |
|
|
|
"go-common/app/interface/main/app-show/model" |
|
"go-common/app/interface/main/app-show/model/show" |
|
"go-common/library/ecode" |
|
"go-common/library/log" |
|
bm "go-common/library/net/http/blademaster" |
|
"go-common/library/net/metadata" |
|
) |
|
|
|
const ( |
|
_headerBuvid = "Buvid" |
|
_headerDisplayID = "Display-ID" |
|
) |
|
|
|
func shows(c *bm.Context) { |
|
var ( |
|
params = c.Request.Form |
|
header = c.Request.Header |
|
) |
|
// get params |
|
mobiApp := params.Get("mobi_app") |
|
mobiApp = model.MobiAPPBuleChange(mobiApp) |
|
buildStr := params.Get("build") |
|
channel := params.Get("channel") |
|
ak := params.Get("access_key") |
|
// check params |
|
build, err := strconv.Atoi(buildStr) |
|
if err != nil { |
|
log.Error("strconv.Atoi(%s) error(%v)", buildStr, err) |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
device := params.Get("device") |
|
plat := model.Plat(mobiApp, device) |
|
// get audit data, if check audit hit. |
|
ss, ok := showSvc.Audit(c, mobiApp, plat, build) |
|
if ok { |
|
returnJSON(c, ss, nil) |
|
return |
|
} |
|
network := params.Get("network") |
|
ip := metadata.String(c, metadata.RemoteIP) |
|
buvid := header.Get(_headerBuvid) |
|
disid := header.Get(_headerDisplayID) |
|
var mid int64 |
|
if midInter, ok := c.Get("mid"); ok { |
|
mid = midInter.(int64) |
|
} |
|
// display |
|
ss = showSvc.Display(c, mid, plat, build, buvid, channel, ip, ak, network, mobiApp, device, "hans", "", false, time.Now()) |
|
returnJSON(c, ss, nil) |
|
// infoc |
|
if len(ss) == 0 { |
|
return |
|
} |
|
showSvc.Infoc(mid, plat, buvid, disid, ip, "/x/v2/show", ss[0].Body, time.Now()) |
|
} |
|
|
|
func showsRegion(c *bm.Context) { |
|
var ( |
|
params = c.Request.Form |
|
header = c.Request.Header |
|
) |
|
// get params |
|
mobiApp := params.Get("mobi_app") |
|
mobiApp = model.MobiAPPBuleChange(mobiApp) |
|
buildStr := params.Get("build") |
|
channel := params.Get("channel") |
|
ak := params.Get("access_key") |
|
// check params |
|
build, err := strconv.Atoi(buildStr) |
|
if err != nil { |
|
log.Error("strconv.Atoi(%s) error(%v)", buildStr, err) |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
device := params.Get("device") |
|
plat := model.Plat(mobiApp, device) |
|
// get audit data, if check audit hit. |
|
ss, ok := showSvc.Audit(c, mobiApp, plat, build) |
|
if !ok { |
|
ip := metadata.String(c, metadata.RemoteIP) |
|
buvid := header.Get(_headerBuvid) |
|
network := params.Get("network") |
|
var mid int64 |
|
if midInter, ok := c.Get("mid"); ok { |
|
mid = midInter.(int64) |
|
} |
|
// display |
|
language := params.Get("lang") |
|
ss = showSvc.RegionDisplay(c, mid, plat, build, buvid, channel, ip, ak, network, mobiApp, device, language, "", false, time.Now()) |
|
} |
|
res := map[string]interface{}{ |
|
"data": ss, |
|
} |
|
returnDataJSON(c, res, 25, nil) |
|
} |
|
|
|
func showsIndex(c *bm.Context) { |
|
var ( |
|
params = c.Request.Form |
|
header = c.Request.Header |
|
) |
|
// get params |
|
mobiApp := params.Get("mobi_app") |
|
mobiApp = model.MobiAPPBuleChange(mobiApp) |
|
buildStr := params.Get("build") |
|
channel := params.Get("channel") |
|
ak := params.Get("access_key") |
|
// check params |
|
build, err := strconv.Atoi(buildStr) |
|
if err != nil { |
|
log.Error("strconv.Atoi(%s) error(%v)", buildStr, err) |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
device := params.Get("device") |
|
plat := model.Plat(mobiApp, device) |
|
// get audit data, if check audit hit. |
|
ss, ok := showSvc.Audit(c, mobiApp, plat, build) |
|
if !ok { |
|
ip := metadata.String(c, metadata.RemoteIP) |
|
buvid := header.Get(_headerBuvid) |
|
network := params.Get("network") |
|
var mid int64 |
|
if midInter, ok := c.Get("mid"); ok { |
|
mid = midInter.(int64) |
|
} |
|
// display |
|
language := params.Get("lang") |
|
adExtra := params.Get("ad_extra") |
|
ss = showSvc.Index(c, mid, plat, build, buvid, channel, ip, ak, network, mobiApp, device, language, adExtra, false, time.Now()) |
|
} |
|
res := map[string]interface{}{ |
|
"data": ss, |
|
} |
|
returnDataJSON(c, res, 25, nil) |
|
} |
|
|
|
func showTemps(c *bm.Context) { |
|
var ( |
|
params = c.Request.Form |
|
header = c.Request.Header |
|
) |
|
// get params |
|
mobiApp := params.Get("mobi_app") |
|
// check params |
|
device := params.Get("device") |
|
plat := model.Plat(mobiApp, device) |
|
ip := metadata.String(c, metadata.RemoteIP) |
|
var mid int64 |
|
if midInter, ok := c.Get("mid"); ok { |
|
mid = midInter.(int64) |
|
} |
|
// display |
|
data := showSvc.Display(c, mid, plat, 0, header.Get(_headerBuvid), "", ip, "", "wifi", mobiApp, device, "hans", "", true, time.Now()) |
|
returnJSON(c, data, nil) |
|
} |
|
|
|
func showChange(c *bm.Context) { |
|
params := c.Request.Form |
|
header := c.Request.Header |
|
// get params |
|
mobiApp := params.Get("mobi_app") |
|
mobiApp = model.MobiAPPBuleChange(mobiApp) |
|
randStr := params.Get("rand") |
|
buildStr := params.Get("build") |
|
// check params |
|
rand, err := strconv.Atoi(randStr) |
|
if err != nil { |
|
log.Error("strconv.Atoi(%s) error(%v)", randStr, err) |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
device := params.Get("device") |
|
plat := model.Plat(mobiApp, device) |
|
// normal data |
|
ip := metadata.String(c, metadata.RemoteIP) |
|
buvid := header.Get(_headerBuvid) |
|
disid := header.Get(_headerDisplayID) |
|
network := params.Get("network") |
|
var mid int64 |
|
if midInter, ok := c.Get("mid"); ok { |
|
mid = midInter.(int64) |
|
} |
|
build, _ := strconv.Atoi(buildStr) |
|
// change |
|
sis := showSvc.Change(c, mid, build, plat, rand, buvid, ip, network, mobiApp, device) |
|
returnJSON(c, sis, nil) |
|
// infoc |
|
showSvc.Infoc(mid, plat, buvid, disid, ip, "/x/v2/show/change", sis, time.Now()) |
|
} |
|
|
|
// showRegionChange |
|
func showRegionChange(c *bm.Context) { |
|
params := c.Request.Form |
|
mobiApp := params.Get("mobi_app") |
|
mobiApp = model.MobiAPPBuleChange(mobiApp) |
|
device := params.Get("device") |
|
buildStr := params.Get("build") |
|
plat := model.Plat(mobiApp, device) |
|
// get params |
|
randStr := params.Get("rand") |
|
// check params |
|
rand, err := strconv.Atoi(randStr) |
|
if err != nil { |
|
log.Error("strconv.Atoi(%s) error(%v)", randStr, err) |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
ridStr := params.Get("rid") |
|
rid, err := strconv.Atoi(ridStr) |
|
if err != nil { |
|
log.Error("ridStr(%s) error(%v)", ridStr, err) |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
build, _ := strconv.Atoi(buildStr) |
|
data := showSvc.RegionChange(c, rid, rand, plat, build, mobiApp) |
|
returnJSON(c, data, nil) |
|
} |
|
|
|
// showBangumiChange |
|
func showBangumiChange(c *bm.Context) { |
|
params := c.Request.Form |
|
mobiApp := params.Get("mobi_app") |
|
mobiApp = model.MobiAPPBuleChange(mobiApp) |
|
device := params.Get("device") |
|
plat := model.Plat(mobiApp, device) |
|
// get params |
|
randStr := params.Get("rand") |
|
// check params |
|
rand, err := strconv.Atoi(randStr) |
|
if err != nil { |
|
log.Error("strconv.Atoi(%s) error(%v)", randStr, err) |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
data := showSvc.BangumiChange(c, rand, plat) |
|
returnJSON(c, data, nil) |
|
} |
|
|
|
// showArticleChange |
|
func showArticleChange(c *bm.Context) { |
|
data := []*show.Item{} |
|
returnJSON(c, data, nil) |
|
} |
|
|
|
// showDislike |
|
func showDislike(c *bm.Context) { |
|
var ( |
|
params = c.Request.Form |
|
header = c.Request.Header |
|
mid int64 |
|
) |
|
// get params |
|
mobiApp := params.Get("mobi_app") |
|
mobiApp = model.MobiAPPBuleChange(mobiApp) |
|
device := params.Get("device") |
|
plat := model.Plat(mobiApp, device) |
|
if midInter, ok := c.Get("mid"); ok { |
|
mid = midInter.(int64) |
|
} |
|
idStr := params.Get("id") |
|
gt := params.Get("goto") |
|
if !model.IsGoto(gt) { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
// normal data |
|
ip := metadata.String(c, metadata.RemoteIP) |
|
buvid := header.Get(_headerBuvid) |
|
disid := header.Get(_headerDisplayID) |
|
// parse id |
|
id, err := strconv.ParseInt(idStr, 10, 64) |
|
if err != nil { |
|
log.Error("strconv.Atoi(%s) error(%v)", idStr, err) |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
// change |
|
si := showSvc.Dislike(c, mid, plat, id, buvid, mobiApp, device, gt, ip) |
|
returnJSON(c, si, nil) |
|
// infoc |
|
showSvc.Infoc(mid, plat, buvid, disid, ip, "/x/v2/show/change/dislike", []*show.Item{si}, time.Now()) |
|
} |
|
|
|
func showWidget(c *bm.Context) { |
|
params := c.Request.Form |
|
mobiApp := params.Get("mobi_app") |
|
device := params.Get("device") |
|
plat := model.Plat(mobiApp, device) |
|
buildStr := params.Get("build") |
|
build, err := strconv.Atoi(buildStr) |
|
if err != nil { |
|
log.Error("strconv.Atoi(%s) error(%v)", buildStr, err) |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
var data []*show.Item |
|
if ss, ok := showSvc.AuditChild(c, mobiApp, plat, build); ok { |
|
if len(ss) > 3 { |
|
data = ss[:3] |
|
} else { |
|
data = ss |
|
} |
|
returnJSON(c, data, nil) |
|
return |
|
} |
|
data = showSvc.Widget(c, plat) |
|
returnJSON(c, data, nil) |
|
} |
|
|
|
// show live change |
|
func showLiveChange(c *bm.Context) { |
|
params := c.Request.Form |
|
// get params |
|
randStr := params.Get("rand") |
|
ak := params.Get("access_key") |
|
rand, err := strconv.Atoi(randStr) |
|
if err != nil { |
|
log.Error("strconv.Atoi(%s) error(%v)", randStr, err) |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
var mid int64 |
|
if midInter, ok := c.Get("mid"); ok { |
|
mid = midInter.(int64) |
|
} |
|
// change |
|
ip := metadata.String(c, metadata.RemoteIP) |
|
data := showSvc.LiveChange(c, mid, ak, ip, rand, time.Now()) |
|
returnJSON(c, data, nil) |
|
} |
|
|
|
// popular hot tab popular |
|
func popular(c *bm.Context) { |
|
var ( |
|
params = c.Request.Form |
|
header = c.Request.Header |
|
mid int64 |
|
) |
|
mobiApp := params.Get("mobi_app") |
|
device := params.Get("device") |
|
buildStr := params.Get("build") |
|
idxStr := params.Get("idx") |
|
loginEventStr := params.Get("login_event") |
|
lastParam := params.Get("last_param") |
|
build, err := strconv.Atoi(buildStr) |
|
if err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
plat := model.Plat(mobiApp, device) |
|
loginEvent, err := strconv.Atoi(loginEventStr) |
|
if err != nil { |
|
loginEvent = 0 |
|
} |
|
idx, err := strconv.ParseInt(idxStr, 10, 64) |
|
if err != nil || idx < 0 { |
|
idx = 0 |
|
} |
|
now := time.Now() |
|
if midInter, ok := c.Get("mid"); ok { |
|
mid = midInter.(int64) |
|
} |
|
buvid := header.Get(_headerBuvid) |
|
// get audit data, if check audit hit. |
|
data, ok := showSvc.AuditFeed(c, mobiApp, plat, build) |
|
if !ok { |
|
data = showSvc.FeedIndex(c, mid, idx, plat, build, loginEvent, lastParam, mobiApp, device, buvid, now) |
|
} |
|
c.JSON(data, nil) |
|
} |
|
|
|
// popular hot tab popular |
|
func popular2(c *bm.Context) { |
|
var ( |
|
params = c.Request.Form |
|
header = c.Request.Header |
|
mid int64 |
|
) |
|
mobiApp := params.Get("mobi_app") |
|
device := params.Get("device") |
|
buildStr := params.Get("build") |
|
idxStr := params.Get("idx") |
|
loginEventStr := params.Get("login_event") |
|
lastParam := params.Get("last_param") |
|
build, err := strconv.Atoi(buildStr) |
|
if err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
plat := model.Plat(mobiApp, device) |
|
loginEvent, err := strconv.Atoi(loginEventStr) |
|
if err != nil { |
|
loginEvent = 0 |
|
} |
|
idx, err := strconv.ParseInt(idxStr, 10, 64) |
|
if err != nil || idx < 0 { |
|
idx = 0 |
|
} |
|
now := time.Now() |
|
if midInter, ok := c.Get("mid"); ok { |
|
mid = midInter.(int64) |
|
} |
|
buvid := header.Get(_headerBuvid) |
|
// get audit data, if check audit hit. |
|
data, ok := showSvc.AuditFeed2(c, mobiApp, plat, build) |
|
var ( |
|
ver string |
|
) |
|
if !ok { |
|
data, ver, err = showSvc.FeedIndex2(c, mid, idx, plat, build, loginEvent, lastParam, mobiApp, device, buvid, now) |
|
} |
|
config := map[string]interface{}{ |
|
"item_title": "当前热门", |
|
} |
|
c.JSONMap(map[string]interface{}{"data": data, "ver": ver, "config": config}, err) |
|
}
|
|
|