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

120 lines
3.0 KiB
Go

package http
import (
"net/url"
"strconv"
pushmdl "go-common/app/service/main/push/model"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
const (
timeZoneMin = -12
timeZoneMax = 14
)
func report(c *bm.Context) {
var (
mid int64
params = c.Request.Form
)
midItf, _ := c.Get("mid")
if midItf != nil {
mid = midItf.(int64)
}
platform := params.Get("mobi_app")
if platform == "" {
c.JSON(nil, ecode.RequestErr)
log.Warn("mobi_app is empty")
return
}
buvid := params.Get("buvid")
if buvid == "" {
c.JSON(nil, ecode.RequestErr)
log.Warn("buvid is empty")
return
}
dt := params.Get("device_token")
build, _ := strconv.Atoi(params.Get("build"))
if build < 1 {
c.JSON(nil, ecode.RequestErr)
log.Warn("build is wrong: %s", params.Get("build"))
return
}
pushSDK, _ := strconv.Atoi(params.Get("push_sdk"))
platformID := pushmdl.Platform(platform, pushSDK)
if platformID == pushmdl.PlatformUnknown {
c.JSON(nil, ecode.RequestErr)
log.Warn("push_sdk is wrong: %s", params.Get("push_sdk"))
return
}
tm, _ := strconv.Atoi(params.Get("time_zone"))
if tm < timeZoneMin || tm > timeZoneMax {
c.JSON(nil, ecode.RequestErr)
log.Warn("time_zone is wrong: %s", params.Get("time_zone"))
return
}
ns, _ := strconv.Atoi(params.Get("notify_switch"))
if ns != 0 && ns != 1 {
c.JSON(nil, ecode.RequestErr)
log.Warn("notify_switch is wrong: %s", params.Get("notify_switch"))
return
}
// tp, _ := strconv.Atoi(params.Get("type"))
appID, _ := strconv.ParseInt(params.Get("app_id"), 10, 64)
if appID == 0 {
appID = pushmdl.APPIDBBPhone
}
deviceBrand, _ := url.QueryUnescape(params.Get("mobile_brand"))
deviceModel, _ := url.QueryUnescape(params.Get("mobile_model"))
osVersion, _ := url.QueryUnescape(params.Get("mobile_version"))
r := &pushmdl.Report{
APPID: appID,
PlatformID: platformID,
Mid: mid,
Buvid: buvid,
DeviceToken: dt,
Build: build,
TimeZone: tm,
NotifySwitch: ns,
DeviceBrand: deviceBrand,
DeviceModel: deviceModel,
OSVersion: osVersion,
}
if dt == "" {
log.Warn("device_token is empty(%+v)", r)
c.JSON(nil, nil) // iOS可能取不到device token
return
}
c.JSON(nil, pushSrv.PubReport(c, r))
}
func reportOld(ctx *bm.Context) {
var params = ctx.Request.Form
buvid := params.Get("buvid")
if buvid == "" {
log.Warn("buvid is empty")
ctx.JSON(nil, nil)
return
}
token := params.Get("device_token")
if token == "" {
log.Warn("device_token is empty")
ctx.JSON(nil, nil)
return
}
ma := params.Get("mobi_app")
if ma != "" && ma != "android" && ma != "iphone" && ma != "ipad" {
log.Warn("invalid mobi_app(%s)", ma)
ctx.JSON(nil, nil)
return
}
mid, _ := strconv.ParseInt(params.Get("mid"), 10, 64)
pid, _ := strconv.Atoi(params.Get("pid"))
timezone, _ := strconv.Atoi(params.Get("time_zone"))
version := params.Get("ver")
ctx.JSON(nil, pushSrv.ReportOld(ctx, token, buvid, version, mid, pid, timezone))
}