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

460 lines
9.6 KiB
Go

package http
import (
"strconv"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
"go-common/library/xstr"
)
func webListDmPurchases(c *bm.Context) {
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
ip := metadata.String(c, metadata.RemoteIP)
danmus, err := danmuSvc.AdvDmPurchaseList(c, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(danmus, nil)
}
func webPassDmPurchase(c *bm.Context) {
params := c.Request.Form
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
danmuIDStr := params.Get("id")
danmuID, err := strconv.ParseInt(danmuIDStr, 10, 64)
if err != nil || danmuID == 0 {
c.JSON(nil, ecode.RequestErr)
return
}
ip := metadata.String(c, metadata.RemoteIP)
err = danmuSvc.PassDmPurchase(c, mid, danmuID, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func webDenyDmPurchase(c *bm.Context) {
params := c.Request.Form
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
danmuIDStr := params.Get("id")
danmuID, err := strconv.ParseInt(danmuIDStr, 10, 64)
if err != nil || danmuID == 0 {
c.JSON(nil, ecode.RequestErr)
return
}
ip := metadata.String(c, metadata.RemoteIP)
err = danmuSvc.DenyDmPurchase(c, mid, danmuID, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func webCancelDmPurchase(c *bm.Context) {
params := c.Request.Form
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
danmuIDStr := params.Get("id")
danmuID, err := strconv.ParseInt(danmuIDStr, 10, 64)
if err != nil || danmuID == 0 {
c.JSON(nil, ecode.RequestErr)
return
}
ip := metadata.String(c, metadata.RemoteIP)
err = danmuSvc.CancelDmPurchase(c, mid, danmuID, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func webDmList(c *bm.Context) {
params := c.Request.Form
pnStr := params.Get("pn")
psStr := params.Get("ps")
idStr := params.Get("id")
pool := params.Get("pool")
aidStr := params.Get("aid")
midStr := params.Get("mid")
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
id, err := strconv.ParseInt(idStr, 10, 64)
if err != nil || id <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil || aid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
pn, err := strconv.Atoi(pnStr)
if err != nil || pn <= 0 {
pn = 1
}
ps, err := strconv.Atoi(psStr)
if err != nil || ps <= 0 {
ps = 20
}
ip := metadata.String(c, metadata.RemoteIP)
order := "progress"
orderStr := params.Get("order")
if orderStr != order {
order = "ctime"
}
list, err := danmuSvc.List(c, mid, aid, id, pn, ps, order, pool, midStr, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(list, nil)
}
func webDmEdit(c *bm.Context) {
params := c.Request.Form
idStr := params.Get("cid")
dmidsStr := params.Get("dmids")
stateStr := params.Get("state")
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
id, err := strconv.ParseInt(idStr, 10, 64)
if err != nil || id <= 0 {
err = ecode.RequestErr
return
}
state, err := strconv.Atoi(stateStr)
if err != nil {
err = ecode.RequestErr
return
}
var dmids []int64
if dmids, err = xstr.SplitInts(dmidsStr); err != nil {
c.JSON(nil, ecode.RequestErr)
log.Error("xstr.SplitInts(dmidsStr %v) err(%v)", dmidsStr, err)
return
}
for _, dmid := range dmids {
if dmid <= 0 {
c.JSON(nil, ecode.RequestErr)
log.Error("dmids range err (dmid %d) err(%v)", dmid, err)
return
}
}
ip := metadata.String(c, metadata.RemoteIP)
err = danmuSvc.Edit(c, mid, id, int8(state), dmids, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func webDmDistri(c *bm.Context) {
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
params := c.Request.Form
cidStr := params.Get("cid")
cid, err := strconv.ParseInt(cidStr, 10, 64)
if err != nil || cid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
aidStr := params.Get("aid")
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil || aid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
ip := metadata.String(c, metadata.RemoteIP)
v, err := arcSvc.Video(c, mid, aid, cid, ip)
if err != nil {
c.JSON(nil, err)
return
}
list := make(map[int64]int64)
if v.From == "vupload" {
list, err = danmuSvc.Distri(c, mid, cid, ip)
if err != nil {
c.JSON(nil, err)
return
}
}
c.JSON(map[string]interface{}{
"duration": v.Duration * 1000,
"type": v.From,
"list": list,
}, nil)
}
func webDmTransfer(c *bm.Context) {
params := c.Request.Form
fromCIDStr := params.Get("from_cid")
toCIDStr := params.Get("to_cid")
offsetStr := params.Get("offset")
offset, err := strconv.ParseFloat(offsetStr, 64)
if err != nil {
offset = float64(0)
}
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
fromCID, err := strconv.ParseInt(fromCIDStr, 10, 64)
if err != nil || fromCID <= 0 {
err = ecode.RequestErr
return
}
toCID, err := strconv.ParseInt(toCIDStr, 10, 64)
if err != nil || toCID <= 0 {
err = ecode.RequestErr
return
}
ip := metadata.String(c, metadata.RemoteIP)
ck := c.Request.Header.Get("cookie")
ak := params.Get("access_key")
err = danmuSvc.Transfer(c, mid, fromCID, toCID, offset, ak, ck, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func webDmUpPool(c *bm.Context) {
params := c.Request.Form
idStr := params.Get("cid")
dmidsStr := params.Get("dmids")
poolStr := params.Get("pool")
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
id, err := strconv.ParseInt(idStr, 10, 64)
if err != nil || id <= 0 {
err = ecode.RequestErr
return
}
pool, err := strconv.Atoi(poolStr)
if err != nil {
err = ecode.RequestErr
return
}
var dmids []int64
if dmids, err = xstr.SplitInts(dmidsStr); err != nil {
c.JSON(nil, ecode.RequestErr)
log.Error("xstr.SplitInts(dmidsStr %v) err(%v)", dmidsStr, err)
return
}
for _, dmid := range dmids {
if dmid <= 0 {
c.JSON(nil, ecode.RequestErr)
log.Error("dmids range err (dmid %d) err(%v)", dmid, err)
return
}
}
ip := metadata.String(c, metadata.RemoteIP)
err = danmuSvc.UpPool(c, id, dmids, int8(pool), mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func webDmReportCheck(c *bm.Context) {
var err error
params := c.Request.Form
cidStr := params.Get("cid")
cid, err := strconv.ParseInt(cidStr, 10, 64)
if err != nil {
err = ecode.RequestErr
return
}
dmidStr := params.Get("dmid")
dmid, err := strconv.ParseInt(dmidStr, 10, 64)
if err != nil {
err = ecode.RequestErr
return
}
opStr := params.Get("op")
op, err := strconv.ParseInt(opStr, 10, 64)
if err != nil {
err = ecode.RequestErr
return
}
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
ip := metadata.String(c, metadata.RemoteIP)
err = danmuSvc.DmReportCheck(c, mid, cid, dmid, op, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func webDmProtectArchive(c *bm.Context) {
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
ip := metadata.String(c, metadata.RemoteIP)
data, err := danmuSvc.DmProtectArchive(c, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(data, nil)
}
func webDmProtectList(c *bm.Context) {
params := c.Request.Form
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
sortStr := params.Get("sort")
if sortStr != "playtime" {
sortStr = "ctime"
}
pnStr := params.Get("page")
pn, err := strconv.ParseInt(pnStr, 10, 64)
if err != nil || pn <= 0 {
pn = 1
}
aidStr := params.Get("aid")
mid, _ := midI.(int64)
ip := metadata.String(c, metadata.RemoteIP)
vlist, err := danmuSvc.DmProtectList(c, mid, pn, aidStr, sortStr, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(vlist, nil)
}
func webDmProtectOper(c *bm.Context) {
params := c.Request.Form
statusStr := params.Get("status")
status, err := strconv.ParseInt(statusStr, 10, 64)
if err != nil || status != 1 {
status = 0
}
idsStr := params.Get("ids")
_, err = xstr.SplitInts(idsStr)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
ip := metadata.String(c, metadata.RemoteIP)
err = danmuSvc.DmProtectOper(c, mid, status, idsStr, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func webDmReport(c *bm.Context) {
params := c.Request.Form
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
pnStr := params.Get("pn")
psStr := params.Get("ps")
pn, err := strconv.ParseInt(pnStr, 10, 64)
if err != nil || pn <= 0 {
pn = 1
}
ps, err := strconv.ParseInt(psStr, 10, 64)
if err != nil || ps <= 0 {
ps = 20
}
aidStr := params.Get("aid")
mid, _ := midI.(int64)
ip := metadata.String(c, metadata.RemoteIP)
data, err := danmuSvc.DmReportList(c, mid, pn, ps, aidStr, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(data, nil)
}
func webUserMid(c *bm.Context) {
params := c.Request.Form
_, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
nameStr := params.Get("name")
ip := metadata.String(c, metadata.RemoteIP)
mid, err := danmuSvc.UserMid(c, nameStr, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSONMap(map[string]interface{}{
"mid": mid,
}, nil)
}