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. 限时封禁
|
||
}
|