232 lines
5.6 KiB
Go
232 lines
5.6 KiB
Go
package block
|
||
|
||
import (
|
||
"time"
|
||
)
|
||
|
||
// BlockStatus 封禁状态 0. 未封禁 1. 永久封禁 2. 限时封禁
|
||
type BlockStatus uint8
|
||
|
||
const (
|
||
// BlockStatusFalse 未封禁
|
||
BlockStatusFalse BlockStatus = iota
|
||
// BlockStatusForever 永久封禁
|
||
BlockStatusForever
|
||
// BlockStatusLimit 限时封禁
|
||
BlockStatusLimit
|
||
// BlockStatusCredit 小黑屋封禁
|
||
BlockStatusCredit
|
||
)
|
||
|
||
// BlockSource 封禁来源 1. 小黑屋(小黑屋和manager后台封禁) 2. 系统封禁(反作弊及监控系统上报) 3.管理后台 4.B+
|
||
type BlockSource uint8
|
||
|
||
// Contain .
|
||
func (b BlockSource) Contain() bool {
|
||
switch b {
|
||
case BlockSourceBlackHouse, BlockSourceSys, BlockSourceManager, BlockSourceBplus:
|
||
return true
|
||
default:
|
||
return false
|
||
}
|
||
}
|
||
|
||
const (
|
||
// BlockSourceBlackHouse 小黑屋封禁
|
||
BlockSourceBlackHouse BlockSource = iota + 1
|
||
// BlockSourceSys 系统封禁
|
||
BlockSourceSys
|
||
// BlockSourceManager 管理后台
|
||
BlockSourceManager
|
||
// BlockSourceBplus B+相关(动态、im、小视频)
|
||
BlockSourceBplus
|
||
)
|
||
|
||
// String .
|
||
func (b BlockSource) String() string {
|
||
switch b {
|
||
case BlockSourceBlackHouse:
|
||
return "小黑屋"
|
||
case BlockSourceSys:
|
||
return "系统封禁"
|
||
case BlockSourceManager:
|
||
return "管理后台"
|
||
case BlockSourceBplus:
|
||
return "Bplus"
|
||
default:
|
||
return ""
|
||
}
|
||
}
|
||
|
||
const (
|
||
// BlockLogBizID 用户审核日志
|
||
BlockLogBizID int = 122
|
||
)
|
||
|
||
// BlockArea 封禁业务
|
||
type BlockArea uint8
|
||
|
||
// Contain .
|
||
func (b BlockArea) Contain() bool {
|
||
switch b {
|
||
case BlockAreaNone, BlockAreaReply, BlockAreaDanmaku, BlockAreaMessage, BlockAreaTag, BlockAreaProfile, BlockAreaArchive, BlockAreaMusic, BlockAreaArticle, BlockAreaSpaceBanner, BlockAreaDynamic, BlockAreaAlbum, BlockAreaQuickVideo:
|
||
return true
|
||
default:
|
||
return false
|
||
}
|
||
}
|
||
|
||
func (b BlockArea) String() string {
|
||
switch b {
|
||
case BlockAreaReply:
|
||
return "评论"
|
||
case BlockAreaDanmaku:
|
||
return "弹幕"
|
||
case BlockAreaMessage:
|
||
return "私信"
|
||
case BlockAreaTag:
|
||
return "标签"
|
||
case BlockAreaProfile:
|
||
return "个人资料"
|
||
case BlockAreaArchive:
|
||
return "投稿"
|
||
case BlockAreaMusic:
|
||
return "音频"
|
||
case BlockAreaArticle:
|
||
return "专栏"
|
||
case BlockAreaSpaceBanner:
|
||
return "空间头图"
|
||
case BlockAreaDynamic:
|
||
return "动态"
|
||
case BlockAreaAlbum:
|
||
return "相册"
|
||
case BlockAreaQuickVideo:
|
||
return "小视频"
|
||
default:
|
||
return ""
|
||
}
|
||
}
|
||
|
||
// const .
|
||
const (
|
||
BlockAreaNone BlockArea = iota
|
||
BlockAreaReply
|
||
BlockAreaDanmaku
|
||
BlockAreaMessage
|
||
BlockAreaTag
|
||
BlockAreaProfile // 个人资料
|
||
BlockAreaArchive
|
||
BlockAreaMusic
|
||
BlockAreaArticle
|
||
BlockAreaSpaceBanner // 空间头图
|
||
BlockAreaDynamic // 动态
|
||
BlockAreaAlbum // 相册
|
||
BlockAreaQuickVideo //小视频
|
||
)
|
||
|
||
// BlockAction .
|
||
type BlockAction uint8
|
||
|
||
const (
|
||
// BlockActionLimit 限时封禁
|
||
BlockActionLimit BlockAction = iota + 1
|
||
// BlockActionForever 永久封禁
|
||
BlockActionForever
|
||
// BlockActionAdminRemove 后台解封
|
||
BlockActionAdminRemove
|
||
// BlockActionSelfRemove 自助解封
|
||
BlockActionSelfRemove
|
||
)
|
||
|
||
// String .
|
||
func (b BlockAction) String() string {
|
||
switch b {
|
||
case BlockActionLimit:
|
||
return "限时封禁"
|
||
case BlockActionForever:
|
||
return "永久封禁"
|
||
case BlockActionAdminRemove:
|
||
return "后台解封"
|
||
case BlockActionSelfRemove:
|
||
return "自动解封"
|
||
default:
|
||
return ""
|
||
}
|
||
}
|
||
|
||
// BlockInfo 封禁信息
|
||
type BlockInfo struct {
|
||
MID int64 `json:"mid"`
|
||
BlockStatus BlockStatus `json:"status"` // status 封禁状态 0. 未封禁 1. 永久封禁 2. 限时封禁
|
||
StartTime int64 `json:"start_time"` // 开始封禁时间 unix time 未封禁为 -1
|
||
EndTime int64 `json:"end_time"` // 结束封禁时间 unix time 永久封禁为 -1
|
||
}
|
||
|
||
// ParseDB .
|
||
func (b *BlockInfo) ParseDB(data *DBHistory) {
|
||
b.MID = data.MID
|
||
switch data.Action {
|
||
case BlockActionForever:
|
||
b.BlockStatus = BlockStatusForever
|
||
case BlockActionLimit:
|
||
b.BlockStatus = BlockStatusLimit
|
||
default:
|
||
b.BlockStatus = BlockStatusFalse
|
||
}
|
||
|
||
switch b.BlockStatus {
|
||
case BlockStatusForever:
|
||
b.StartTime = data.StartTime.Unix()
|
||
b.EndTime = -1
|
||
case BlockStatusLimit:
|
||
b.StartTime = data.StartTime.Unix()
|
||
b.EndTime = data.StartTime.Add(time.Duration(data.Duration) * time.Second).Unix()
|
||
default:
|
||
b.StartTime = -1
|
||
b.EndTime = -1
|
||
}
|
||
}
|
||
|
||
// ParseMC .
|
||
func (b *BlockInfo) ParseMC(data *MCBlockInfo, mid int64) {
|
||
b.MID = mid
|
||
b.BlockStatus = data.BlockStatus
|
||
b.StartTime = data.StartTime
|
||
b.EndTime = data.EndTime
|
||
}
|
||
|
||
// BlockHistory 封禁历史
|
||
type BlockHistory struct {
|
||
Area BlockArea `json:"type"`
|
||
Operator string `json:"operator"` // 操作人
|
||
Reason string `json:"reason"` // 封禁原因
|
||
Action BlockAction `json:"action"` // 操作类型
|
||
ActionTime int64 `json:"action_time"` // 操作时间
|
||
RemoveTime int64 `json:"remove_time"` // 解封时间
|
||
Comment string `json:"comment"`
|
||
}
|
||
|
||
// ParseDB .
|
||
func (b *BlockHistory) ParseDB(data *DBHistory) {
|
||
b.Area = data.Area
|
||
b.Operator = data.AdminName
|
||
b.Reason = data.Reason
|
||
b.Action = data.Action
|
||
b.ActionTime = data.StartTime.Unix()
|
||
b.RemoveTime = data.StartTime.Add(time.Second * time.Duration(data.Duration)).Unix()
|
||
b.Comment = data.Comment
|
||
}
|
||
|
||
// BlockMessage 通知消息体
|
||
type BlockMessage struct {
|
||
MID int64 `json:"mid"` // 用户mid
|
||
Area BlockArea `json:"area"` // BlockArea 封禁类型 1. 小黑屋(小黑屋和manager后台封禁) 2. 系统封禁(反作弊及监控系统上报) 3.解封 (所有后台,用户前台自助的解封)
|
||
Status BlockStatus `json:"status"` // blockStatus 封禁状态 0. 未封禁 1. 永久封禁 2. 限时封禁
|
||
}
|
||
|
||
// BlockUserDetail .
|
||
type BlockUserDetail struct {
|
||
MID int64 `json:"mid"` // 用户mid
|
||
BlockCount int64 `json:"block_count"` // 封禁次数
|
||
}
|