You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
375 lines
10 KiB
375 lines
10 KiB
package model |
|
|
|
import ( |
|
"strconv" |
|
|
|
"go-common/library/time" |
|
"go-common/library/xstr" |
|
) |
|
|
|
//CondIntNil cond int nil |
|
const CondIntNil = -10516 |
|
|
|
// batch operation deleted code |
|
const ( |
|
StatusNormal = iota // 正常弹幕 |
|
StatusDelete // 删除弹幕 |
|
StatusProtect // 保护弹幕 |
|
|
|
DMIndexInactive = int8(0) |
|
DMIndexActive = int8(1) |
|
|
|
PoolNormal = int32(0) // 普通弹幕池 |
|
PoolSubtitle = int32(1) // 字幕弹幕池 |
|
PoolSpecial = int32(2) // 特殊弹幕池 |
|
|
|
AttrProtect = uint(0) // 保护弹幕 |
|
|
|
StateNormal = int32(0) // 普通状态 |
|
StateDelete = int32(1) // 删除状态 |
|
StateHide = int32(2) // 隐藏状态 |
|
StateBlock = int32(3) // 屏蔽状态 |
|
StateFilter = int32(4) // 过滤状态 |
|
StateMonitorBefore = int32(5) // 先审后发 |
|
StateMonitorAfter = int32(6) // 先发后审 |
|
StateSensBlock = int32(7) // 敏感词过滤 |
|
StateReportDelete = int32(8) // 举报删除 |
|
StateAdminDelete = int32(9) // 后台管理删除 |
|
StateUserDelete = int32(10) // 用户删除 |
|
StateRptAutoDelete = int32(11) // 举报脚本自动删除 |
|
StateTaskDelete = int32(12) // 弹幕任务删除 |
|
StateAiDelete = int32(13) // ai删除 |
|
|
|
DMLogBizID = int(31) // dm日志平台business id |
|
|
|
// mask platform |
|
MaskPlatWeb int8 = 0 |
|
MaskPlatMbl int8 = 1 |
|
MaskPlatAll int8 = 100 |
|
) |
|
|
|
// StateDesc get a state description |
|
func StateDesc(state int32) (description string) { |
|
switch state { |
|
case StateNormal: |
|
description = "正常弹幕" |
|
case StateDelete: |
|
description = "删除状态" |
|
case StateHide: |
|
description = "隐藏状态" |
|
case StateBlock: |
|
description = "屏蔽状态" |
|
case StateFilter: |
|
description = "过滤状态" |
|
case StateMonitorBefore: |
|
description = "先审后发" |
|
case StateMonitorAfter: |
|
description = "先发后审" |
|
case StateSensBlock: |
|
description = "敏感词过滤" |
|
case StateReportDelete: |
|
description = "举报删除" |
|
case StateAdminDelete: |
|
description = "弹幕管理删除" |
|
case StateUserDelete: |
|
description = "用户删除" |
|
case StateRptAutoDelete: |
|
description = "举报脚本删除" |
|
case StateTaskDelete: |
|
description = "弹幕任务删除" |
|
default: |
|
description = "未知状态" |
|
} |
|
return |
|
} |
|
|
|
// DM dm info for new database |
|
type DM struct { |
|
ID int64 `json:"id"` |
|
Type int32 `json:"type"` |
|
Oid int64 `json:"oid"` |
|
Mid int64 `json:"mid"` |
|
Progress int32 `json:"progress"` |
|
Pool int32 `json:"pool"` |
|
Attr int32 `json:"attr"` |
|
State int32 `json:"state"` |
|
Ctime time.Time `json:"ctime"` |
|
Mtime time.Time `json:"mtime"` |
|
Content *Content `json:"content,omitempty"` |
|
ContentSpe *ContentSpecial `json:"content_special,omitempty"` |
|
} |
|
|
|
// AttrVal return val of index'attr |
|
func (d *DM) AttrVal(bit uint) int32 { |
|
return (d.Attr >> bit) & int32(1) |
|
} |
|
|
|
// AttrSet set val of index'attr |
|
func (d *DM) AttrSet(v int32, bit uint) { |
|
d.Attr = d.Attr&(^(1 << bit)) | (v << bit) |
|
} |
|
|
|
// AttrNtoA convert uint to string format,eg:5-->101-->1,3. |
|
func (d *DM) AttrNtoA() string { |
|
if d.Attr == 0 { |
|
return "" |
|
} |
|
var bits []int64 |
|
for k, v := range strconv.FormatInt(int64(d.Attr), 2) { |
|
if v == 49 { |
|
bits = append(bits, int64(k+1)) |
|
} |
|
} |
|
return xstr.JoinInts(bits) |
|
} |
|
|
|
// Content dm content info |
|
type Content struct { |
|
ID int64 `json:"id"` |
|
FontSize int32 `json:"fontsize"` |
|
Color int64 `json:"color"` |
|
Mode int32 `json:"mode"` |
|
IP int64 `json:"ip"` |
|
Plat int32 `json:"plat"` |
|
Msg string `json:"msg"` |
|
Ctime time.Time `json:"ctime"` |
|
Mtime time.Time `json:"mtime"` |
|
} |
|
|
|
// ContentSpecial special dm data |
|
type ContentSpecial struct { |
|
ID int64 `json:"id"` |
|
Msg string `json:"msg"` |
|
Ctime time.Time `json:"ctime"` |
|
Mtime time.Time `json:"mtime"` |
|
} |
|
|
|
// DMVisible check dm is visible or not. |
|
func DMVisible(state int32) bool { |
|
if state == StateNormal || state == StateHide || state == StateMonitorAfter { |
|
return true |
|
} |
|
return false |
|
} |
|
|
|
// SearchDMParams dm search params |
|
type SearchDMParams struct { |
|
Type int32 `form:"type" validate:"required"` |
|
Oid int64 `form:"oid" validate:"required"` |
|
Keyword string `form:"keyword"` |
|
Mid int64 `form:"mid" default:"-10516"` |
|
IP string `form:"ip"` |
|
State string `form:"state"` |
|
Pool string `form:"pool"` |
|
Attrs string `form:"attrs"` |
|
ProgressFrom int64 `form:"progress_from" default:"-10516"` |
|
ProgressTo int64 `form:"progress_to" default:"-10516"` |
|
CtimeFrom int64 `form:"ctime_from" default:"-10516"` |
|
CtimeTo int64 `form:"ctime_to" default:"-10516"` |
|
Page int64 `form:"page" default:"1"` |
|
Size int64 `form:"page_size" default:"100"` |
|
Sort string `form:"sort"` |
|
Order string `form:"order"` |
|
} |
|
|
|
// SearchDMData dm meta data from search |
|
type SearchDMData struct { |
|
Order string `json:"order"` |
|
Sort string `json:"sort"` |
|
Result []*struct { |
|
ID int64 `json:"id"` |
|
} `json:"result"` |
|
Page *Page `json:"page"` |
|
} |
|
|
|
//SearchDMResult dm list |
|
type SearchDMResult struct { |
|
Total int64 `json:"total"` |
|
Count int64 `json:"count"` |
|
MaxLimit int64 `json:"max_limit"` |
|
Protected int64 `json:"protected"` |
|
Deleted int64 `json:"deleted"` |
|
Page int64 `json:"page"` |
|
Pagesize int64 `json:"pagesize"` |
|
Result []*DMItem `json:"result"` |
|
} |
|
|
|
//ListItem dm list item |
|
type ListItem struct { |
|
ID int64 `json:"id"` |
|
CID int64 `json:"cid"` |
|
PoolID int `json:"pool_id"` |
|
Deleted int `json:"deleted"` |
|
UID int64 `json:"uid"` |
|
Uname string `json:"uname"` |
|
IP string `json:"ip"` |
|
Playtime float64 `json:"playtime"` |
|
Model int `json:"model"` |
|
Msg string `json:"msg"` |
|
Fontsize int `json:"fontsize"` |
|
Color string `json:"color"` |
|
Ctime time.Time `json:"ctime"` |
|
} |
|
|
|
// DMItem dm list item from new db |
|
type DMItem struct { |
|
IDStr string `json:"id_str"` |
|
ID int64 `json:"id"` |
|
Type int32 `json:"type"` |
|
Oid int64 `json:"oid"` |
|
Mid int64 `json:"mid"` |
|
Pool int32 `json:"pool"` |
|
State int32 `json:"state"` |
|
Attrs string `json:"attrs"` |
|
IP int64 `json:"ip"` |
|
Progress int32 `json:"progress"` |
|
Mode int32 `json:"mode"` |
|
Msg string `json:"msg"` |
|
Fontsize int32 `json:"fontsize"` |
|
Color string `json:"color"` |
|
Ctime time.Time `json:"ctime"` |
|
Uname string `json:"uname"` |
|
} |
|
|
|
// DMSubject dm_inid info |
|
type DMSubject struct { |
|
OID int64 `json:"oid"` |
|
Type int32 `json:"type"` |
|
AID int64 `json:"aid"` |
|
MID int64 `json:"uid"` |
|
ACount int64 `json:"count"` |
|
Limit int64 `json:"limit"` |
|
TID int64 `json:"tid"` |
|
TName string `json:"tname"` |
|
State int32 `json:"state"` |
|
ETitle string `json:"ep_title"` |
|
Title string `json:"title"` |
|
CTime time.Time `json:"ctime"` |
|
MTime time.Time `json:"mtime"` |
|
} |
|
|
|
//ArchiveResult archive list |
|
type ArchiveResult struct { |
|
ArcLists []*DMSubject `json:"archives"` |
|
Page *Page `json:"page"` |
|
} |
|
|
|
//DMIndexInfo dm_inid index info |
|
type DMIndexInfo struct { |
|
CID int64 `json:"dm_inid"` |
|
AID int64 `json:"aid"` |
|
MID int64 `json:"mid"` |
|
UName string `json:"u_name"` |
|
Duration int64 `json:"duration"` |
|
Limit int64 `json:"limit"` |
|
Active int64 `json:"dm_active"` |
|
ETitle string `json:"ep_title"` |
|
Title string `json:"title"` |
|
Cover string `json:"cover"` |
|
CTime int64 `json:"ctime"` |
|
MTime int64 `json:"mtime"` |
|
} |
|
|
|
// ArcVideo arc+video info by api |
|
type ArcVideo struct { |
|
Archive *struct { |
|
AID int64 `json:"aid"` |
|
MID int64 `json:"mid"` |
|
TID int64 `json:"tid"` |
|
Title string `json:"title"` |
|
Cover string `json:"cover"` |
|
RjReason string `json:"reject_reason"` |
|
Tag string `json:"tag"` |
|
Duration int64 `json:"duration"` |
|
Copyright int64 `json:"copyright"` |
|
Desc string `json:"desc"` |
|
MissionID int64 `json:"mission_id"` |
|
Attribute int64 `json:"attribute"` |
|
State int64 `json:"state"` |
|
Source string `json:"source"` |
|
NoReprint int64 `json:"no_reprint"` |
|
OrderID int64 `json:"order_id"` |
|
DTime int64 `json:"dtime"` |
|
PTime int64 `json:"ptime"` |
|
CTime int64 `json:"ctime"` |
|
} `json:"archive"` |
|
Videos []*struct { |
|
AID int64 `json:"aid"` |
|
Title string `json:"title"` |
|
Desc string `json:"desc"` |
|
Filename string `json:"filename"` |
|
CID int64 `json:"cid"` |
|
Index int64 `json:"index"` |
|
Status int64 `json:"status"` |
|
FailCode int64 `json:"fail_code"` |
|
XState int64 `json:"xcode_state"` |
|
RjReason string `json:"reject_reason"` |
|
CTime int64 `json:"ctime"` |
|
} `json:"videos"` |
|
} |
|
|
|
// ArchiveType archive type info |
|
type ArchiveType struct { |
|
ID int64 `json:"id"` |
|
PID int64 `json:"pid"` |
|
Name string `json:"name"` |
|
Desc string `json:"description"` |
|
} |
|
|
|
// ArchiveListReq archive list request |
|
type ArchiveListReq struct { |
|
IDType string |
|
ID int64 |
|
Page int64 |
|
State int64 |
|
Attrs []int64 |
|
Pn int64 |
|
Ps int64 |
|
Sort string |
|
Order string |
|
} |
|
|
|
// UptSearchDMState update search dm state |
|
type UptSearchDMState struct { |
|
ID int64 `json:"id"` |
|
Oid int64 `json:"oid"` |
|
Type int32 `json:"type"` |
|
State int32 `json:"state"` |
|
Mtime string `json:"mtime"` |
|
} |
|
|
|
// UptSearchDMPool update search dm pool |
|
type UptSearchDMPool struct { |
|
ID int64 `json:"id"` |
|
Oid int64 `json:"oid"` |
|
Type int32 `json:"type"` |
|
Pool int32 `json:"pool"` |
|
Mtime string `json:"mtime"` |
|
} |
|
|
|
// UptSearchDMAttr update search dm attr |
|
type UptSearchDMAttr struct { |
|
ID int64 `json:"id"` |
|
Oid int64 `json:"oid"` |
|
Type int32 `json:"type"` |
|
Attr int32 `json:"attr"` |
|
Mtime string `json:"mtime"` |
|
AttrFormat []int64 `json:"attr_format"` |
|
} |
|
|
|
// MaskUp mask up info. |
|
type MaskUp struct { |
|
ID int64 `json:"id"` |
|
Mid int64 `json:"mid"` |
|
Name string `json:"name"` |
|
State int32 `json:"state"` |
|
Comment string `json:"comment"` |
|
CTime time.Time `json:"ctime"` |
|
MTime time.Time `json:"mtime"` |
|
} |
|
|
|
// MaskUpRes maskUp and page info |
|
type MaskUpRes struct { |
|
Result []*MaskUp `json:"result"` |
|
Page *PageInfo `json:"page"` |
|
}
|
|
|