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.
459 lines
9.6 KiB
459 lines
9.6 KiB
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) |
|
}
|
|
|