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 "弹幕举报二审" }