321 lines
6.7 KiB
Go
321 lines
6.7 KiB
Go
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
|
|
}
|
|
}
|
|
}
|