127 lines
2.4 KiB
Go
127 lines
2.4 KiB
Go
|
package model
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"strconv"
|
||
|
"strings"
|
||
|
|
||
|
"go-common/library/ecode"
|
||
|
)
|
||
|
|
||
|
// audit related consts
|
||
|
const (
|
||
|
_ugcPrefix = "ugc"
|
||
|
_pgcPrefix = "xds"
|
||
|
// the field valid options
|
||
|
_hidden = 0
|
||
|
_online = 1
|
||
|
// pgc audit status
|
||
|
_seasonReject = 0
|
||
|
_seasonPass = 1
|
||
|
// ugc audit status
|
||
|
_ugcPass = 1
|
||
|
_ugcReject = 2
|
||
|
// audit type
|
||
|
_reject = "1"
|
||
|
// IDlist's type field
|
||
|
_season = "1"
|
||
|
// content type
|
||
|
PgcSn = "7"
|
||
|
PgcEp = "8"
|
||
|
UgcArc = "9"
|
||
|
UgcVideo = "10"
|
||
|
)
|
||
|
|
||
|
// IDList def.
|
||
|
type IDList struct {
|
||
|
Type string `json:"type"`
|
||
|
VID string `json:"vid"`
|
||
|
Action string `json:"action"`
|
||
|
AuditMsg string `json:"audit_msg"`
|
||
|
}
|
||
|
|
||
|
// IsReject def.
|
||
|
func (v *IDList) IsReject() bool {
|
||
|
return v.Action == _reject
|
||
|
}
|
||
|
|
||
|
// IsShell tells whether it's about archive/season
|
||
|
func (v *IDList) IsShell() bool {
|
||
|
return v.Type == _season
|
||
|
}
|
||
|
|
||
|
// AuditOp def.
|
||
|
type AuditOp struct {
|
||
|
KID int64 // aid/cid/sid/epid
|
||
|
Result int // pgc sn: `check`, pgc ep: state, ugc: result
|
||
|
Valid int
|
||
|
AuditMsg string
|
||
|
ContentType string // type
|
||
|
}
|
||
|
|
||
|
// ToMsg def
|
||
|
func (v *AuditOp) ToMsg() string {
|
||
|
return fmt.Sprintf("audit_Type(%s)_KID(%d)", v.ContentType, v.KID)
|
||
|
}
|
||
|
|
||
|
// parse prefix and get the real ID
|
||
|
func parsePrefix(value string, prefix string) (res bool, vid int64) {
|
||
|
if strings.Contains(value, prefix) {
|
||
|
res = true
|
||
|
ids := strings.Split(value, prefix)
|
||
|
vid, _ = strconv.ParseInt(ids[1], 10, 64)
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// FromIDList def.
|
||
|
func (v *AuditOp) FromIDList(req *IDList) (err error) {
|
||
|
var (
|
||
|
isUGC, isPGC bool
|
||
|
)
|
||
|
// auditMsg treatment
|
||
|
v.AuditMsg = req.AuditMsg
|
||
|
// KID & content type treatment
|
||
|
if isPGC, v.KID = parsePrefix(req.VID, _pgcPrefix); !isPGC { // not pgc, try ugc
|
||
|
if isUGC, v.KID = parsePrefix(req.VID, _ugcPrefix); !isUGC { // not ugc, unknown type
|
||
|
return ecode.RequestErr // unknown type
|
||
|
}
|
||
|
}
|
||
|
// Valid treatment
|
||
|
if req.IsReject() { // decide the valid value
|
||
|
v.Valid = _hidden
|
||
|
} else {
|
||
|
v.Valid = _online
|
||
|
}
|
||
|
// Result & Content Type treatment
|
||
|
if isPGC { // pgc
|
||
|
if req.IsShell() { // season
|
||
|
v.ContentType = PgcSn
|
||
|
if req.IsReject() {
|
||
|
v.Result = _seasonReject
|
||
|
} else {
|
||
|
v.Result = _seasonPass
|
||
|
}
|
||
|
} else { // ep
|
||
|
v.ContentType = PgcEp
|
||
|
if req.IsReject() {
|
||
|
v.Result = _epRejected
|
||
|
} else {
|
||
|
v.Result = _epPass
|
||
|
}
|
||
|
}
|
||
|
} else { // ugc
|
||
|
if req.IsShell() {
|
||
|
v.ContentType = UgcArc
|
||
|
} else {
|
||
|
v.ContentType = UgcVideo
|
||
|
}
|
||
|
if req.IsReject() {
|
||
|
v.Result = _ugcReject
|
||
|
} else {
|
||
|
v.Result = _ugcPass
|
||
|
}
|
||
|
}
|
||
|
return
|
||
|
}
|