go-common/app/admin/main/videoup/model/archive/task.go
2019-04-22 18:49:16 +08:00

392 lines
12 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package archive
import (
"time"
"go-common/app/admin/main/videoup/model/utils"
"go-common/library/log"
"go-common/library/xstr"
)
const (
// ActionHandsUP 0签入
ActionHandsUP = int8(0)
// ActionHandsOFF 1签出
ActionHandsOFF = int8(1)
// ActionSubmit 2提交
ActionSubmit = int8(2)
// ActionDelay 3延迟
ActionDelay = int8(3)
// ActionClose 4关闭
ActionClose = int8(4)
//ActionOldSubmit 5旧一审提交
ActionOldSubmit = int8(5)
//ActionTaskDelete 10任务删除
ActionTaskDelete = int8(10)
//ActionDispatch 分配
ActionDispatch = int8(6)
//ActionRelease 释放(拒审)
ActionRelease = int8(7)
// WConfMid 按照mid配置权重
WConfMid = int8(0)
// WConfTaskID 按照taskid配置权重
WConfTaskID = int8(1)
// WConfType 按照分区配置权重
WConfType = int8(2)
// WConfUpFrom 按照投稿来源配置权重
WConfUpFrom = int8(3)
// WConfRelease 指派任务释放
WConfRelease = int8(4)
// TimeFormatSec 时间格式化
TimeFormatSec = "2006-01-02 15:04:05"
)
var (
// TookTypeMinute 一审耗时每分钟打点
TookTypeMinute = int8(1)
// TookTypeHalfHour 一审耗时半小时打点
TookTypeHalfHour = int8(2)
// PoolForFirst 一审任务池
PoolForFirst = int8(0)
// PoolForSecond 二审任务池
PoolForSecond = int8(1)
// TypeRealTime 实时任务
TypeRealTime = int8(0)
// TypeDispatched 已分发任务
TypeDispatched = int8(1)
// TypeFinished 结束任务
TypeFinished = int8(2)
// TypeDelay 延时任务
TypeDelay = int8(3)
// TypeClosed 停滞任务
TypeClosed = int8(4)
// TypeSpecial 特殊任务
TypeSpecial = int8(5)
// TypeUpDelete 已删除任务
TypeUpDelete = int8(6)
// TypeSpecialWait 特殊停滞任务
TypeSpecialWait = int8(7)
// SubjectForNormal 普通任务
SubjectForNormal = int8(0) //normal task subject
// SubjectForTask 指派任务
SubjectForTask = int8(1) //specified task subject
_taskdispatchstate = map[int8]struct{}{
TypeRealTime: struct{}{},
TypeDispatched: struct{}{},
TypeFinished: struct{}{},
TypeDelay: struct{}{},
TypeClosed: struct{}{},
TypeSpecial: struct{}{},
TypeUpDelete: struct{}{},
TypeSpecialWait: struct{}{},
}
// WLVConf 默认值
WLVConf = &WeightVC{
MaxWeight: int64(200000), //最大权重值
SubRelease: int64(18), //指派再释放的任务
//特殊任务参数
Slv1: int64(8), // 普通用户>=1W粉
Slv2: int64(10), // 普通用户>=10W粉
Slv3: int64(12), // 优质用户<1W粉
Slv4: int64(15), // 优质用户>=1W粉
Slv5: int64(18), // 优质用户>=10W粉
Slv6: int64(6), // 高危用户>=10W粉
Slv7: int64(0), // 其他高危
//普通任务参数
Nlv1: int64(3), // 等待时长 9-15
Nlv2: int64(6), // 等待时长 15-27
Nlv3: int64(9), // 等待时长 27-45
Nlv4: int64(12), // 等待时长 >45
Nlv5: int64(0), // 等待时长 <=9
//定时任务参数
Tlv1: int64(3), // 距离发布2h-4h
Tlv2: int64(9), // 距离发布1-2h
Tlv3: int64(21), // 距离发布 <1h
Tlv4: int64(0), // 距离发布 > 4h
}
)
// CfWeightDesc 权重配置文字描述
func CfWeightDesc(radio int8) (desc string) {
switch radio {
case WConfMid:
desc = "mid配置"
case WConfTaskID:
desc = "taskid配置"
case WConfType:
desc = "分区配置"
case WConfUpFrom:
desc = "投稿来源"
case WConfRelease:
desc = "指派释放"
default:
desc = "其他配置"
}
return
}
// IsDispatch 判断任务状态
func IsDispatch(st int8) bool {
if _, ok := _taskdispatchstate[st]; ok {
return true
}
return false
}
// ParseWeightConf 解析权重配置
func ParseWeightConf(twc *WeightConf, uid int64, uname string) (mcases map[int64]*WCItem, IsTaskID bool, err error) {
var (
ids []int64
)
mcases = make(map[int64]*WCItem)
if ids, err = xstr.SplitInts(twc.Ids); err != nil {
log.Error("ParseWeightConfig Config(%v) parse error(%v) Idlist(%s)", twc, err)
return nil, false, err
}
for _, id := range ids {
wci := &WCItem{
CID: id,
Radio: twc.Radio,
Rule: twc.Rule,
Weight: twc.Weight,
Uname: uname,
Desc: twc.Desc,
Bt: twc.Bt,
Et: twc.Et,
Mtime: utils.NewFormatTime(time.Now()),
}
if twc.Radio == WConfTaskID {
IsTaskID = true
}
mcases[id] = wci
}
return
}
// WeightVC Weight Value Config 权重分值配置
type WeightVC struct {
MaxWeight int64 `json:"maxweight" form:"maxweight" default:"20000"`
SubRelease int64 `json:"subrelease" form:"subrelease" default:"18"`
Slv1 int64 `json:"slv1" form:"slv1" default:"8"`
Slv2 int64 `json:"slv2" form:"slv2" default:"10"`
Slv3 int64 `json:"slv3" form:"slv3" default:"12"`
Slv4 int64 `json:"slv4" form:"slv4" default:"15"`
Slv5 int64 `json:"slv5" form:"slv5" default:"18"`
Slv6 int64 `json:"slv6" form:"slv6" default:"6"`
Slv7 int64 `json:"slv7" form:"slv7" default:"0"`
Nlv1 int64 `json:"nlv1" form:"nlv1" default:"3"`
Nlv2 int64 `json:"nlv2" form:"nlv2" default:"6"`
Nlv3 int64 `json:"nlv3" form:"nlv3" default:"9"`
Nlv4 int64 `json:"nlv4" form:"nlv4" default:"12"`
Nlv5 int64 `json:"nlv5" form:"nlv5" default:"0"`
Tlv1 int64 `json:"tlv1" form:"tlv1" default:"3"`
Tlv2 int64 `json:"tlv2" form:"tlv2" default:"9"`
Tlv3 int64 `json:"tlv3" form:"tlv3" default:"21"`
Tlv4 int64 `json:"tlv4" form:"tlv4" default:"0"`
}
// Task 审核任务
type Task struct {
ID int64 `json:"id"`
Pool int8 `json:"pool"`
Subject int8 `json:"subject"`
AdminID int64 `json:"adminid"`
Aid int64 `json:"aid"`
Cid int64 `json:"cid"`
UID int64 `json:"uid"`
State int8 `json:"state"`
UTime int64 `json:"utime"`
CTime utils.FormatTime `json:"ctime"`
MTime utils.FormatTime `json:"mtime"`
DTime utils.FormatTime `json:"dtime"`
GTime utils.FormatTime `json:"gtime"`
PTime utils.FormatTime `json:"ptime"`
Weight int64 `json:"weight"`
Mid int64 `json:"mid"`
}
// TaskWeightLog 权重变更日志
type TaskWeightLog struct {
TaskID int64 `json:"taskid"`
Mid int64 `json:"mid"`
Weight int64 `json:"weight"`
CWeight int64 `json:"cweight"`
NWeight int64 `json:"nweight"`
SWeight int64 `json:"sweight"`
TWeight int64 `json:"tweight"`
Uptime utils.FormatTime `json:"uptime"`
Creator string `json:"creator"` //创作者
UpSpecial []int8 `json:"upspecial"` //标记是否优质,劣质用户
Fans int64 `json:"fans"` //粉丝数
Wait float64 `json:"wait"` //等待时长
Ptime string `json:"ptime,omitempty"`
CfItems []*WCItem `json:"cfitems,omitempty"`
Desc string `json:"desc,omitempty"` // 配置描述
}
// TaskPriority 审核任务权重的相关参数
type TaskPriority struct {
TaskID int64 `json:"taskid"`
Weight int64 `json:"weight"` //权重总值
State int8 `json:"state"` //任务状态
Mid int64 `json:"mid"`
Special int8 `json:"special"` //特殊任务
Ctime utils.FormatTime `json:"ctime"` //任务生成时间
Ptime utils.FormatTime `json:"ptime"` //定时发布时间
CfItems []*WCItem `json:"cfitems,omitempty"`
// 兼容videoup-task-admin 用于判断复审的参数
/*
TODO:
目前前端v1版本使用videoup-admin接口 v2版本使用videoup-task-admin接口
待前端迁移完成再将videoup-admin中任务代码删除
*/
Fans int64 `json:"fans"` //粉丝数
AccFailed bool `json:"accfaild"` //账号查询是否失败
UpGroups []int8 `json:"ugs"` //分组
UpFrom int8 `json:"upfrom"` //来源
TypeID int16 `json:"typeid"` //分区
}
// WeightConf 任务权重配置
type WeightConf struct {
Radio int8 `form:"radio"` // 0,mid1taskid2分区, 3, 投稿来源
Ids string `form:"ids" validate:"required"` // id列表逗号分隔
Rule int8 `form:"rule"` // 0,动态权重1静态权重
Weight int64 `form:"weight" validate:"required"` // 配置的权重
Desc string `form:"desc" validate:"required"` // 描述信息
Bt utils.FormatTime `form:"bt"` //配置生效开始时间
Et utils.FormatTime `form:"et"` //配置生效结束时间
}
// WCItem task weight config item
type WCItem struct {
Radio int8 `json:"radio"`
ID int64 `json:"id,omitempty"`
CID int64 `json:"cid"` // config id 四种配置通用
UID int64 `json:"uid,omitempty"`
Uname string `json:"user,omitempty"`
TypeName string `json:"typename,omitempty"`
UpFrom string `json:"upfrom,omitempty"`
Rule int8 `json:"rule"`
State int8 `json:"state"`
Weight int64 `json:"weight,omitempty"`
Mtime utils.FormatTime `json:"mtime,omitempty"`
Desc string `json:"desc,omitempty"`
FileName string `json:"filename,omitempty"`
Title string `json:"title,omitempty"`
Vid int64 `json:"vid,omitempty"`
Creator string `json:"creator,omitempty"`
Fans int64 `json:"fans,omitempty"`
Bt utils.FormatTime `json:"bt,omitempty"`
Et utils.FormatTime `json:"et,omitempty"`
}
// Confs 权重配置筛选参数
type Confs struct {
Radio int8 `form:"radio" default:"1"`
Cid int64 `form:"cid" default:"-1"`
Operator string `form:"operator"`
Bt utils.FormatTime `form:"bt"`
Et utils.FormatTime `form:"et"`
Rule int8 `form:"rule" default:"-1"`
State int `form:"state"`
Pn int `form:"page" default:"1"`
Ps int `form:"ps" default:"20"`
}
// TaskTook 一审耗时
type TaskTook struct {
ID int64 `json:"id"`
M90 int `json:"m90"`
M80 int `json:"m80"`
M60 int `json:"m60"`
M50 int `json:"m50"`
TypeID int8 `json:"type"`
Ctime time.Time `json:"ctime"`
Mtime time.Time `json:"-"`
}
// AuthRole 一审任务角色
type AuthRole struct {
ID int64 `json:"id"`
UID int64 `json:"uid"`
Role int8 `json:"role"`
UserName string `json:"username"`
NickName string `json:"nickname"`
Ctime time.Time `json:"ctime"`
Mtime time.Time `json:"mtime"`
}
// Consumers 组员信息
type Consumers struct {
ID int64 `json:"id"`
UID int64 `json:"uid"`
UserName string `json:"username"`
State int8 `json:"state"`
Ctime utils.FormatTime `json:"ctime"`
Mtime utils.FormatTime `json:"mtime"`
LastOut string `json:"lastout,omitempty"`
}
// ConsumerLog 组员日志
type ConsumerLog struct {
UID int64 `json:"uid"`
Uname string `json:"uname"`
Action int8 `json:"action"`
Ctime string `json:"ctime"`
Desc string `json:"desc"`
}
// InQuit 组员日志
type InQuit struct {
Date string `json:"date"`
UID int64 `json:"uid"`
Uname string `json:"uname"`
InTime string `json:"inTime"`
OutTime string `json:"quitTime"`
}
// SearchLogResult is.
type SearchLogResult struct {
Code int `json:"code"`
Data struct {
Order string `json:"order"`
Sort string `json:"sort"`
Result []struct {
UID int64 `json:"uid"`
Uname string `json:"uname"`
OID int64 `json:"oid"`
Type int8 `json:"type"`
Action string `json:"action"`
Str0 string `json:"str_0"`
Str1 string `json:"str_1"`
Str2 string `json:"str_2"`
Int0 int `json:"int_0"`
Int1 int `json:"int_1"`
Int2 int `json:"int_2"`
Ctime string `json:"ctime"`
Extra string `json:"extra_data"`
} `json:"result"`
Page struct {
Num int `json:"num"`
Size int `json:"size"`
Total int `json:"total"`
} `json:"page"`
} `json:"data"`
}
// TaskForLog 释放任务
type TaskForLog struct {
ID int64
Cid int64
Subject int8
Mtime time.Time
}