2019-04-22 02:59:20 +00:00

164 lines
3.2 KiB
Go

package http
import (
"strconv"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/xstr"
)
// addPa 申请保护弹幕.
func addPa(c *bm.Context) {
var (
str string
err error
cid int64
dmids []int64
)
mid, _ := c.Get("mid")
params := c.Request.Form
str = params.Get("cid")
cid, err = strconv.ParseInt(str, 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
str = params.Get("dmids")
if dmids, err = xstr.SplitInts(str); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
err = dmSvc.AddProtectApply(c, mid.(int64), cid, dmids)
c.JSON(nil, err)
}
// recall 弹幕撤回
func recall(c *bm.Context) {
var (
str string
msg string
err error
cid int64
dmid int64
)
mid, _ := c.Get("mid")
params := c.Request.Form
str = params.Get("cid")
cid, err = strconv.ParseInt(str, 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
dmid, err = strconv.ParseInt(params.Get("dmid"), 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
msg, err = dmSvc.Recall(c, mid.(int64), cid, dmid)
if err != nil {
c.JSON(nil, err)
log.Error("dmSvc.Recall(%v,%d,%d) error(%v)", mid, cid, dmid, err)
return
}
res := map[string]interface{}{}
if msg != "" {
res["message"] = msg
}
c.JSONMap(res, err)
}
// midHash 获取用户mid hash.
func midHash(c *bm.Context) {
var err error
mid, _ := c.Get("mid")
hash, err := dmSvc.MidHash(c, mid.(int64))
if err != nil {
c.JSON(nil, err)
log.Error("dmSvc.MidHash(%d) error(%v)", mid.(int64), err)
return
}
res := map[string]interface{}{}
res["data"] = map[string]interface{}{
"hash": hash,
}
c.JSONMap(res, err)
}
// transfer 弹幕转移
func transfer(c *bm.Context) {
p := c.Request.Form
toCid, err := strconv.ParseInt(p.Get("to"), 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
offset, err := strconv.ParseFloat(p.Get("offset"), 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
mid, _ := c.Get("mid")
if err = dmSvc.CheckExist(c, mid.(int64), toCid); err != nil {
c.JSON(nil, err)
return
}
fromCids, err := xstr.SplitInts(p.Get("from"))
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
for _, cid := range fromCids {
if cid == toCid {
c.JSON(nil, ecode.DMTransferSame)
return
}
if err = dmSvc.CheckExist(c, mid.(int64), cid); err != nil {
c.JSON(nil, err)
return
}
if err = dmSvc.TransferJob(c, mid.(int64), cid, toCid, offset); err != nil {
log.Error("dmSvc.TransferJob(mid:%d,from:%d,to:%d,offset:%v) error(%v)", mid.(int64), cid, toCid, offset, err)
c.JSON(nil, err)
return
}
}
c.JSON(nil, err)
}
func transferList(c *bm.Context) {
var (
cid int64
p = c.Request.Form
)
cid, err := strconv.ParseInt(p.Get("cid"), 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
l, err := dmSvc.TransferList(c, cid)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(l, err)
}
func transferRetry(c *bm.Context) {
var (
id int64
err error
p = c.Request.Form
)
id, err = strconv.ParseInt(p.Get("id"), 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
mid, _ := c.Get("mid")
err = dmSvc.TransferRetry(c, id, mid.(int64))
c.JSON(nil, err)
}