Create & Init Project...

This commit is contained in:
2019-04-22 18:49:16 +08:00
commit fc4fa37393
25440 changed files with 4054998 additions and 0 deletions

View File

@@ -0,0 +1,33 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = [
"dao.go",
"http.go",
"model.go",
"msg.go",
"notify.go",
],
importpath = "go-common/app/admin/main/block/model",
tags = ["automanaged"],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)

View File

@@ -0,0 +1,46 @@
package model
import (
"time"
)
// DBUser .
type DBUser struct {
ID int64
MID int64
Status BlockStatus
CTime time.Time
MTime time.Time
}
// DBUserDetail .
type DBUserDetail struct {
ID int64
MID int64
BlockCount int
CTime time.Time
MTime time.Time
}
// DBHistory .
type DBHistory struct {
ID int64
MID int64
AdminID int64
AdminName string
Source BlockSource
Area BlockArea
Reason string
Comment string
Action BlockAction
StartTime time.Time
Duration int64
Notify bool
CTime time.Time
MTime time.Time
}
// MCBlockInfo .
type MCBlockInfo struct {
BlockStatus BlockStatus `json:"bs"`
}

View File

@@ -0,0 +1,130 @@
package model
// ParamValidator .
type ParamValidator interface {
Validate() bool
}
// ParamSearch .
type ParamSearch struct {
MIDs []int64 `form:"mids,split"`
}
// Validate .
func (p *ParamSearch) Validate() bool {
p.MIDs = intsSet(p.MIDs)
if len(p.MIDs) == 0 || len(p.MIDs) > 200 {
return false
}
return true
}
// ParamHistory .
type ParamHistory struct {
MID int64 `form:"mid"`
PS int `form:"ps"`
PN int `form:"pn"`
}
// Validate .
func (p *ParamHistory) Validate() bool {
if p.MID <= 0 {
return false
}
if p.PS <= 0 || p.PS > 100 {
return false
}
if p.PN <= 0 {
return false
}
return true
}
// ParamBatchBlock .
type ParamBatchBlock struct {
MIDs []int64 `form:"mids,split"`
AdminID int64 `form:"admin_id"`
AdminName string `form:"admin_name"`
Source int `form:"source"` //1 系统封禁 2 小黑屋封禁
Area BlockArea `form:"area"`
Reason string `form:"reason"`
Comment string `form:"comment"`
Action BlockAction `form:"action"`
Duration int64 `form:"duration"` // 单位:天
Notify bool `form:"notify"`
}
// Validate .
func (p *ParamBatchBlock) Validate() bool {
p.MIDs = intsSet(p.MIDs)
if len(p.MIDs) == 0 || len(p.MIDs) > 200 {
return false
}
if p.AdminID <= 0 {
return false
}
if p.AdminName == "" {
return false
}
if p.Source != 1 && p.Source != 2 {
return false
}
if !p.Area.Contain() {
return false
}
if p.Comment == "" {
return false
}
if p.Action != BlockActionForever && p.Action != BlockActionLimit {
return false
}
if p.Action == BlockActionLimit {
if p.Duration <= 0 {
return false
}
}
return true
}
// ParamBatchRemove .
type ParamBatchRemove struct {
MIDs []int64 `form:"mids,split"`
AdminID int64 `form:"admin_id"`
AdminName string `form:"admin_name"`
Comment string `form:"comment"`
Notify bool `form:"notify"`
}
// Validate .
func (p *ParamBatchRemove) Validate() bool {
p.MIDs = intsSet(p.MIDs)
if len(p.MIDs) == 0 || len(p.MIDs) > 200 {
return false
}
if p.AdminID <= 0 {
return false
}
if p.AdminName == "" {
return false
}
if p.Comment == "" {
return false
}
return true
}
func intsSet(ints []int64) (intSet []int64) {
if len(ints) == 0 {
return
}
OUTER:
for i := range ints {
for ni := range intSet {
if ints[i] == intSet[ni] {
continue OUTER
}
}
intSet = append(intSet, ints[i])
}
return
}

View File

@@ -0,0 +1,212 @@
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. 限时封禁
}

View File

@@ -0,0 +1,17 @@
package model
// MSGType .
type MSGType uint8
// const .
const (
MSGTypeBlock MSGType = iota + 1
MSGTypeBlockRemove
)
// MSG .
type MSG struct {
Code string
Title string
Content string
}

View File

@@ -0,0 +1,8 @@
package model
// AccountNotify .
type AccountNotify struct {
UID int64 `json:"mid"`
Type string `json:"type"`
Action string `json:"action"`
}