Create & Init Project...

This commit is contained in:
2019-04-22 18:49:16 +08:00
commit fc4fa37393
25440 changed files with 4054998 additions and 0 deletions

View File

@ -0,0 +1,64 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = [
"archive.go",
"cm.go",
"flow.go",
"http.go",
"local.go",
"monitor.go",
"music.go",
"oversea.go",
"pgc.go",
"search.go",
"staff.go",
"stats.go",
"task.go",
"track.go",
"video.go",
],
importpath = "go-common/app/admin/main/videoup/http",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/admin/main/videoup/conf:go_default_library",
"//app/admin/main/videoup/model/archive:go_default_library",
"//app/admin/main/videoup/model/monitor:go_default_library",
"//app/admin/main/videoup/model/music:go_default_library",
"//app/admin/main/videoup/model/oversea:go_default_library",
"//app/admin/main/videoup/model/search:go_default_library",
"//app/admin/main/videoup/service:go_default_library",
"//library/ecode:go_default_library",
"//library/log:go_default_library",
"//library/net/http/blademaster:go_default_library",
"//library/net/http/blademaster/binding:go_default_library",
"//library/net/http/blademaster/middleware/permit:go_default_library",
"//library/net/http/blademaster/middleware/verify:go_default_library",
"//library/net/http/blademaster/render:go_default_library",
"//library/time:go_default_library",
"//library/xstr:go_default_library",
"//vendor/github.com/jinzhu/gorm:go_default_library",
"//vendor/github.com/pkg/errors:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)

View File

@ -0,0 +1,332 @@
package http
import (
"encoding/json"
"io/ioutil"
"go-common/app/admin/main/videoup/model/archive"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/xstr"
)
// submit second_round submit.
func submit(c *bm.Context) {
var (
req = c.Request
bs []byte
err error
)
if bs, err = ioutil.ReadAll(req.Body); err != nil {
log.Error("ioutil.ReadAll() error(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
req.Body.Close()
// params
var ap = &archive.ArcParam{}
if err = json.Unmarshal(bs, ap); err != nil {
log.Error("http submit() json.Unmarshal(%s) error(%v)", string(bs), err)
c.JSON(nil, ecode.RequestErr)
return
}
// TODO check data.
if err = vdaSvc.Submit(c, ap); err != nil {
log.Error("vdaSvc.Submit() error(%v)", err)
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
// batchSubmit batch submit by async.
func batchArchive(c *bm.Context) {
var (
req = c.Request
bs []byte
err error
aps []*archive.ArcParam
)
if bs, err = ioutil.ReadAll(req.Body); err != nil {
log.Error("ioutil.ReadAll() error(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
req.Body.Close()
// params
if err = json.Unmarshal(bs, &aps); err != nil {
log.Error("http submit() json.Unmarshal(%s) error(%v)", string(bs), err)
c.JSON(nil, ecode.RequestErr)
return
}
if ok := vdaSvc.CheckArchive(aps); !ok {
c.JSON(nil, ecode.RequestErr)
return
}
// TODO check data.
if err = vdaSvc.BatchArchive(c, aps, archive.ActionArchiveSubmit); err != nil {
log.Error("vdaSvc.BatchSubmit() error(%v)", err)
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
// batchArchiveSecondRound batch submit by async.
func batchArchiveSecondRound(c *bm.Context) {
var (
req = c.Request
bs []byte
err error
aps []*archive.ArcParam
)
if bs, err = ioutil.ReadAll(req.Body); err != nil {
log.Error("ioutil.ReadAll() error(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
req.Body.Close()
// params
if err = json.Unmarshal(bs, &aps); err != nil {
log.Error("http submit() json.Unmarshal(%s) error(%v)", string(bs), err)
c.JSON(nil, ecode.RequestErr)
return
}
if ok := vdaSvc.CheckArchive(aps); !ok {
c.JSON(nil, ecode.RequestErr)
return
}
// TODO check data.
if err = vdaSvc.BatchArchive(c, aps, archive.ActionArchiveSecondRound); err != nil {
log.Error("vdaSvc.BatchSubmit() error(%v)", err)
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
// batchAttrs batch attr by async.
func batchAttrs(c *bm.Context) {
var (
req = c.Request
bs []byte
err error
aps []*archive.ArcParam
)
if bs, err = ioutil.ReadAll(req.Body); err != nil {
log.Error("ioutil.ReadAll() error(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
req.Body.Close()
// params
if err = json.Unmarshal(bs, &aps); err != nil {
log.Error("http submit() json.Unmarshal(%s) error(%v)", string(bs), err)
c.JSON(nil, ecode.RequestErr)
return
}
if ok := vdaSvc.CheckArchive(aps); !ok {
c.JSON(nil, ecode.RequestErr)
return
}
// TODO check data.
if err = vdaSvc.BatchArchive(c, aps, archive.ActionArchiveAttr); err != nil {
log.Error("vdaSvc.BatchSubmit() error(%v)", err)
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
// batchTypeIDs batch typeid by async.
func batchTypeIDs(c *bm.Context) {
var (
req = c.Request
bs []byte
err error
aps []*archive.ArcParam
)
if bs, err = ioutil.ReadAll(req.Body); err != nil {
log.Error("ioutil.ReadAll() error(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
req.Body.Close()
// params
if err = json.Unmarshal(bs, &aps); err != nil {
log.Error("http submit() json.Unmarshal(%s) error(%v)", string(bs), err)
c.JSON(nil, ecode.RequestErr)
return
}
if ok := vdaSvc.CheckArchive(aps); !ok {
c.JSON(nil, ecode.RequestErr)
return
}
// TODO check data.
if err = vdaSvc.BatchArchive(c, aps, archive.ActionArchiveTypeID); err != nil {
log.Error("vdaSvc.BatchSubmit() error(%v)", err)
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
// // batchZlimit batch modify zlimit.
// func batchZlimit(c wctx.Context) {
// var (
// req = c.Request()
// res = c.Result()
// bs []byte
// err error
// )
// if bs, err = ioutil.ReadAll(req.Body); err != nil {
// log.Error("ioutil.ReadAll() error(%v)", err)
// res["code"] = ecode.RequestErr
// return
// }
// req.Body.Close()
// // params
// var ap = &archive.ArcParam{}
// if err = json.Unmarshal(bs, ap); err != nil {
// log.Error("http submit() json.Unmarshal(%s) error(%v)", string(bs), err)
// res["code"] = ecode.RequestErr
// return
// }
// if len(ap.Aids) == 0 {
// res["code"] = ecode.RequestErr
// return
// }
// if err = vdaSvc.BatchZlimit(c, ap); err != nil {
// log.Error("vdaSvc.submit() error(%v)", err)
// res["code"] = err
// return
// }
// }
// upAuther batch modify zlimit.
func upAuther(c *bm.Context) {
var (
req = c.Request
bs []byte
err error
)
if bs, err = ioutil.ReadAll(req.Body); err != nil {
log.Error("ioutil.ReadAll() error(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
req.Body.Close()
// params
var ap = &archive.ArcParam{}
if err = json.Unmarshal(bs, ap); err != nil {
log.Error("http submit() json.Unmarshal(%s) error(%v)", string(bs), err)
c.JSON(nil, ecode.RequestErr)
return
}
if err = vdaSvc.UpAuther(c, ap); err != nil {
log.Error("vdaSvc.UpAuther() error(%v)", err)
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
// upAuther batch modify zlimit.
func upAccess(c *bm.Context) {
var (
req = c.Request
bs []byte
err error
)
if bs, err = ioutil.ReadAll(req.Body); err != nil {
log.Error("ioutil.ReadAll() error(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
req.Body.Close()
// params
var ap = &archive.ArcParam{}
if err = json.Unmarshal(bs, ap); err != nil {
log.Error("http submit() json.Unmarshal(%s) error(%v)", string(bs), err)
c.JSON(nil, ecode.RequestErr)
return
}
if err = vdaSvc.UpAccess(c, ap); err != nil {
log.Error("vdaSvc.UpAccess() error(%v)", err)
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func upArcTag(c *bm.Context) {
pm := new(archive.TagParam)
if err := c.Bind(pm); err != nil {
c.JSON(nil, err)
return
}
uid, _ := getUIDName(c)
c.JSON(nil, vdaSvc.UpArcTag(c, uid, pm))
}
//通用批量tag接口 添加tag或者删除tag接口
// a.支持频道回查 form_list = channel_review
// b.支持adminBind/upBind(默认走adminBind) is_up_bind=true
// c.支持同步隐藏tag sync_hidden_tag=true
//todo 因为稿件服务不cache tags 也不需要发force_sync.未来计划砍掉审核库archive.tag
func batchTag(c *bm.Context) {
var err error
pm := new(archive.BatchTagParam)
if err = c.Bind(pm); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
//仅同步隐藏tag时 批量tag操作 pm.tags为空 && SyncHiddenTag = true
if (pm.Action != "" && pm.Action != "add" && pm.Action != "delete") || (pm.Action != "" && pm.Tags == "" && !pm.SyncHiddenTag) {
c.JSON(nil, ecode.RequestErr)
return
}
if pm.Action == "" && pm.Tags == "" && pm.FromList != archive.FromListChannelReview {
c.JSON(nil, nil)
return
}
uid, _ := getUIDName(c)
data := map[string]interface{}{}
data["message"], err = vdaSvc.BatchUpTag(c, uid, pm)
c.JSONMap(data, err)
}
func channelInfo(c *bm.Context) {
aid := c.Request.Form.Get("aid")
aids, err := xstr.SplitInts(aid)
if err != nil {
log.Error("channelInfo xstr.SplitInts(%s) error(%v)", aid, err)
c.JSON(nil, ecode.RequestErr)
return
}
//批量上线50个
if len(aids) > 50 || len(aids) <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
data := map[string]interface{}{}
data["data"], err = vdaSvc.GetChannelInfo(c, aids)
if err != nil {
data["message"] = "频道查询API异常"
}
c.JSONMap(data, err)
}
func aiTrack(c *bm.Context) {
v := new(struct {
Aid []int64 `form:"aid,split" validate:"required"`
})
if err := c.Bind(v); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(vdaSvc.AITrack(c, v.Aid))
}

View File

@ -0,0 +1,104 @@
package http
import (
"encoding/json"
"io/ioutil"
"go-common/app/admin/main/videoup/model/archive"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
xtime "go-common/library/time"
)
// upArchiveArr update archive attribute.
func upCMArr(c *bm.Context) {
req := c.Request
// read
bs, err := ioutil.ReadAll(req.Body)
if err != nil {
log.Error("ioutil.ReadAll() error(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
req.Body.Close()
// params
var ap struct {
Aid int64 `json:"aid"`
AdminID int64 `json:"admin_id"`
RankAttr struct {
Main int32 `json:"main"`
RecentArc int32 `json:"recent_arc"`
AllArc int32 `json:"all_arc"`
} `json:"rank_attr"`
DynamicAttr struct {
Main int32 `json:"main"`
} `json:"dynamic_attr"`
RecommendAttr struct {
Main int32 `json:"main"`
} `json:"recommend_attr"`
}
if err = json.Unmarshal(bs, &ap); err != nil {
log.Error("http upArchiveArr() json.Unmarshal(%s) error(%v)", string(bs), err)
c.JSON(nil, ecode.RequestErr)
return
}
if ap.Aid == 0 {
log.Error("aid==0")
c.JSON(nil, ecode.RequestErr)
return
}
attrs := make(map[uint]int32, 6)
attrs[archive.AttrBitNoRank] = ap.RankAttr.Main
attrs[archive.AttrBitNoDynamic] = ap.DynamicAttr.Main
attrs[archive.AttrBitNoRecommend] = ap.RecommendAttr.Main
// forbid
forbidAttrs := make(map[string]map[uint]int32, 3)
forbidAttrs[archive.ForbidRank] = map[uint]int32{
archive.ForbidRankMain: ap.RankAttr.Main,
archive.ForbidRankRecentArc: ap.RankAttr.RecentArc,
archive.ForbidRankAllArc: ap.RankAttr.AllArc,
}
forbidAttrs[archive.ForbidDynamic] = map[uint]int32{
archive.ForbidDynamicMain: ap.DynamicAttr.Main,
}
forbidAttrs[archive.ForbidRecommend] = map[uint]int32{
archive.ForbidRecommendMain: ap.RecommendAttr.Main,
}
// update attrs and forbid
c.JSON(nil, vdaSvc.UpArchiveAttr(c, ap.Aid, ap.AdminID, attrs, forbidAttrs, ""))
}
// upCMArrDelay up cm archive delaytime
func upCMArcDelay(c *bm.Context) {
req := c.Request
// read
bs, err := ioutil.ReadAll(req.Body)
if err != nil {
log.Error("ioutil.ReadAll() error(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
req.Body.Close()
// params
var ap struct {
Aid int64 `json:"aid"`
Dtime xtime.Time `json:"dtime"`
}
if err = json.Unmarshal(bs, &ap); err != nil {
log.Error("http struct aid json.Unmarshal(%s) error(%v)", string(bs), err)
c.JSON(nil, ecode.RequestErr)
return
}
if ap.Aid == 0 {
log.Error("aid==0")
c.JSON(nil, ecode.RequestErr)
return
}
if err = vdaSvc.UpArcDtime(c, ap.Aid, ap.Dtime); err != nil {
log.Error("vdaSvc.UpArcDtime() error(%v)", err)
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}

View File

@ -0,0 +1,20 @@
package http
import (
"go-common/app/admin/main/videoup/model/archive"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
//查询某个资源所命中的所有流量套餐
func hitFlows(c *bm.Context) {
pm := new(struct {
OID int64 `form:"aid" validate:"required"`
})
if err := c.Bind(pm); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(vdaSvc.HitFlowGroups(c, pm.OID, []int8{archive.PoolArcForbid}))
}

View File

@ -0,0 +1,139 @@
package http
import (
"go-common/app/admin/main/videoup/conf"
"go-common/app/admin/main/videoup/service"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/middleware/permit"
"go-common/library/net/http/blademaster/middleware/verify"
)
var (
vfySvc *verify.Verify
authSrc *permit.Permit
vdaSvc *service.Service
)
// Init http server
func Init(c *conf.Config, s *service.Service) {
vdaSvc = s
vfySvc = verify.New(nil)
authSrc = permit.New(c.Auth)
engine := bm.DefaultServer(c.BM)
innerRouter(engine)
// init internal server
if err := engine.Start(); err != nil {
log.Error("engine.Start error(%v)", err)
panic(err)
}
}
// innerRouter
func innerRouter(e *bm.Engine) {
e.Ping(ping)
group2 := e.Group("/x/admin/videoup", authSrc.Permit(""))
{
task := group2.Group("/task")
{
task.GET("/weightconfig/maxweight", authSrc.Permit("TASKWEIGHT"), maxweight)
task.POST("/weightconfig/add", authSrc.Permit("TASKWEIGHT"), addwtconf)
task.POST("/weightconfig/del", authSrc.Permit("TASKWEIGHT"), delwtconf)
task.GET("/weightconfig/list", authSrc.Permit("TASKWEIGHT"), listwtconf)
task.GET("/weightlog/list", authSrc.Permit("TASKWEIGHT"), listwtlog)
task.GET("/wcv/show", authSrc.Permit("TASKWEIGHT"), show)
task.POST("/wcv/set", authSrc.Permit("TASKWEIGHT"), set)
// 用户在线
task.GET("/consumer/on", checkgroup(), on)
task.GET("/consumer/off", checkgroup(), off) //自己退出
task.POST("/consumer/forceoff", forceoff) //强制踢出
task.GET("/online", authSrc.Permit("ONLINE"), online)
task.GET("/inoutlist", inoutlist)
// 任务状态
task.POST("/delay", checkowner(), delay)
task.POST("/free", taskfree)
}
oversea := group2.Group("/oversea")
{
oversea.GET("/policy/groups", policyGroups) //策略组列表
oversea.POST("/policy/group/add", authSrc.Permit("POLICY_GROUP_EDIT"), addPolicyGroup) //新增策略组
oversea.POST("/policy/group/edit", authSrc.Permit("POLICY_GROUP_EDIT"), editPolicyGroup) //编辑策略组
oversea.POST("/policy/groups/del", authSrc.Permit("POLICY_GROUP_EDIT"), delPolicyGroups) //删除策略组
oversea.POST("/policy/groups/restore", authSrc.Permit("POLICY_GROUP_EDIT"), restorePolicyGroups) //恢复被删除的策略组
oversea.GET("/policies", policies) //获取策略列表
oversea.GET("/archive/groups", archiveGroups) //稿件策略组列表
oversea.POST("/policies/add", authSrc.Permit("POLICY_ITEM_EDIT"), addPolicies) //给组添加策略
oversea.POST("/policies/del", authSrc.Permit("POLICY_ITEM_EDIT"), delPolicies) //删除策略
}
search := group2.Group("/search")
{
search.GET("video", searchVideo)
search.GET("archive", searchArchive)
search.POST("copyright", searchCopyright)
}
staff := group2.Group("/staff")
{
staff.GET("", staffs)
staff.POST("/batch/submit", authSrc.Permit("ARC_STAFF"), batchStaff)
}
//监控规则
monitor := group2.Group("/monitor")
{
monitor.GET("/rule/result", authSrc.Permit("MONITOR_RULE_READ"), monitorRuleResult) //查看监控规则结果
monitor.GET("/rule/result/oids", monitorRuleResultOids)
monitor.POST("/rule/update", authSrc.Permit("MONITOR_RULE_EDIT"), monitorRuleUpdate) //修改监控规则
monitor.GET("/notify", monitorNotify)
}
group2.POST("/archive/uptag", upArcTag)
group2.POST("/archive/batch/tag", authSrc.Permit("BATCH_ARC_CHANNEL"), batchTag)
group2.GET("/archive/channel/info", channelInfo)
}
group := e.Group("/va", vfySvc.Verify)
{
group.POST("/video/audit", videoAudit)
group.POST("/video/batch/video", batchVideo)
group.POST("/video/add", upVideo)
group.POST("/video/change/index", changeIndex)
group.POST("/video/del", delVideo)
group.POST("/video/weblink/up", upWebLink)
group.POST("/archive/submit", submit)
group.POST("/archive/batch/archive", batchArchive)
group.POST("/archive/batch/databus", batchArchiveSecondRound)
group.POST("/archive/batch/attrs", batchAttrs)
group.POST("/archive/batch/types", batchTypeIDs)
group.POST("/archive/auther/up", upAuther)
group.POST("/archive/access/up", upAccess)
group.GET("/archive/flow/hit", hitFlows)
group.GET("/archive/aitrack", aiTrack)
group.POST("/cm/attr/up", upCMArr)
group.POST("/cm/dtime/up", upCMArcDelay)
group.POST("/pgc/pass", passByPGC)
group.POST("/pgc/modify", modifyByPGC)
group.POST("/pgc/lock", lockByPGC)
group.GET("/track/archive", trackArchive)
group.GET("/track/video", trackVideo)
group.GET("/track/detail", trackDetail)
group.GET("/task/tooks", taskTooks)
group.GET("/stats/points", statsPoints)
group.GET("/task/next", next)
group.GET("/task/list", list)
//同步音乐库 add,edit,delete ,log full sync tools
group.POST("/music/sync", syncMusic)
group.GET("/task/info", info)
monitor := group.Group("/monitor")
{
monitor.GET("/notify", monitorNotify)
}
}
}

View File

@ -0,0 +1,17 @@
package http
import (
"net/http"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
// ping check server ok.
func ping(c *bm.Context) {
if vdaSvc.Ping(c) != nil {
log.Error("videoup-admin service ping error")
c.AbortWithStatus(http.StatusServiceUnavailable)
}
}

View File

@ -0,0 +1,117 @@
package http
import (
"encoding/json"
"go-common/app/admin/main/videoup/model/monitor"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
// monitorRuleResult 获取监控规则的监控结果
func monitorRuleResult(c *bm.Context) {
var (
err error
res []*monitor.RuleResultData
p = &monitor.RuleResultParams{}
)
if err = c.Bind(p); err != nil {
return
}
if p == nil {
c.JSON(nil, ecode.RequestErr)
return
}
if p.Type == 0 || p.Business == 0 {
c.JSON(nil, ecode.RequestErr)
return
}
if res, err = vdaSvc.MonitorResult(c, p); err != nil {
log.Error("vdaSvc.MonitorResult(%v) error(%v)", p, err)
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(res, nil)
}
// monitorRuleUpdate 更新/添加监控规则
func monitorRuleUpdate(c *bm.Context) {
var (
err error
p = new(struct {
Rule string `form:"rule" validate:"required"`
})
rule = &monitor.Rule{}
)
if err = c.Bind(p); err != nil {
log.Error("c.Bind(%v) error(%v)", p, err)
return
}
if p == nil {
c.JSON(nil, ecode.RequestErr)
return
}
if err = json.Unmarshal([]byte(p.Rule), rule); err != nil {
log.Error("json.Unmarshal(%s) error(%v)", p.Rule, err)
c.JSON(nil, ecode.RequestErr)
return
}
if rule.Type == 0 || rule.Business == 0 || rule.RuleConf == nil {
c.JSON(nil, ecode.RequestErr)
return
}
UID, _ := getUIDName(c)
rule.UID = UID
if err = vdaSvc.MonitorRuleUpdate(c, rule); err != nil {
log.Error("vdaSvc.MonitorRuleUpdate(%v) error(%v)", rule, err)
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func monitorRuleResultOids(c *bm.Context) {
var (
err error
p = new(struct {
Type int8 `form:"type" validate:"required"`
Business int8 `form:"business" validate:"required"`
ID int64 `form:"id" validate:"required"`
})
total int
oidMap map[int64]int
)
if err = c.Bind(p); err != nil {
log.Error("c.Bind(%v) error(%v)", p, err)
return
}
if p.Type == 0 || p.Business == 0 || p.ID == 0 {
c.JSON(nil, ecode.RequestErr)
return
}
if total, oidMap, _, err = vdaSvc.MoniStayOids(c, p.Type, p.Business, p.ID); err != nil {
log.Error("vdaSvc.MoniStatsOids(%v) error(%v)", p, err)
c.JSON(nil, ecode.RequestErr)
return
}
r := new(struct {
Total int `json:"total"`
Oids map[int64]int `json:"oids"`
})
r.Total = total
r.Oids = oidMap
c.JSON(r, nil)
}
func monitorNotify(c *bm.Context) {
var (
err error
res []*monitor.RuleResultData
)
if res, err = vdaSvc.MonitorNotifyResult(c); err != nil {
log.Error("vdaSvc.MonitorNotifyResult() error(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(res, nil)
}

View File

@ -0,0 +1,71 @@
package http
import (
"github.com/jinzhu/gorm"
"github.com/pkg/errors"
"go-common/app/admin/main/videoup/model/archive"
"go-common/app/admin/main/videoup/model/music"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/binding"
)
const ()
func getUIDName(c *bm.Context) (uid int64, uname string) {
unamei, ok := c.Get("username")
if ok {
uname = unamei.(string)
}
uidi, ok := c.Get("uid")
if ok {
uid = uidi.(int64)
}
return
}
func syncMusic(c *bm.Context) {
var (
err error
)
mp := &music.Param{}
if err = c.BindWith(mp, binding.Form); err != nil {
log.Error("vdaSvc.syncMusic bind error(%+v)", err)
log.Error("vdaSvc.syncMusic bind error trace(%+v)", errors.Wrap(err, "sync bind error"))
return
}
m := &music.Music{Sid: mp.Sid, Name: mp.Name, Cover: mp.Cover, Stat: mp.Stat, Mid: mp.Mid, Musicians: mp.Musicians, Categorys: mp.Categorys, Playurl: mp.Playurl, PubTime: mp.PubTime, Duration: mp.Duration, Filesize: mp.Filesize, State: mp.State}
if m.State != music.MusicDelete {
m.State = music.MusicOpen
}
exist := music.Music{}
if err = vdaSvc.DB.Where("sid=?", mp.Sid).First(&exist).Error; err != nil && err != gorm.ErrRecordNotFound {
log.Error("vdaSvc.syncMusic find error(%+v)", err)
c.JSON(nil, errors.Wrap(err, "sync find sid error"))
return
}
uid, uname := getUIDName(c)
if exist.ID > 0 {
m.ID = exist.ID
if err = vdaSvc.DB.Model(&music.Music{}).Where("sid=?", mp.Sid).Update(m).Update(map[string]int8{"state": m.State}).Error; err != nil {
log.Error("vdaSvc.syncMusic update error(%+v)", err)
c.JSON(nil, errors.Wrap(err, "sync update error"))
return
}
if m.State == music.MusicDelete {
vdaSvc.SendMusicLog(c, archive.LogClientArchiveMusicTypeMusic, &music.LogParam{ID: m.ID, UID: uid, UName: uname, Action: "del", Name: m.Name})
} else {
vdaSvc.SendMusicLog(c, archive.LogClientArchiveMusicTypeMusic, &music.LogParam{ID: m.ID, UID: uid, UName: uname, Action: "update", Name: m.Name})
}
} else {
if err = vdaSvc.DB.Create(m).Error; err != nil {
log.Error("vdaSvc.syncMusic Create error(%+v)", err)
c.JSON(nil, errors.Wrap(err, "sync add error"))
return
}
vdaSvc.SendMusicLog(c, archive.LogClientArchiveMusicTypeMusic, &music.LogParam{ID: m.ID, UID: uid, UName: uname, Action: "add", Name: m.Name})
}
c.JSON(map[string]int64{
"id": m.ID,
}, nil)
}

View File

@ -0,0 +1,279 @@
package http
import (
"encoding/json"
"go-common/app/admin/main/videoup/model/oversea"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"strconv"
"strings"
)
// policyGroups 策略组列表
func policyGroups(c *bm.Context) {
var (
uid int64
err error
data *oversea.PolicyGroupData
)
v := new(struct {
UName string `form:"username"`
GroupID int64 `form:"group_id"`
Type int8 `form:"type"`
State int8 `form:"state" default:"-1"`
Pn int64 `form:"pn" default:"1"`
Ps int64 `form:"ps" default:"20"`
Order string `form:"order"`
Sort string `form:"sort"`
})
if err = c.Bind(v); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if v.UName != "" {
if uid, err = vdaSvc.GetUID(c, v.UName); err != nil {
log.Warn("vdaSvc.GetUID(%s) error(%v)", v.UName, err)
c.JSON(nil, ecode.RequestErr)
return
}
}
data, err = vdaSvc.PolicyGroups(c, uid, v.GroupID, v.Type, v.State, v.Ps, v.Pn, v.Order, v.Sort)
if err != nil {
log.Error("vdaSvc.PolicyGroups() err(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(data, err)
}
// archiveGroups 稿件的策略组
func archiveGroups(c *bm.Context) {
var (
err error
)
v := new(struct {
Aid int64 `form:"aid" validate:"required"`
})
if err = c.Bind(v); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
groups, err := vdaSvc.ArchiveGroups(c, v.Aid)
if err != nil {
log.Error("vdaSvc.ArchiveGroups() err(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(groups, err)
}
// addPolicyGroup 添加策略组
func addPolicyGroup(c *bm.Context) {
var (
v = new(struct {
Name string `form:"name" validate:"required"`
Type int8 `form:"type" validate:"required"`
Remark string `form:"remark" default:""`
})
group = &oversea.PolicyGroup{}
uid, _ = getUIDName(c)
err error
)
if uid == 0 {
c.JSON(nil, ecode.Unauthorized)
return
}
if err = c.Bind(v); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if v.Name == "" {
c.JSON(nil, ecode.RequestErr)
return
}
group.Name = v.Name
group.Type = v.Type
group.UID = uid
group.Remark = v.Remark
err = vdaSvc.AddPolicyGroup(c, group)
if err != nil {
log.Error("vdaSvc.AddPolicyGroup() err(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(group, nil)
}
// editPolicyGroup 编辑策略组
func editPolicyGroup(c *bm.Context) {
var (
v = new(struct {
ID int64 `form:"id" validate:"required"`
Name string `form:"name" validate:"required"`
Remark string `form:"remark" default:""`
})
attrs = make(map[string]interface{})
uid, _ = getUIDName(c)
err error
)
if uid == 0 {
c.JSON(nil, ecode.Unauthorized)
return
}
if err = c.Bind(v); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
attrs["name"] = v.Name
attrs["uid"] = uid
attrs["remark"] = v.Remark
err = vdaSvc.UpdatePolicyGroup(c, v.ID, attrs)
if err != nil {
log.Error("vdaSvc.UpdatePolicyGroup() err(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
// delPolicyGroups 删除策略组
func delPolicyGroups(c *bm.Context) {
upPolicyGroupStates(c, oversea.StateDeleted)
}
// restorePolicyGroups 恢复策略组
func restorePolicyGroups(c *bm.Context) {
upPolicyGroupStates(c, oversea.StateOK)
}
// upPolicyGroupStates 修改策略组状态
func upPolicyGroupStates(c *bm.Context, state int8) {
var (
v = new(struct {
IDStr string `form:"ids" validate:"required"`
})
attrs = make(map[string]interface{})
intIDs []int64
strIDs []string
uid, _ = getUIDName(c)
err error
)
if uid == 0 {
c.JSON(nil, ecode.Unauthorized)
return
}
if err = c.Bind(v); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
strIDs = strings.Split(v.IDStr, ",")
intIDs = make([]int64, len(strIDs))
for i, id := range strIDs {
intIDs[i], err = strconv.ParseInt(id, 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
}
attrs["state"] = state
attrs["uid"] = uid
err = vdaSvc.UpdatePolicyGroups(c, intIDs, attrs)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
// policies 策略组下的策略
func policies(c *bm.Context) {
var (
err error
v = new(struct {
Gid int64 `form:"group_id" validate:"required"`
})
)
if err = c.Bind(v); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if v.Gid == 0 {
c.JSON(nil, ecode.RequestErr)
return
}
items, err := vdaSvc.PolicyItems(c, v.Gid)
if err != nil {
log.Error("vdaSvc.PolicyItems() err(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(items, nil)
}
// addPolicies 添加策略
func addPolicies(c *bm.Context) {
var (
err error
v = new(struct {
Gid int64 `form:"group_id" validate:"required"`
JSON string `form:"items" validate:"required"`
})
items []*oversea.PolicyParams
uid, _ = getUIDName(c)
)
if err = c.Bind(v); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if err = json.Unmarshal([]byte(v.JSON), &items); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if v.Gid == 0 {
c.JSON(nil, ecode.RequestErr)
return
}
err = vdaSvc.AddPolicies(c, uid, v.Gid, items)
if err != nil {
log.Error("vdaSvc.AddPolicies() err(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
// delPolicies 删除策略
func delPolicies(c *bm.Context) {
var (
v = new(struct {
Gid int64 `form:"group_id" validate:"required"`
IDStr string `form:"ids" validate:"required"`
})
uid, _ = getUIDName(c)
intIDs []int64
strIDs []string
err error
)
if err = c.Bind(v); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
strIDs = strings.Split(v.IDStr, ",")
intIDs = make([]int64, len(strIDs))
for i, id := range strIDs {
intIDs[i], err = strconv.ParseInt(id, 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
}
err = vdaSvc.DelPolices(c, uid, v.Gid, intIDs)
if err != nil {
log.Error("vdaSvc.DelPolices() err(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}

View File

@ -0,0 +1,135 @@
package http
import (
"encoding/json"
"io/ioutil"
"time"
"go-common/app/admin/main/videoup/model/archive"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
// passByPGC update archive state pass by pgc
func passByPGC(c *bm.Context) {
req := c.Request
// read
bs, err := ioutil.ReadAll(req.Body)
if err != nil {
log.Error("ioutil.ReadAll() error(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
req.Body.Close()
// params
var ap struct {
Aid int64 `json:"aid"`
Gid int64 `json:"gid"`
IsJump int32 `json:"is_jump"`
AllowBp int32 `json:"allow_bp"`
IsBangumi int32 `json:"is_bangumi"`
IsMovie int32 `json:"is_movie"`
BadgePay int32 `json:"is_pay"`
IsPGC int32 `json:"is_pgc"`
RedirectURL string `json:"redirect_url"`
}
if err = json.Unmarshal(bs, &ap); err != nil {
log.Error("http upArchiveArr() json.Unmarshal(%s) error(%v)", string(bs), err)
c.JSON(nil, ecode.RequestErr)
return
}
if ap.Aid == 0 {
log.Error("aid==0")
c.JSON(nil, ecode.RequestErr)
return
}
attrs := make(map[uint]int32, 7)
attrs[archive.AttrBitJumpURL] = ap.IsJump
attrs[archive.AttrBitAllowBp] = ap.AllowBp
attrs[archive.AttrBitIsBangumi] = ap.IsBangumi
attrs[archive.AttrBitIsMovie] = ap.IsMovie
attrs[archive.AttrBitBadgepay] = ap.BadgePay
attrs[archive.AttrBitIsPGC] = ap.IsPGC
attrs[archive.AttrBitLimitArea] = 0
if ap.Gid > 1 {
attrs[archive.AttrBitLimitArea] = 1
}
c.JSON(nil, vdaSvc.PassByPGC(c, ap.Aid, ap.Gid, attrs, ap.RedirectURL, time.Now()))
}
// modifyByPGC update archive attr by pgc
func modifyByPGC(c *bm.Context) {
req := c.Request
// read
bs, err := ioutil.ReadAll(req.Body)
if err != nil {
log.Error("ioutil.ReadAll() error(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
req.Body.Close()
// params
var ap struct {
Aid int64 `json:"aid"`
Gid int64 `json:"gid"`
IsJump int32 `json:"is_jump"`
AllowBp int32 `json:"allow_bp"`
IsBangumi int32 `json:"is_bangumi"`
IsMovie int32 `json:"is_movie"`
BadgePay int32 `json:"is_pay"`
IsPGC int32 `json:"is_pgc"`
RedirectURL string `json:"redirect_url"`
}
if err = json.Unmarshal(bs, &ap); err != nil {
log.Error("http modArchiveArr() json.Unmarshal(%s) error(%v)", string(bs), err)
c.JSON(nil, ecode.RequestErr)
return
}
if ap.Aid == 0 {
log.Error("aid==0")
c.JSON(nil, ecode.RequestErr)
return
}
attrs := make(map[uint]int32, 7)
attrs[archive.AttrBitJumpURL] = ap.IsJump
attrs[archive.AttrBitAllowBp] = ap.AllowBp
attrs[archive.AttrBitIsBangumi] = ap.IsBangumi
attrs[archive.AttrBitIsMovie] = ap.IsMovie
attrs[archive.AttrBitBadgepay] = ap.BadgePay
attrs[archive.AttrBitIsPGC] = ap.IsPGC
attrs[archive.AttrBitLimitArea] = 0
if ap.Gid > 1 {
attrs[archive.AttrBitLimitArea] = 1
}
c.JSON(nil, vdaSvc.ModifyByPGC(c, ap.Aid, ap.Gid, attrs, ap.RedirectURL))
}
// lockByPGC update archive state to lockbid by pgc
func lockByPGC(c *bm.Context) {
req := c.Request
// read
bs, err := ioutil.ReadAll(req.Body)
if err != nil {
log.Error("ioutil.ReadAll() error(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
req.Body.Close()
// params
var ap struct {
Aid int64 `json:"aid"`
}
if err = json.Unmarshal(bs, &ap); err != nil {
log.Error("http struct aid json.Unmarshal(%s) error(%v)", string(bs), err)
c.JSON(nil, ecode.RequestErr)
return
}
if ap.Aid == 0 {
log.Error("aid==0")
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, vdaSvc.LockByPGC(c, ap.Aid))
}

View File

@ -0,0 +1,92 @@
package http
import (
"fmt"
"go-common/app/admin/main/videoup/model/search"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
// searchVideo search video entrance
func searchVideo(c *bm.Context) {
var (
err error
)
p := &search.VideoParams{}
if err = c.Bind(p); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if p.Action == "trash" {
authSrc.Permit("VIDEO_TRASH")(c)
} else if p.Action == "list" {
authSrc.Permit("VIDEO_LIST")(c)
}
if c.IsAborted() {
return
}
if p.MonitorList != "" { //如果是监控列表,则去掉其他筛选条件(监控列表没有接搜索)
p = &search.VideoParams{
MonitorList: p.MonitorList,
Pn: p.Pn,
Ps: p.Ps,
}
}
videoData, err := vdaSvc.SearchVideo(c, p)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(videoData, nil)
}
// searchCopyright search copyright entrance
func searchCopyright(c *bm.Context) {
var (
err error
p struct {
Kw string `form:"text"`
}
)
if err = c.Bind(&p); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
copyright, err := vdaSvc.SearchCopyright(c, p.Kw)
if err != nil {
log.Error("searchCopyright(%v) error(%v)", p, err)
c.JSONMap(map[string]interface{}{
"message": fmt.Sprintf("版权接口请求失败error(%v)。找谷安-Kwan", err),
}, ecode.RequestErr)
return
}
c.JSON(copyright.Result, nil)
}
func searchArchive(c *bm.Context) {
var (
err error
)
p := &search.ArchiveParams{}
if err = c.Bind(p); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
archiveData, err := vdaSvc.SearchArchive(c, p)
if c.IsAborted() {
return
}
if err != nil {
log.Error("searchArchive(%v) error(%v)", p, err)
c.JSONMap(map[string]interface{}{
"message": fmt.Sprintf("搜索接口请求失败error(%v)。", err),
}, ecode.RequestErr)
return
}
c.JSON(archiveData, nil)
}

View File

@ -0,0 +1,59 @@
package http
import (
"encoding/json"
"go-common/app/admin/main/videoup/model/archive"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
func staffs(c *bm.Context) {
v := new(struct {
AID int64 `form:"aid" validate:"required"`
})
if err := c.Bind(v); err != nil {
return
}
log.Info("staffs data(%v)", v)
c.JSON(vdaSvc.Staffs(c, v.AID))
}
//batchStaff .
func batchStaff(c *bm.Context) {
v := new(struct {
AID int64 `form:"aid" validate:"required"`
DelAll int8 `form:"del_all"`
Staffs string `form:"staffs"`
})
if err := c.Bind(v); err != nil {
return
}
log.Info("batchStaff data(%v)", v)
var err error
var aps = &archive.StaffBatchParam{}
if err = json.Unmarshal([]byte(v.Staffs), &aps.Staffs); err != nil {
log.Error("http batchStaff Staffs json.Unmarshal(%s) error(%v)", v.Staffs, err)
c.JSON(nil, ecode.RequestErr)
return
}
if v.AID == 0 {
c.JSON(nil, ecode.RequestErr)
return
}
if len(aps.Staffs) == 0 && v.DelAll != 1 {
log.Info("batchStaff del_all data is wrong(%v) staffs(%+v)", v, aps)
c.JSON(nil, ecode.RequestErr)
return
}
if aps.Staffs == nil {
aps.Staffs = []*archive.StaffParam{}
}
if ok := vdaSvc.CheckStaff(aps.Staffs); !ok {
c.JSON(nil, ecode.RequestErr)
return
}
aps.AID = v.AID
c.JSON(nil, vdaSvc.StaffApplyBatchSubmit(c, aps))
}

View File

@ -0,0 +1,49 @@
package http
import (
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
"strconv"
"time"
)
// statsPoints get stats points data
func statsPoints(c *bm.Context) {
req := c.Request
params := req.Form
stimeStr := params.Get("stime")
etimeStr := params.Get("etime")
typeStr := params.Get("type")
if stimeStr == "" {
stimeStr = time.Now().Format("2006-01-02") + " 00:00:00"
}
if etimeStr == "" {
etimeStr = time.Now().Format("2006-01-02 15:04:05")
}
if typeStr == "" {
c.JSON(nil, ecode.RequestErr)
return
}
local, _ := time.LoadLocation("Local")
stime, err := time.ParseInLocation("2006-01-02 15:04:05", stimeStr, local)
if stime.Unix() < 1 || err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
etime, err := time.ParseInLocation("2006-01-02 15:04:05", etimeStr, local)
if etime.Unix() < 1 || err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
typeInt, err := strconv.Atoi(typeStr)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
points, err := vdaSvc.StatsPoints(c, stime, etime, int8(typeInt))
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(points, nil)
}

View File

@ -0,0 +1,320 @@
package http
import (
"net/http"
"strconv"
"time"
"go-common/app/admin/main/videoup/model/archive"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/render"
)
func taskTooks(c *bm.Context) {
req := c.Request
params := req.Form
stimeStr := params.Get("stime")
etimeStr := params.Get("etime")
if stimeStr == "" {
stimeStr = time.Now().Format("2006-01-02") + " 00:00:00"
}
if etimeStr == "" {
etimeStr = time.Now().Format("2006-01-02 15:04:05")
}
local, _ := time.LoadLocation("Local")
stime, err := time.ParseInLocation("2006-01-02 15:04:05", stimeStr, local)
if stime.Unix() < 1 || err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
etime, err := time.ParseInLocation("2006-01-02 15:04:05", etimeStr, local)
if etime.Unix() < 1 || err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
tooks, err := vdaSvc.TaskTooksByHalfHour(c, stime, etime)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(tooks, nil)
}
func next(c *bm.Context) {
uidS := c.Request.Form.Get("uid")
uid, err := strconv.Atoi(uidS)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
task, err := vdaSvc.Next(c, int64(uid))
if err != nil {
log.Error("vdaSvc.Next(uid=%d) error(%v)", uid, err)
c.JSON(nil, err)
return
}
c.JSON(task, nil)
}
func list(c *bm.Context) {
v := new(struct {
UID int64 `form:"uid" default:"0"`
IsLeader int8 `form:"isleader" default:"0"`
Lt int8 `form:"listtype" default:"0"`
Pn int `form:"page" default:"1"`
Ps int `form:"pagesize" default:"20"`
})
err := c.Bind(v)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
tasks, err := vdaSvc.List(c, v.UID, v.Pn, v.Ps, v.Lt, v.IsLeader)
if err != nil {
log.Error("vdaSvc.List(uid=%d,page=%d, pagesize=%d, listtype=%d, isleader=%d) error(%v)",
v.UID, v.Pn, v.Ps, v.Lt, v.IsLeader, err)
c.JSON(nil, err)
return
}
c.JSON(tasks, nil)
}
func info(c *bm.Context) {
tidS := c.Request.Form.Get("taskid")
tid, err := strconv.Atoi(tidS)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
task, err := vdaSvc.Info(c, int64(tid))
if err != nil {
log.Error("vdaSvc.Info(taskid=%d) error(%v)", tid, err)
c.JSON(nil, err)
return
}
c.JSON(task, nil)
}
// 权重管理
func addwtconf(c *bm.Context) {
var err error
cfg := &archive.WeightConf{}
if err = c.Bind(cfg); err != nil {
log.Error("addwtconf error(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
uid, uname := getUIDName(c)
err = vdaSvc.AddWeightConf(c, cfg, uid, uname)
if err != nil {
data := map[string]interface{}{
"code": ecode.RequestErr,
"message": err.Error(),
}
c.Render(http.StatusOK, render.MapJSON(data))
return
}
c.JSON(nil, nil)
}
func delwtconf(c *bm.Context) {
var err error
ids := c.Request.Form.Get("id")
id, err := strconv.Atoi(ids)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(vdaSvc.DelWeightConf(c, int64(id)), nil)
}
func listwtconf(c *bm.Context) {
v := new(archive.Confs)
if err := c.Bind(v); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(vdaSvc.ListWeightConf(c, v))
}
func maxweight(c *bm.Context) {
c.JSON(vdaSvc.MaxWeight(c))
}
func listwtlog(c *bm.Context) {
v := new(struct {
Taskid int64 `form:"taskid" validate:"required"`
Pn int `form:"page" default:"1"`
Ps int `form:"ps" default:"20"`
})
if err := c.Bind(v); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
cfg, count, err := vdaSvc.ListWeightLogs(c, v.Taskid, v.Pn)
if err != nil {
c.JSON(nil, err)
return
}
data := make(map[string]interface{})
data["data"] = cfg
data["pager"] = map[string]int{
"current_page": v.Pn,
"total_items": int(count),
"page_size": 20,
}
c.JSONMap(data, err)
}
func show(c *bm.Context) {
c.JSON(vdaSvc.ShowWeightVC(c))
}
func set(c *bm.Context) {
v := new(archive.WeightVC)
if err := c.Bind(v); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, vdaSvc.SetWeightVC(c, v))
}
// 登录管理
func on(c *bm.Context) {
uid, uname := getUIDName(c)
err := vdaSvc.HandsUp(c, uid, uname)
if err != nil {
data := map[string]interface{}{
"code": ecode.RequestErr,
"message": err.Error(),
}
c.Render(http.StatusOK, render.MapJSON(data))
return
}
c.JSON(nil, nil)
}
// 踢出
func forceoff(c *bm.Context) {
uidS := c.Request.Form.Get("uid")
uid, _ := strconv.ParseInt(uidS, 10, 64)
if uid == 0 {
c.JSON(nil, ecode.RequestErr)
return
}
adminuid, _ := getUIDName(c)
err := vdaSvc.HandsOff(c, adminuid, uid)
if err != nil {
data := map[string]interface{}{
"code": ecode.RequestErr,
"message": err.Error(),
}
c.Render(http.StatusOK, render.MapJSON(data))
return
}
c.JSON(nil, nil)
}
func off(c *bm.Context) {
adminuid, _ := getUIDName(c)
err := vdaSvc.HandsOff(c, adminuid, 0)
if err != nil {
data := map[string]interface{}{
"code": ecode.RequestErr,
"message": err.Error(),
}
c.Render(http.StatusOK, render.MapJSON(data))
return
}
c.JSON(nil, nil)
}
func online(c *bm.Context) {
c.JSON(vdaSvc.Online(c))
}
func inoutlist(c *bm.Context) {
v := new(struct {
Unames string `form:"unames" default:""`
Bt string `form:"bt" default:""`
Et string `form:"et" default:""`
})
if err := c.Bind(v); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(vdaSvc.InOutList(c, v.Unames, v.Bt, v.Et))
}
// 任务管理
func delay(c *bm.Context) {
v := new(struct {
Taskid int64 `form:"task_id" validate:"required"`
Reason string `form:"reason"`
})
if err := c.Bind(v); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
uid, _ := getUIDName(c)
c.JSON(nil, vdaSvc.Delay(c, v.Taskid, uid, v.Reason))
}
func taskfree(c *bm.Context) {
var uid, rows int64
uid, _ = getUIDName(c)
rows = vdaSvc.Free(c, uid)
log.Info("释放任务(uid=%d,rows=%d)", uid, rows)
c.JSON(nil, nil)
}
func checkgroup() bm.HandlerFunc {
return func(ctx *bm.Context) {
uid, _ := getUIDName(ctx)
role, err := vdaSvc.CheckGroup(ctx, uid)
if err != nil || role == 0 {
data := map[string]interface{}{
"code": ecode.RequestErr,
"message": "权限错误",
}
ctx.Render(http.StatusOK, render.MapJSON(data))
ctx.Abort()
return
}
}
}
// 校验任务操作权限
func checkowner() bm.HandlerFunc {
return func(ctx *bm.Context) {
tidS := ctx.Request.Form.Get("task_id")
tid, err := strconv.Atoi(tidS)
if err != nil {
ctx.JSON(nil, ecode.RequestErr)
ctx.Abort()
return
}
uid, _ := getUIDName(ctx)
if err := vdaSvc.CheckOwner(ctx, int64(tid), uid); err != nil {
data := map[string]interface{}{
"code": ecode.RequestErr,
"message": err.Error(),
}
ctx.Render(http.StatusOK, render.MapJSON(data))
ctx.Abort()
return
}
}
}

View File

@ -0,0 +1,69 @@
package http
import (
"strconv"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
// trackArchive get archive list.
func trackArchive(c *bm.Context) {
params := c.Request.Form
aidStr := params.Get("aid")
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
arcTrack, err := vdaSvc.TrackArchiveInfo(c, aid)
if err != nil {
log.Error("vdaSvc.TrackArchiveInfo (aid(%d)) error(%v)", aid, err)
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(arcTrack, nil)
}
//trackDetail 稿件信视频息追踪详情页
func trackDetail(c *bm.Context) {
params := c.Request.Form
hidStr := params.Get("hid")
hid, err := strconv.ParseInt(hidStr, 10, 64)
if err != nil {
log.Error("vdaSvc.trackDetail strconv.ParseInt(%s) error(%v)", hidStr, err)
c.JSON(nil, err)
return
}
history, err := vdaSvc.TrackHistoryDetail(c, hid)
if err != nil {
log.Error("vdaSvc.TrackHistoryDetail (hid(%d)) error(%v)", hid, err)
c.JSON(nil, err)
return
}
c.JSON(history, nil)
}
// trackVideo get video process.
func trackVideo(c *bm.Context) {
params := c.Request.Form
fn := params.Get("filename")
aid, err := strconv.ParseInt(params.Get("aid"), 10, 64)
if err != nil {
log.Error("trackVideo strconv.ParseInt error(%v) aid(%s)", err, params.Get("aid"))
c.JSON(nil, ecode.RequestErr)
return
}
// video
video, err := vdaSvc.TrackVideo(c, fn, aid)
if err != nil {
log.Error("vdaSvc.TrackVideo(%s, aid(%d)) error(%v)", fn, aid, err)
c.JSON(nil, err)
return
}
c.JSON(video, nil)
}

View File

@ -0,0 +1,175 @@
package http
import (
"encoding/json"
"io/ioutil"
"go-common/app/admin/main/videoup/model/archive"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
// videoAudit up firstRound info.
func videoAudit(c *bm.Context) {
req := c.Request
// read
bs, err := ioutil.ReadAll(req.Body)
if err != nil {
log.Error("ioutil.ReadAll() error(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
req.Body.Close()
// params
var vp = &archive.VideoParam{}
if err = json.Unmarshal(bs, &vp); err != nil {
log.Error("http firstRound() json.Unmarshal(%s) error(%v)", string(bs), err)
c.JSON(nil, ecode.RequestErr)
return
}
// TODO check data.
if vp.ID == 0 {
c.JSON(nil, ecode.RequestErr)
return
}
attrs := make(map[uint]int32, 6)
attrs[archive.AttrBitNoRank] = vp.Attrs.NoRank
attrs[archive.AttrBitNoDynamic] = vp.Attrs.NoDynamic
attrs[archive.AttrBitNoSearch] = vp.Attrs.NoSearch
attrs[archive.AttrBitNoRecommend] = vp.Attrs.NoRecommend
attrs[archive.AttrBitOverseaLock] = vp.Attrs.OverseaLock
attrs[archive.AttrBitPushBlog] = vp.Attrs.PushBlog
if vp.TagID > 0 && vp.Status >= 0 {
attrs[archive.AttrBitParentMode] = 1
}
c.JSON(nil, vdaSvc.VideoAudit(c, vp, attrs))
}
func batchVideo(c *bm.Context) {
req := c.Request
// read
bs, err := ioutil.ReadAll(req.Body)
if err != nil {
log.Error("ioutil.ReadAll() error(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
req.Body.Close()
// params
var vps = []*archive.VideoParam{}
if err = json.Unmarshal(bs, &vps); err != nil {
log.Error("http firstRound() json.Unmarshal(%s) error(%v)", string(bs), err)
c.JSON(nil, ecode.RequestErr)
return
}
if len(vps) == 0 {
c.JSON(nil, ecode.RequestErr)
return
}
if ok := vdaSvc.CheckVideo(vps); !ok {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, vdaSvc.BatchVideo(c, vps, archive.ActionVideoSubmit))
}
func upVideo(c *bm.Context) {
req := c.Request
// read
bs, err := ioutil.ReadAll(req.Body)
if err != nil {
log.Error("ioutil.ReadAll() error(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
req.Body.Close()
// params
var vp = &archive.VideoParam{}
if err = json.Unmarshal(bs, &vp); err != nil {
log.Error("http firstRound() json.Unmarshal(%s) error(%v)", string(bs), err)
c.JSON(nil, ecode.RequestErr)
return
}
// TODO check data.
if vp.Aid == 0 {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, vdaSvc.UpVideo(c, vp))
}
func upWebLink(c *bm.Context) {
req := c.Request
// read
bs, err := ioutil.ReadAll(req.Body)
if err != nil {
log.Error("ioutil.ReadAll() error(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
req.Body.Close()
// params
var vp = &archive.VideoParam{}
if err = json.Unmarshal(bs, &vp); err != nil {
log.Error("http firstRound() json.Unmarshal(%s) error(%v)", string(bs), err)
c.JSON(nil, ecode.RequestErr)
return
}
// TODO check data.
if vp.ID == 0 || vp.WebLink == "" {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, vdaSvc.UpWebLink(c, vp))
}
func delVideo(c *bm.Context) {
req := c.Request
// read
bs, err := ioutil.ReadAll(req.Body)
if err != nil {
log.Error("ioutil.ReadAll() error(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
req.Body.Close()
// params
var vp = &archive.VideoParam{}
if err = json.Unmarshal(bs, &vp); err != nil {
log.Error("http firstRound() json.Unmarshal(%s) error(%v)", string(bs), err)
c.JSON(nil, ecode.RequestErr)
return
}
// TODO check data.
if vp.ID == 0 {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, vdaSvc.DelVideo(c, vp))
}
func changeIndex(c *bm.Context) {
req := c.Request
// read
bs, err := ioutil.ReadAll(req.Body)
if err != nil {
log.Error("ioutil.ReadAll() error(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
req.Body.Close()
// params
var lo = &archive.IndexParam{}
if err = json.Unmarshal(bs, &lo); err != nil {
log.Error("http changeIndex() json.Unmarshal(%s) error(%v)", string(bs), err)
c.JSON(nil, ecode.RequestErr)
return
}
if lo.Aid == 0 {
log.Error("aid==%d", lo.Aid)
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, vdaSvc.ChangeIndex(c, lo))
}