338 lines
11 KiB
Go
338 lines
11 KiB
Go
|
package model
|
|||
|
|
|||
|
import (
|
|||
|
"fmt"
|
|||
|
"time"
|
|||
|
)
|
|||
|
|
|||
|
// const const var
|
|||
|
const (
|
|||
|
// up主操作
|
|||
|
StatUpperInit = int8(0) // up主未处理
|
|||
|
StatUpperIgnore = int8(1) // up主已忽略
|
|||
|
StatUpperDelete = int8(2) // up主已删除
|
|||
|
|
|||
|
// 管理员操作
|
|||
|
StatFirstInit = int8(0) // 待一审
|
|||
|
StatFirstDelete = int8(1) // 一审删除
|
|||
|
StatSecondInit = int8(2) // 待二审
|
|||
|
StatSecondDelete = int8(3) // 二审删除
|
|||
|
StatSecondIgnore = int8(4) // 二审忽略
|
|||
|
StatFirstIgnore = int8(5) // 一审忽略
|
|||
|
StatSecondAutoDelete = int8(6) // 二审脚本删除
|
|||
|
StatJudgeInit = int8(7) // 风纪委待审(二审)
|
|||
|
StatJudgeDelete = int8(8) // 风纪委删除(二审)
|
|||
|
StatJudgeIgnore = int8(9) // 风纪委忽略(二审)
|
|||
|
|
|||
|
// 处理结果通知
|
|||
|
NoticeUnsend = int8(0) // 未通知用户
|
|||
|
NoticeSend = int8(1) // 已通知用户
|
|||
|
|
|||
|
// 举报通知状态
|
|||
|
NoticeReporter = int8(1)
|
|||
|
NoticePoster = int8(2)
|
|||
|
NoticeAll = int8(3)
|
|||
|
|
|||
|
// 举报原因
|
|||
|
ReportReasonProhibited = int8(1) // 违禁
|
|||
|
ReportReasonPorn = int8(2) // 色情
|
|||
|
RptReasonFraud = int8(3) // 赌博诈骗
|
|||
|
ReportReasonAttack = int8(4) // 人身攻击
|
|||
|
ReportReasonPrivate = int8(5) // 隐私
|
|||
|
ReportReasonAd = int8(6) // 广告
|
|||
|
ReportReasonWar = int8(7) // 引战
|
|||
|
ReportReasonSpoiler = int8(8) // 剧透
|
|||
|
ReportReasonMeaningless = int8(9) // 刷屏
|
|||
|
ReportReasonUnrelated = int8(10) // 视频不相关
|
|||
|
ReportReasonOther = int8(11) // 其他
|
|||
|
ReportReasonTeenagers = int8(12) // 青少年不良信息
|
|||
|
)
|
|||
|
|
|||
|
// var const map
|
|||
|
var (
|
|||
|
RptTemplate = map[string]string{
|
|||
|
"del": `您好,您在视频#{%s}{"http://www.bilibili.com/av%d"}中举报的弹幕『%s』已被删除%s,原因是『%s』,感谢您对bilibili社区秩序的维护,哔哩哔哩 (゜-゜)つロ 干杯~`,
|
|||
|
"ignore": `您好,非常感谢您的举报,您在视频#{%s}{"http://www.bilibili.com/av%d"}中举报的弹幕『%s』暂未认定为违规内容,具体弹幕规范烦请参阅 #{《弹幕礼仪》}{"http://www.bilibili.com/blackboard/help.html#d5"},哔哩哔哩 (゜-゜)つロ 干杯~`,
|
|||
|
}
|
|||
|
PostTemplate = map[int8]string{
|
|||
|
1: `您好,根据用户举报,您在视频#{%s}{"http://www.bilibili.com/av%d"}中的弹幕『%s』已被删除%s,原因是『%s』,请自觉遵守国家相关法律法规,具体弹幕规范烦请参阅#{《弹幕礼仪》}{"http://www.bilibili.com/blackboard/help.html#d5"},bilibili良好的社区氛围需要大家一起维护!`,
|
|||
|
2: `您好,根据用户举报,您在视频#{%s}{"http://www.bilibili.com/av%d"}中的弹幕『%s』已被删除%s,原因是『%s』,bilibili倡导平等友善的交流,具体弹幕规范烦请参阅#{《弹幕礼仪》}{"http://www.bilibili.com/blackboard/help.html#d5"},良好的社区氛围需要大家一起维护!`,
|
|||
|
3: `您好,根据用户举报,您在视频#{%s}{"http://www.bilibili.com/av%d"}中的弹幕『%s』已被删除%s,原因是『%s』,弹幕是公众场所而非私人场所,具体弹幕规范烦请参阅#{《弹幕礼仪》}{"http://www.bilibili.com/blackboard/help.html#d5"},良好的社区氛围需要大家一起维护!`,
|
|||
|
4: `您好,根据用户举报,您在视频#{%s}{"http://www.bilibili.com/av%d"}中的弹幕『%s』已被删除%s,原因是『%s』,bilibili倡导发送与视频相关、有用的弹幕,具体弹幕规范烦请参阅#{《弹幕礼仪》}{"http://www.bilibili.com/blackboard/help.html#d5"},良好的社区氛围需要大家一起维护!`,
|
|||
|
}
|
|||
|
AdminRptReason = map[int8]string{
|
|||
|
1: "内容涉及传播不实信息",
|
|||
|
2: "内容涉及非法网站信息",
|
|||
|
3: "内容涉及怂恿教唆信息",
|
|||
|
4: "内容涉及低俗信息",
|
|||
|
5: "内容涉及色情",
|
|||
|
6: "内容涉及赌博诈骗信息",
|
|||
|
7: "内容涉及人身攻击",
|
|||
|
8: "内容涉及侵犯他人隐私",
|
|||
|
9: "内容涉及垃圾广告",
|
|||
|
10: "内容涉及引战",
|
|||
|
11: "内容涉及视频剧透",
|
|||
|
12: "恶意刷屏",
|
|||
|
13: "视频不相关",
|
|||
|
14: "其他",
|
|||
|
15: "内容涉及违禁相关",
|
|||
|
16: "内容不适宜",
|
|||
|
17: "内容涉及青少年不良信息",
|
|||
|
}
|
|||
|
BlockReason = map[int8]string{
|
|||
|
4: "发布赌博诈骗信息",
|
|||
|
5: "发布违禁相关信息",
|
|||
|
6: "发布垃圾广告信息",
|
|||
|
7: "发布人身攻击言论",
|
|||
|
8: "发布侵犯他人隐私信息",
|
|||
|
9: "发布引战言论",
|
|||
|
10: "发布剧透信息",
|
|||
|
13: "发布色情信息",
|
|||
|
14: "发布低俗信息",
|
|||
|
17: "发布非法网站信息",
|
|||
|
18: "发布传播不实信息",
|
|||
|
19: "发布怂恿教唆信息",
|
|||
|
20: "恶意刷屏",
|
|||
|
24: "发布青少年不良内容",
|
|||
|
}
|
|||
|
)
|
|||
|
|
|||
|
// ReportListParams .
|
|||
|
type ReportListParams struct {
|
|||
|
States []int64 `form:"state,split"`
|
|||
|
UpOps []int64 `form:"upop,split"`
|
|||
|
Tids []int64 `form:"tid,split"`
|
|||
|
Aid int64 `form:"aid"`
|
|||
|
Cid int64 `form:"cid"`
|
|||
|
UID int64 `form:"uid"`
|
|||
|
RpUID int64 `form:"rp_user"`
|
|||
|
RpTypes []int64 `form:"rp_type,split"`
|
|||
|
Start string `form:"start"`
|
|||
|
End string `form:"end"`
|
|||
|
Sort string `form:"sort"`
|
|||
|
Order string `form:"order"`
|
|||
|
Keyword string `form:"keyword"`
|
|||
|
Page int32 `form:"page" default:"1"`
|
|||
|
PageSize int32 `form:"page_size" default:"100" validate:"max=1000"`
|
|||
|
}
|
|||
|
|
|||
|
// Report dm report struct.
|
|||
|
type Report struct {
|
|||
|
DidStr string `json:"dmid_str"` // str id
|
|||
|
ID int64 `json:"id"`
|
|||
|
Did int64 `json:"dmid"` // 弹幕id
|
|||
|
Cid int64 `json:"cid"` // 视频的id
|
|||
|
Aid int64 `json:"arc_aid"` // 稿件的id
|
|||
|
Tid int64 `json:"arc_typeid"` // 稿件的分区id
|
|||
|
UID int64 `json:"dm_owner_uid"` // 弹幕发送者的uid
|
|||
|
Msg string `json:"dm_msg"` // 弹幕内容
|
|||
|
Count int64 `json:"count"` // 被举报次数
|
|||
|
Content string `json:"content"` // 举报内容:只有类别其他才有值
|
|||
|
UpOP int8 `json:"up_op"` // up主操作状态
|
|||
|
State int8 `json:"state"` // 举报状态
|
|||
|
RpUID int64 `json:"uid"` // 最后一个举报用户id
|
|||
|
RpTime string `json:"rp_time"` // 举报时间
|
|||
|
RpType int64 `json:"reason"` // 举报类型
|
|||
|
Title string `json:"arc_title"` // 稿件标题
|
|||
|
Deleted int64 `json:"dm_deleted"` // 弹幕状态
|
|||
|
UPUid int64 `json:"arc_mid"` // up主id
|
|||
|
PoolID int64 `json:"pool_id"` // 弹幕池
|
|||
|
Model int64 `json:"model"` // 弹幕model
|
|||
|
Score int32 `json:"score"` // 举报分
|
|||
|
SendTime string `json:"dm_ctime"` // 弹幕发送时间
|
|||
|
Ctime string `json:"ctime"` // 插入时间
|
|||
|
Mtime string `json:"mtime"` // 更新时间
|
|||
|
RptUsers []*ReportUser `json:"user"` // 举报用户列表
|
|||
|
}
|
|||
|
|
|||
|
// ReportMsg report message
|
|||
|
type ReportMsg struct {
|
|||
|
Aid int64
|
|||
|
Uids string
|
|||
|
Did int64
|
|||
|
Title string
|
|||
|
Msg string
|
|||
|
State int8
|
|||
|
RptReason int8
|
|||
|
BlockReason int8
|
|||
|
Block int64
|
|||
|
}
|
|||
|
|
|||
|
// ReportJudge report judge
|
|||
|
type ReportJudge struct {
|
|||
|
AID int64 `json:"aid"`
|
|||
|
MID int64 `json:"mid"`
|
|||
|
Operator string `json:"operator"`
|
|||
|
OperID int64 `json:"oper_id"`
|
|||
|
OContent string `json:"origin_content"`
|
|||
|
OTitle string `json:"origin_title"`
|
|||
|
OType int64 `json:"origin_type"`
|
|||
|
OURL string `json:"origin_url"`
|
|||
|
ReasonType int64 `json:"reason_type"`
|
|||
|
OID int64 `json:"oid"`
|
|||
|
RPID int64 `json:"rp_id"`
|
|||
|
TagID int64 `json:"tag_id"`
|
|||
|
Type int64 `json:"type"`
|
|||
|
Page int64 `json:"page"`
|
|||
|
BTime int64 `json:"business_time"`
|
|||
|
}
|
|||
|
|
|||
|
// SearchReportResult dm repost list from search
|
|||
|
type SearchReportResult struct {
|
|||
|
Code int64 `json:"code"`
|
|||
|
Order string `json:"order"`
|
|||
|
Sort string `json:"sort"`
|
|||
|
Page *struct {
|
|||
|
Num int64 `json:"num"`
|
|||
|
Size int64 `json:"size"`
|
|||
|
Total int64 `json:"total"`
|
|||
|
} `json:"page"`
|
|||
|
Result []*Report `json:"result"`
|
|||
|
}
|
|||
|
|
|||
|
// UptSearchReport update search report
|
|||
|
type UptSearchReport struct {
|
|||
|
DMid int64 `json:"dmid"`
|
|||
|
State int8 `json:"state"`
|
|||
|
Ctime string `json:"ctime"`
|
|||
|
Mtime string `json:"mtime"`
|
|||
|
}
|
|||
|
|
|||
|
// ReportList dm report list
|
|||
|
type ReportList struct {
|
|||
|
Code int64 `json:"code"`
|
|||
|
Order string `json:"order"`
|
|||
|
Page int64 `json:"page"`
|
|||
|
PageSize int64 `json:"pagesize"`
|
|||
|
PageCount int64 `json:"pagecount"`
|
|||
|
Total int64 `json:"total"`
|
|||
|
Result []*Report `json:"result"`
|
|||
|
}
|
|||
|
|
|||
|
// ReduceMoral reduce moral
|
|||
|
type ReduceMoral struct {
|
|||
|
UID int64
|
|||
|
Moral int64
|
|||
|
Origin int8
|
|||
|
Reason int8
|
|||
|
ReasonType int8
|
|||
|
Operator string
|
|||
|
IsNotify int8
|
|||
|
Remark string
|
|||
|
}
|
|||
|
|
|||
|
// BlockUser block user
|
|||
|
type BlockUser struct {
|
|||
|
UID int64
|
|||
|
BlockForever int64
|
|||
|
BlockTimeLength int64
|
|||
|
BlockRemark string
|
|||
|
Operator string
|
|||
|
OriginType int64
|
|||
|
Moral int64
|
|||
|
ReasonType int64
|
|||
|
OriginTitle string
|
|||
|
OriginContent string
|
|||
|
OriginURL string
|
|||
|
IsNotify int64
|
|||
|
}
|
|||
|
|
|||
|
// ReportUser report user
|
|||
|
type ReportUser struct {
|
|||
|
ID int64 `json:"id"`
|
|||
|
Did int64 `json:"dmid"`
|
|||
|
UID int64 `json:"uid"`
|
|||
|
Reason int64 `json:"reason"`
|
|||
|
State int8 `json:"state"`
|
|||
|
Ctime time.Time `json:"ctime"`
|
|||
|
Mtime time.Time `json:"mtime"`
|
|||
|
}
|
|||
|
|
|||
|
// ReportLog dm admin log
|
|||
|
type ReportLog struct {
|
|||
|
ID int64 `json:"id"`
|
|||
|
Did int64 `json:"dmid"`
|
|||
|
AdminID int64 `json:"admin_id"`
|
|||
|
Reason int8 `json:"reason"`
|
|||
|
Result int8 `json:"result"`
|
|||
|
Remark string `json:"remark"`
|
|||
|
Elapsed int64 `json:"elapsed"`
|
|||
|
Ctime time.Time `json:"ctime"`
|
|||
|
Mtime time.Time `json:"mtime"`
|
|||
|
}
|
|||
|
|
|||
|
// PosterBlockMsg return report msg template by blockReason
|
|||
|
func PosterBlockMsg(reason int8) (str string, err error) {
|
|||
|
var (
|
|||
|
tmplKey int8
|
|||
|
)
|
|||
|
switch reason {
|
|||
|
case 4, 5, 13, 14, 17, 18, 19, 20, 24:
|
|||
|
tmplKey = 1
|
|||
|
case 6, 9:
|
|||
|
tmplKey = 2
|
|||
|
case 7, 8, 10, 12:
|
|||
|
tmplKey = 3
|
|||
|
default:
|
|||
|
err = fmt.Errorf("BlockReason %d not exist", reason)
|
|||
|
return
|
|||
|
}
|
|||
|
str = PostTemplate[tmplKey]
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// PosterAdminRptMsg return report msg template by adminRptReason
|
|||
|
func PosterAdminRptMsg(reason int8) (str string, err error) {
|
|||
|
var (
|
|||
|
tmplKey int8
|
|||
|
)
|
|||
|
switch reason {
|
|||
|
case 1, 2, 3, 4, 5, 6, 15, 17:
|
|||
|
tmplKey = 1
|
|||
|
case 7, 10:
|
|||
|
tmplKey = 2
|
|||
|
case 8, 9, 11, 12:
|
|||
|
tmplKey = 3
|
|||
|
case 13, 14, 16:
|
|||
|
tmplKey = 4
|
|||
|
default:
|
|||
|
err = fmt.Errorf("adminRptReason %d not exist", reason)
|
|||
|
return
|
|||
|
}
|
|||
|
str = PostTemplate[tmplKey]
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// RpReasonToJudgeReason 修改弹幕风纪委的理由
|
|||
|
func RpReasonToJudgeReason(r int8) (j int8) {
|
|||
|
switch r {
|
|||
|
case ReportReasonProhibited:
|
|||
|
j = 5
|
|||
|
case ReportReasonPorn:
|
|||
|
j = 13
|
|||
|
case RptReasonFraud:
|
|||
|
j = 4
|
|||
|
case ReportReasonAttack:
|
|||
|
j = 7
|
|||
|
case ReportReasonPrivate:
|
|||
|
j = 8
|
|||
|
case ReportReasonAd:
|
|||
|
j = 6
|
|||
|
case ReportReasonWar:
|
|||
|
j = 9
|
|||
|
case ReportReasonSpoiler:
|
|||
|
j = 10
|
|||
|
case ReportReasonMeaningless:
|
|||
|
j = 20
|
|||
|
}
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// CheckStateBelong check state first or second check
|
|||
|
func CheckStateBelong(state int8) string {
|
|||
|
if state == StatFirstInit || state == StatFirstDelete || state == StatFirstIgnore {
|
|||
|
return "弹幕举报一审"
|
|||
|
}
|
|||
|
return "弹幕举报二审"
|
|||
|
}
|