123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- 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
- }
|