213 lines
5.3 KiB
Go
213 lines
5.3 KiB
Go
|
package model
|
|||
|
|
|||
|
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.解封 (所有后台,用户前台自助的解封)
|
|||
|
type BlockSource uint8
|
|||
|
|
|||
|
// Contain .
|
|||
|
func (b BlockSource) Contain() bool {
|
|||
|
switch b {
|
|||
|
case BlockSourceBlackHouse, BlockSourceSys, BlockSourceRemove:
|
|||
|
return true
|
|||
|
default:
|
|||
|
return false
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
const (
|
|||
|
// BlockSourceBlackHouse 小黑屋封禁
|
|||
|
BlockSourceBlackHouse BlockSource = iota + 1
|
|||
|
// BlockSourceSys 系统封禁
|
|||
|
BlockSourceSys
|
|||
|
// BlockSourceRemove 解封
|
|||
|
BlockSourceRemove
|
|||
|
)
|
|||
|
|
|||
|
// String .
|
|||
|
func (b BlockSource) String() string {
|
|||
|
switch b {
|
|||
|
case BlockSourceBlackHouse:
|
|||
|
return "小黑屋封禁"
|
|||
|
case BlockSourceSys:
|
|||
|
return "系统封禁"
|
|||
|
case BlockSourceRemove:
|
|||
|
return "解封"
|
|||
|
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"`
|
|||
|
Nickname string `json:"nickname"`
|
|||
|
Username string `json:"username"` // 注册生成时不可更改的username
|
|||
|
Tel string `json:"tel"`
|
|||
|
TelStatus int32 `json:"tel_status"`
|
|||
|
Mail string `json:"mail"` // 绑定的邮箱
|
|||
|
Level int32 `json:"level"`
|
|||
|
SpyScore int8 `json:"spy_score"`
|
|||
|
FigureRank int8 `json:"figure_rank"`
|
|||
|
RegTime int64 `json:"reg_time"`
|
|||
|
BlockStatus BlockStatus `json:"block_status"` // blockStatus 封禁状态 0. 未封禁 1. 永久封禁 2. 限时封禁
|
|||
|
BlockCount int `json:"block_count"`
|
|||
|
}
|
|||
|
|
|||
|
// ParseStatus .
|
|||
|
func (b *BlockInfo) ParseStatus(db *DBUser) {
|
|||
|
switch db.Status {
|
|||
|
case BlockStatusCredit:
|
|||
|
b.BlockStatus = BlockStatusLimit
|
|||
|
default:
|
|||
|
b.BlockStatus = db.Status
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// BlockHistory 封禁历史
|
|||
|
type BlockHistory struct {
|
|||
|
Source BlockSource `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.Source = data.Source
|
|||
|
b.Operator = data.AdminName
|
|||
|
if data.Area.String() == "" {
|
|||
|
b.Reason = data.Reason
|
|||
|
} else {
|
|||
|
b.Reason = data.Area.String() + " - " + data.Reason
|
|||
|
}
|
|||
|
b.Action = data.Action
|
|||
|
b.ActionTime = data.StartTime.Unix()
|
|||
|
if b.Action == BlockActionLimit {
|
|||
|
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. 限时封禁
|
|||
|
}
|