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.
452 lines
10 KiB
452 lines
10 KiB
package http |
|
|
|
import ( |
|
"context" |
|
"encoding/json" |
|
"strconv" |
|
"time" |
|
|
|
"go-common/app/interface/main/app-interface/model" |
|
"go-common/app/interface/main/app-interface/model/space" |
|
"go-common/library/ecode" |
|
"go-common/library/log" |
|
bm "go-common/library/net/http/blademaster" |
|
) |
|
|
|
const ( |
|
_crop = "@750w_250h_1c" |
|
) |
|
|
|
type userAct struct { |
|
Client string `json:"client"` |
|
Buvid string `json:"buvid"` |
|
Mid int64 `json:"mid"` |
|
Time int64 `json:"time"` |
|
From string `json:"from"` |
|
Build string `json:"build"` |
|
ItemID string `json:"item_id"` |
|
ItemType string `json:"item_type"` |
|
Action string `json:"action"` |
|
ActionID string `json:"action_id"` |
|
Extra string `json:"extra"` |
|
} |
|
|
|
func spaceAll(c *bm.Context) { |
|
var ( |
|
mid int64 |
|
vmid int64 |
|
build int |
|
pn, ps int |
|
err error |
|
) |
|
params := c.Request.Form |
|
mobiApp := params.Get("mobi_app") |
|
platform := params.Get("platform") |
|
device := params.Get("device") |
|
buildStr := params.Get("build") |
|
name := params.Get("name") |
|
// check params |
|
if vmid, _ = strconv.ParseInt(params.Get("vmid"), 10, 64); vmid < 1 && name == "" { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
if midInt, ok := c.Get("mid"); ok { |
|
mid = midInt.(int64) |
|
} |
|
if build, err = strconv.Atoi(buildStr); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
if pn, _ = strconv.Atoi(params.Get("pn")); pn < 1 { |
|
pn = 1 |
|
} |
|
if ps, _ = strconv.Atoi(params.Get("ps")); ps < 1 || ps > 20 { |
|
ps = 20 |
|
} |
|
plat := model.Plat(mobiApp, device) |
|
space, err := spaceSvr.Space(c, mid, vmid, plat, build, pn, ps, platform, device, mobiApp, name, time.Now()) |
|
if err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
if model.IsIPhone(plat) && space.Space != nil && space.Space.ImgURL != "" { |
|
space.Space.ImgURL = space.Space.ImgURL + _crop |
|
} |
|
space.Relation = compRealtion(space.Relation, mobiApp, build, device) |
|
c.JSON(space, nil) |
|
// for ai big data |
|
userActPub.Send(context.TODO(), strconv.FormatInt(mid, 10), &userAct{ |
|
Client: mobiApp, |
|
Buvid: c.Request.Header.Get("Buvid"), |
|
Mid: mid, |
|
Time: time.Now().Unix(), |
|
From: params.Get("from"), |
|
Build: buildStr, |
|
ItemID: space.Card.Mid, |
|
ItemType: "mid", |
|
Action: "space", |
|
}) |
|
} |
|
|
|
func upArchive(c *bm.Context) { |
|
var ( |
|
pn, ps int |
|
) |
|
params := c.Request.Form |
|
// check params |
|
vmid, _ := strconv.ParseInt(params.Get("vmid"), 10, 64) |
|
if vmid < 1 { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
if pn, _ = strconv.Atoi(params.Get("pn")); pn < 1 { |
|
pn = 1 |
|
} |
|
if ps, _ = strconv.Atoi(params.Get("ps")); ps < 1 || ps > 20 { |
|
ps = 20 |
|
} |
|
c.JSON(spaceSvr.UpArcs(c, vmid, pn, ps, time.Now()), nil) |
|
} |
|
|
|
func myinfo(c *bm.Context) { |
|
mid, err := authSvc.AuthToken(c) |
|
if err != nil { |
|
shouldChangeError := false |
|
params := c.Request.Form |
|
mobiApp := params.Get("mobi_app") |
|
device := params.Get("device") |
|
build, _ := strconv.Atoi(params.Get("build")) |
|
plat := model.Plat(mobiApp, device) |
|
if model.IsIPhone(plat) && build > config.LoginBuild.Iphone { |
|
shouldChangeError = true |
|
} |
|
if shouldChangeError && ecode.Cause(err).Equal(ecode.NoLogin) { |
|
c.JSON(nil, ecode.UserLoginInvalid) |
|
return |
|
} |
|
c.JSON(nil, err) |
|
return |
|
} |
|
c.JSON(accSvr.Myinfo(c, mid)) |
|
} |
|
|
|
func mine(c *bm.Context) { |
|
params := &space.MineParam{} |
|
if err := c.Bind(params); err != nil { |
|
return |
|
} |
|
if midInter, ok := c.Get("mid"); ok { |
|
params.Mid = midInter.(int64) |
|
} |
|
plat := model.Plat(params.MobiApp, params.Device) |
|
c.JSON(accSvr.Mine(c, params.Mid, params.Platform, params.Filtered, params.Build, plat)) |
|
} |
|
|
|
func mineIpad(c *bm.Context) { |
|
params := &space.MineParam{} |
|
if err := c.Bind(params); err != nil { |
|
return |
|
} |
|
if midInter, ok := c.Get("mid"); ok { |
|
params.Mid = midInter.(int64) |
|
} |
|
plat := model.Plat(params.MobiApp, params.Device) |
|
if model.IsIPad(plat) { |
|
plat = model.PlatIPad |
|
} |
|
c.JSON(accSvr.MineIpad(c, params.Mid, params.Platform, params.Filtered, params.Build, plat)) |
|
} |
|
|
|
func upArticle(c *bm.Context) { |
|
var ( |
|
pn, ps int |
|
) |
|
params := c.Request.Form |
|
// check params |
|
vmid, _ := strconv.ParseInt(params.Get("vmid"), 10, 64) |
|
if vmid < 1 { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
if pn, _ = strconv.Atoi(params.Get("pn")); pn < 1 { |
|
pn = 1 |
|
} |
|
if ps, _ = strconv.Atoi(params.Get("ps")); ps < 1 || ps > 20 { |
|
ps = 20 |
|
} |
|
c.JSON(spaceSvr.UpArticles(c, vmid, pn, ps), nil) |
|
} |
|
|
|
func contribute(c *bm.Context) { |
|
var ( |
|
vmid int64 |
|
build int |
|
pn, ps int |
|
err error |
|
) |
|
params := c.Request.Form |
|
mobiApp := params.Get("mobi_app") |
|
device := params.Get("device") |
|
// check params |
|
if build, err = strconv.Atoi(params.Get("build")); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
if vmid, _ = strconv.ParseInt(params.Get("vmid"), 10, 64); vmid < 1 { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
if pn, _ = strconv.Atoi(params.Get("pn")); pn < 1 { |
|
pn = 1 |
|
} |
|
if ps, _ = strconv.Atoi(params.Get("ps")); ps < 1 || ps > 20 { |
|
ps = 20 |
|
} |
|
plat := model.Plat(mobiApp, device) |
|
c.JSON(spaceSvr.Contribute(c, plat, build, vmid, pn, ps, time.Now())) |
|
} |
|
|
|
func contribution(c *bm.Context) { |
|
var ( |
|
vmid int64 |
|
build int |
|
maxID, minID int64 |
|
size int |
|
err error |
|
) |
|
params := c.Request.Form |
|
mobiApp := params.Get("mobi_app") |
|
device := params.Get("device") |
|
maxIDStr := params.Get("max_id") |
|
minIDStr := params.Get("min_id") |
|
// check params |
|
if build, err = strconv.Atoi(params.Get("build")); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
if vmid, _ = strconv.ParseInt(params.Get("vmid"), 10, 64); vmid < 1 { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
if maxIDStr != "" { |
|
if maxID, err = strconv.ParseInt(maxIDStr, 10, 64); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
} |
|
if minIDStr != "" { |
|
if minID, err = strconv.ParseInt(minIDStr, 10, 64); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
} |
|
if size, _ = strconv.Atoi(params.Get("size")); size < 1 || size > 20 { |
|
size = 20 |
|
} |
|
cursor, err := model.NewCursor(maxID, minID, size) |
|
if err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
log.Error("%+v", err) |
|
return |
|
} |
|
plat := model.Plat(mobiApp, device) |
|
c.JSON(spaceSvr.Contribution(c, plat, build, vmid, cursor, time.Now())) |
|
} |
|
|
|
func upContribute(c *bm.Context) { |
|
var ( |
|
vmid int64 |
|
attrs *space.Attrs |
|
items []*space.Item |
|
err error |
|
) |
|
params := c.Request.Form |
|
vmidStr := params.Get("vmid") |
|
attrsStr := params.Get("attrs") |
|
itemsStr := params.Get("items") |
|
// check params |
|
if vmid, _ = strconv.ParseInt(vmidStr, 10, 64); vmid < 1 { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
if err = json.Unmarshal([]byte(attrsStr), &attrs); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
log.Error("json.Unmarshal(%s) error(%v)", attrsStr, err) |
|
return |
|
} |
|
if err = json.Unmarshal([]byte(itemsStr), &items); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
log.Error("json.Unmarshal(%s) error(%v)", itemsStr, err) |
|
return |
|
} |
|
c.JSON(spaceSvr.AddContribute(c, vmid, attrs, items), nil) |
|
} |
|
|
|
func bangumi(c *bm.Context) { |
|
var ( |
|
mid int64 |
|
pn, ps int |
|
) |
|
params := c.Request.Form |
|
if midInt, ok := c.Get("mid"); ok { |
|
mid = midInt.(int64) |
|
} |
|
// check params |
|
vmid, _ := strconv.ParseInt(params.Get("vmid"), 10, 64) |
|
if vmid < 1 { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
if pn, _ = strconv.Atoi(params.Get("pn")); pn < 1 { |
|
pn = 1 |
|
} |
|
if ps, _ = strconv.Atoi(params.Get("ps")); ps < 1 || ps > 20 { |
|
ps = 20 |
|
} |
|
c.JSON(spaceSvr.Bangumi(c, mid, vmid, nil, pn, ps), nil) |
|
} |
|
|
|
func community(c *bm.Context) { |
|
var ( |
|
pn, ps int |
|
) |
|
params := c.Request.Form |
|
ak := params.Get("access_key") |
|
platform := params.Get("platform") |
|
// check params |
|
vmid, _ := strconv.ParseInt(params.Get("vmid"), 10, 64) |
|
if vmid < 1 { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
if pn, _ = strconv.Atoi(params.Get("pn")); pn < 1 { |
|
pn = 1 |
|
} |
|
if ps, _ = strconv.Atoi(params.Get("ps")); ps < 1 || ps > 20 { |
|
ps = 20 |
|
} |
|
c.JSON(spaceSvr.Community(c, vmid, pn, ps, ak, platform), nil) |
|
} |
|
|
|
func coinArc(c *bm.Context) { |
|
var ( |
|
mid int64 |
|
pn, ps int |
|
) |
|
params := c.Request.Form |
|
if midInt, ok := c.Get("mid"); ok { |
|
mid = midInt.(int64) |
|
} |
|
// check params |
|
vmid, _ := strconv.ParseInt(params.Get("vmid"), 10, 64) |
|
if vmid < 1 { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
if pn, _ = strconv.Atoi(params.Get("pn")); pn < 1 { |
|
pn = 1 |
|
} |
|
if ps, _ = strconv.Atoi(params.Get("ps")); ps < 1 || ps > 20 { |
|
ps = 20 |
|
} |
|
c.JSON(spaceSvr.CoinArcs(c, mid, vmid, nil, pn, ps), nil) |
|
} |
|
|
|
func likeArc(c *bm.Context) { |
|
var ( |
|
mid int64 |
|
pn, ps int |
|
) |
|
params := c.Request.Form |
|
if midInt, ok := c.Get("mid"); ok { |
|
mid = midInt.(int64) |
|
} |
|
// check params |
|
vmid, _ := strconv.ParseInt(params.Get("vmid"), 10, 64) |
|
if vmid < 1 { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
if pn, _ = strconv.Atoi(params.Get("pn")); pn < 1 { |
|
pn = 1 |
|
} |
|
if ps, _ = strconv.Atoi(params.Get("ps")); ps < 1 || ps > 20 { |
|
ps = 20 |
|
} |
|
c.JSON(spaceSvr.LikeArcs(c, mid, vmid, nil, pn, ps), nil) |
|
} |
|
func report(c *bm.Context) { |
|
params := c.Request.Form |
|
ak := params.Get("access_key") |
|
reason := params.Get("reason") |
|
mid, _ := strconv.ParseInt(params.Get("mid"), 10, 64) |
|
if mid < 1 { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
c.JSON(nil, spaceSvr.Report(c, mid, reason, ak)) |
|
} |
|
|
|
func clips(c *bm.Context) { |
|
var ( |
|
pos, ps int |
|
) |
|
params := c.Request.Form |
|
// check params |
|
vmid, _ := strconv.ParseInt(params.Get("vmid"), 10, 64) |
|
if vmid < 1 { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
if pos, _ = strconv.Atoi(params.Get("offset")); pos < 0 { |
|
pos = 0 |
|
} |
|
if ps, _ = strconv.Atoi(params.Get("ps")); ps < 1 || ps > 20 { |
|
ps = 20 |
|
} |
|
c.JSON(spaceSvr.Clip(c, vmid, pos, ps), nil) |
|
} |
|
|
|
func albums(c *bm.Context) { |
|
var ( |
|
pos, ps int |
|
) |
|
params := c.Request.Form |
|
// check params |
|
vmid, _ := strconv.ParseInt(params.Get("vmid"), 10, 64) |
|
if vmid < 1 { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
if pos, _ = strconv.Atoi(params.Get("offset")); pos < 0 { |
|
pos = 0 |
|
} |
|
if ps, _ = strconv.Atoi(params.Get("ps")); ps < 1 || ps > 20 { |
|
ps = 20 |
|
} |
|
c.JSON(spaceSvr.Album(c, vmid, pos, ps), nil) |
|
} |
|
|
|
// checkPay pay movie or bangumi |
|
func compRealtion(rel int, mobiApp string, build int, device string) (r int) { |
|
const ( |
|
_upAndroid = 505000 |
|
_banIphone = 5550 |
|
_banIPad = 10450 |
|
) |
|
switch mobiApp { |
|
case "android", "android_G": |
|
if build < _upAndroid && rel == -1 { |
|
return -999 |
|
} |
|
case "iphone", "iphone_G": |
|
if build < _banIphone && rel == -1 { |
|
return -999 |
|
} |
|
case "ipad", "ipad_G": |
|
if build <= _banIPad && rel == -1 { |
|
return -999 |
|
} |
|
} |
|
return rel |
|
}
|
|
|