package archive import ( "sync" "time" ) const ( //StateOpen state open StateOpen = 0 //StateOrange 橙色通过 StateOrange = 1 //StateForbidWait 待审 StateForbidWait = -1 //StateForbidRecicle 打回 StateForbidRecicle = -2 //StateForbidPolice 网警锁定 StateForbidPolice = -3 //StateForbidLock 锁定 StateForbidLock = -4 //StateForbidFixed 修复待审 StateForbidFixed = -6 //StateForbidLater 暂缓待审 StateForbidLater = -7 //StateForbidXcodeFail 转码失败 StateForbidXcodeFail = -16 //StateForbidSubmit 创建提交 StateForbidSubmit = -30 //StateForbidUserDelay 定时 StateForbidUserDelay = -40 //StateForbidUpDelete 删除 StateForbidUpDelete = -100 //RoundBegin 开始流转 RoundBegin = 0 //RoundAuditSecond 二审:选定分区的多P稿件 及 PGC/活动的单P多P稿件 RoundAuditSecond = 10 //RoundAuditThird 三审:选定分区/PGC/活动 的单P多P稿件 RoundAuditThird = 20 //RoundReviewFirst 分区回查:粉丝小于配置阈值 如 5000 且 指定分区 RoundReviewFirst = 30 //RoundReviewFirstWaitTrigger 点击/粉丝 等待触发中间状态,7天内达到阈值进列表,未达到自动变99 RoundReviewFirstWaitTrigger = 31 //RoundReviewSecond 社区回查:粉丝大于配置阈值 如 5000 或 优质高危up RoundReviewSecond = 40 //RoundTriggerFans 粉丝回查:粉丝量达到配置阈值 RoundTriggerFans = 80 //RoundTriggerClick 点击回查:点击量达到配置阈值 RoundTriggerClick = 90 //RoundEnd 流转结束 RoundEnd = 99 //AccessDefault access AccessDefault = int16(0) //AccessMember 会员可见 AccessMember = int16(10000) //CopyrightUnknow copyright CopyrightUnknow = 0 //CopyrightOriginal 原创 CopyrightOriginal = 1 //CopyrightCopy 转载 CopyrightCopy = 2 //AttrYes attribute yes AttrYes = int32(1) //AttrNo attribute no AttrNo = int32(0) //AttrBitNoRank 禁止排序 AttrBitNoRank = uint(0) //AttrBitNoDynamic 禁止动态 AttrBitNoDynamic = uint(1) //AttrBitNoWeb 禁止web AttrBitNoWeb = uint(2) //AttrBitNoMobile 禁止手机端 AttrBitNoMobile = uint(3) //AttrBitNoSearch 禁止搜索 AttrBitNoSearch = uint(4) //AttrBitOverseaLock 禁止海外 AttrBitOverseaLock = uint(5) //AttrBitNoRecommend 禁止推荐 AttrBitNoRecommend = uint(6) // AttrBitHideCoins = uint(7) //AttrBitHasHD5 是否高清 AttrBitHasHD5 = uint(8) // AttrBitVisitorDm = uint(9) //AttrBitAllowBp 允许承包 AttrBitAllowBp = uint(10) //AttrBitIsBangumi 番剧 AttrBitIsBangumi = uint(11) //AttrBitIsPOrder 是否私单 AttrBitIsPOrder = uint(12) //AttrBitHideClick 点击 AttrBitHideClick = uint(13) //AttrBitAllowTag 允许操作tag AttrBitAllowTag = uint(14) // AttrBitIsFromArcApi = uint(15) //AttrBitJumpURL 跳转 AttrBitJumpURL = uint(16) //AttrBitIsMovie is movie AttrBitIsMovie = uint(17) //AttrBitBadgepay 付费 AttrBitBadgepay = uint(18) //ReplyDefault 默认评论状态 ReplyDefault = int64(-1) //ReplyOn 开评论 ReplyOn = int64(0) //ReplyOff 关评论 ReplyOff = int64(1) //LogBusJob 稿件后台任务日志bus LogBusJob = 211 //LogTypeReply 稿件后台任务type评论 LogTypeReply = 1 ) //ReplyState 评论开关状态 var ReplyState = []int64{ ReplyDefault, ReplyOn, ReplyOff, } //ReplyDesc 评论状态描述 var ReplyDesc = map[int64]string{ ReplyDefault: "未知状态", ReplyOn: "开", ReplyOff: "关", } //UpInfo up info type UpInfo struct { Nw *Archive Old *Archive } // Oper is archive operate model. type Oper struct { ID int64 `json:"id"` AID int64 `json:"aid"` UID int64 `json:"uid"` TypeID int16 `json:"typeid"` State int `json:"state"` Content string `json:"-"` Round int8 `json:"round"` Attribute int32 `json:"attribute"` LastID int64 `json:"last_id"` Remark string `json:"-"` CTime time.Time `json:"ctime"` MTime time.Time `json:"mtime"` } // ArcMoveTypeCache archive move typeid count type ArcMoveTypeCache struct { Data map[int8]map[int16]map[string]int sync.Mutex } // ArcRoundFlowCache archive round flow record type ArcRoundFlowCache struct { Data map[int8]map[int64]map[string]int sync.Mutex } //Archive archive type Archive struct { ID int64 `json:"id"` AID int64 `json:"aid"` //result库binlog={id:0,aid:xxx} Mid int64 `json:"mid"` TypeID int16 `json:"typeid"` HumanRank int `json:"humanrank"` Duration int `json:"duration"` Desc string `json:"desc"` Title string `json:"title"` Cover string `json:"cover"` Content string `json:"content"` Tag string `json:"tag"` Attribute int32 `json:"attribute"` Copyright int8 `json:"copyright"` AreaLimit int8 `json:"arealimit"` State int `json:"state"` Author string `json:"author"` Access int `json:"access"` Forward int `json:"forward"` PubTime string `json:"pubtime"` Reason string `json:"reject_reason"` Round int8 `json:"round"` CTime string `json:"ctime"` MTime string `json:"mtime"` PTime string `json:"ptime"` } //IsSyncState can archive sync func (a *Archive) IsSyncState() bool { if a.State >= 0 || a.State == StateForbidUserDelay || a.State == StateForbidUpDelete || a.State == StateForbidRecicle || a.State == StateForbidPolice || a.State == StateForbidLock { return true } return false } //ArgStat arg state type ArgStat struct { Aid int64 Field int Value int RealIP string } // AttrVal get attribute value. func (a *Archive) AttrVal(bit uint) int32 { return (a.Attribute >> bit) & int32(1) } //NormalState normal state func NormalState(state int) bool { return state == StateOpen || state == StateOrange } //Type archive_type type Type struct { ID int16 `json:"id"` PID int16 `json:"pid"` Name string `json:"name"` } // StateMean the mean for archive state var StateMean = map[int]string{ StateOpen: "开放浏览", StateOrange: "橙色通过", // forbid state StateForbidWait: "待审", StateForbidRecicle: "打回", StateForbidPolice: "网警锁定", StateForbidLock: "锁定稿件", StateForbidFixed: "修复待审", StateForbidLater: "暂缓审核", //StateForbidAdminDelay: "延迟发布", StateForbidXcodeFail: "转码失败", StateForbidSubmit: "创建提交", StateForbidUserDelay: "用户定时发布", StateForbidUpDelete: "UP主删除", }