Files
go-common/app/interface/main/app-show/http/show.go
2019-04-22 18:49:16 +08:00

426 lines
11 KiB
Go

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