249 lines
6.3 KiB
Go
249 lines
6.3 KiB
Go
|
package model
|
|||
|
|
|||
|
import (
|
|||
|
"fmt"
|
|||
|
)
|
|||
|
|
|||
|
var (
|
|||
|
_upTpl = `由#{%s}{"http://space.bilibili.com/%d"}在您的稿件《#{%s}{"http://www.bilibili.com/video/av%d"}》下创作的%s语言版本的字幕,已被管理员流转到%s。《#{查看详情}{"https://member.bilibili.com/v2#/zimu/my-zimu/zimu-editor?aid=%d&cid=%d&subtitleId=%d"}》)`
|
|||
|
_userTpl = `您在稿件《#{%s}{"http://www.bilibili.com/video/av%d"}》下创作的%s语言版本的字幕,已被管理员流转到%s状态。《#{查看详情}{"https://member.bilibili.com/v2#/zimu/my-zimu/zimu-editor?aid=%d&cid=%d&subtitleId=%d"}》)`
|
|||
|
|
|||
|
// StatusContent .
|
|||
|
StatusContent = map[uint8]string{
|
|||
|
uint8(SubtitleStatusDraft): "草稿",
|
|||
|
uint8(SubtitleStatusToAudit): "待审核",
|
|||
|
uint8(SubtitleStatusAuditBack): "驳回",
|
|||
|
uint8(SubtitleStatusRemove): "删除",
|
|||
|
uint8(SubtitleStatusPublish): "发布",
|
|||
|
uint8(SubtitleStatusManagerBack): "管理员驳回",
|
|||
|
uint8(SubtitleStatusManagerRemove): "管理员删除",
|
|||
|
}
|
|||
|
)
|
|||
|
|
|||
|
// WorkFlowSubtitleDispose .
|
|||
|
const (
|
|||
|
WorkFlowSubtitleDisposeManagerBack = int32(2) // 管理员回退
|
|||
|
WorkFlowSubtitleDisposeManagerDelete = int32(3) // 管理员删除
|
|||
|
)
|
|||
|
|
|||
|
// SubtitleStatus .
|
|||
|
type SubtitleStatus uint8
|
|||
|
|
|||
|
// SubtitleStatus
|
|||
|
const (
|
|||
|
SubtitleStatusUnknown SubtitleStatus = iota
|
|||
|
SubtitleStatusDraft
|
|||
|
SubtitleStatusToAudit
|
|||
|
SubtitleStatusAuditBack
|
|||
|
SubtitleStatusRemove
|
|||
|
SubtitleStatusPublish
|
|||
|
SubtitleStatusCheckToAudit
|
|||
|
SubtitleStatusCheckPublish
|
|||
|
SubtitleStatusManagerBack
|
|||
|
SubtitleStatusManagerRemove
|
|||
|
)
|
|||
|
|
|||
|
// WorkFlowSubtitleArg .
|
|||
|
type WorkFlowSubtitleArg struct {
|
|||
|
Object *WorkFlowObject `json:"object"`
|
|||
|
Targets []*WorkFlowTarget `json:"targets"`
|
|||
|
}
|
|||
|
|
|||
|
// WorkFlowObject .
|
|||
|
type WorkFlowObject struct {
|
|||
|
Ids []int64 `json:"id"`
|
|||
|
Business int64 `json:"business"`
|
|||
|
Reason string `json:"reason"`
|
|||
|
DisposeMode int32 `json:"dispose_mode"`
|
|||
|
}
|
|||
|
|
|||
|
// WorkFlowTarget .
|
|||
|
type WorkFlowTarget struct {
|
|||
|
ID int64 `json:"id"`
|
|||
|
Eid int64 `json:"eid"`
|
|||
|
Oid int64 `json:"oid"`
|
|||
|
}
|
|||
|
|
|||
|
// SearchSubtitleResult result from search
|
|||
|
type SearchSubtitleResult struct {
|
|||
|
Page *Page
|
|||
|
Result []*struct {
|
|||
|
Oid int64 `json:"oid"`
|
|||
|
ID int64 `json:"id"`
|
|||
|
} `json:"result"`
|
|||
|
}
|
|||
|
|
|||
|
// SubtitleList .
|
|||
|
type SubtitleList struct {
|
|||
|
Page *Page `json:"page"`
|
|||
|
Subtitles []*SearchSubtitle `json:"subtitles"`
|
|||
|
}
|
|||
|
|
|||
|
// SearchSubtitle .
|
|||
|
type SearchSubtitle struct {
|
|||
|
ID int64 `json:"subtitle_id"`
|
|||
|
Oid int64 `json:"oid"`
|
|||
|
Aid int64 `json:"aid"`
|
|||
|
ArchiveName string `json:"archive_name"`
|
|||
|
VideoName string `json:"video_name"`
|
|||
|
AuthorID int64 `json:"author_id"`
|
|||
|
Lan string `json:"lan"`
|
|||
|
LanDoc string `json:"lan_doc"`
|
|||
|
Status uint8 `json:"status"`
|
|||
|
IsSign bool `json:"is_sign"`
|
|||
|
IsLock bool `json:"is_lock"`
|
|||
|
SubtitleURL string `json:"subtitle_url"`
|
|||
|
Mtime int64 `json:"mtime"`
|
|||
|
}
|
|||
|
|
|||
|
// SubtitlePub .
|
|||
|
type SubtitlePub struct {
|
|||
|
Oid int64
|
|||
|
Type int32
|
|||
|
Lan uint8
|
|||
|
SubtitleID int64
|
|||
|
IsDelete bool
|
|||
|
}
|
|||
|
|
|||
|
// Subtitle .
|
|||
|
type Subtitle struct {
|
|||
|
ID int64 `json:"id"`
|
|||
|
Oid int64 `json:"oid"`
|
|||
|
Type int32 `json:"type"`
|
|||
|
Lan uint8 `json:"lan"`
|
|||
|
Aid int64 `json:"aid"`
|
|||
|
Mid int64 `json:"mid"`
|
|||
|
AuthorID int64 `json:"author_id"`
|
|||
|
UpMid int64 `json:"up_mid"`
|
|||
|
IsSign bool `json:"is_sign"`
|
|||
|
IsLock bool `json:"is_lock"`
|
|||
|
Status SubtitleStatus `json:"status"`
|
|||
|
PubTime int64 `json:"-"`
|
|||
|
SubtitleURL string `json:"subtitle_url"`
|
|||
|
Mtime int64 `json:"mtime"`
|
|||
|
}
|
|||
|
|
|||
|
// SubtitleSearchArg .
|
|||
|
type SubtitleSearchArg struct {
|
|||
|
Aid int64
|
|||
|
Oid int64
|
|||
|
Mid int64
|
|||
|
UpperMid int64
|
|||
|
Status uint8
|
|||
|
Lan uint8
|
|||
|
Ps int32
|
|||
|
Pn int32
|
|||
|
}
|
|||
|
|
|||
|
// SubtitleArg .
|
|||
|
type SubtitleArg struct {
|
|||
|
Aid int64 `form:"aid"`
|
|||
|
Oid int64 `form:"oid"`
|
|||
|
Mid int64 `form:"mid"`
|
|||
|
UpperMid int64 `form:"up_mid"`
|
|||
|
Status uint8 `form:"status"`
|
|||
|
Lan string `form:"lan"`
|
|||
|
Ps int32 `form:"ps" validate:"required"`
|
|||
|
Pn int32 `form:"pn" validate:"required"`
|
|||
|
}
|
|||
|
|
|||
|
// EditSubtitleArg .
|
|||
|
type EditSubtitleArg struct {
|
|||
|
Oid int64 `form:"oid" validate:"required"`
|
|||
|
SubtileID int64 `form:"subtitle_id" validate:"required"`
|
|||
|
Status uint8 `form:"status"`
|
|||
|
NotifyAuthor bool `form:"notify_author"`
|
|||
|
NotifyUpper bool `form:"notify_upper"`
|
|||
|
}
|
|||
|
|
|||
|
// SubtitleContext .
|
|||
|
type SubtitleContext struct {
|
|||
|
// UpdateStatus bool // 更新状态 无事务
|
|||
|
DraftCache bool // 删除草稿缓存
|
|||
|
SubtitleCache bool // 删除字幕个体缓存 (必须)
|
|||
|
RebuildPub bool // 触发到发布状态
|
|||
|
CheckHasDraft bool // 处罚到草稿状态
|
|||
|
}
|
|||
|
|
|||
|
// Build .
|
|||
|
func (sc *SubtitleContext) Build(origin, dst SubtitleStatus) {
|
|||
|
sc.SubtitleCache = true
|
|||
|
switch origin {
|
|||
|
case SubtitleStatusDraft, SubtitleStatusToAudit:
|
|||
|
sc.DraftCache = true
|
|||
|
case SubtitleStatusPublish:
|
|||
|
sc.RebuildPub = true
|
|||
|
}
|
|||
|
switch dst {
|
|||
|
case SubtitleStatusDraft, SubtitleStatusToAudit:
|
|||
|
sc.CheckHasDraft = true
|
|||
|
case SubtitleStatusPublish:
|
|||
|
sc.RebuildPub = true
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// SubtitleLans .
|
|||
|
type SubtitleLans []*SubtitleLan
|
|||
|
|
|||
|
// SubtitleLan .
|
|||
|
type SubtitleLan struct {
|
|||
|
Code int64 `json:"code"`
|
|||
|
Lan string `json:"lan"`
|
|||
|
DocZh string `json:"doc_zh"`
|
|||
|
DocEn string `json:"-"`
|
|||
|
}
|
|||
|
|
|||
|
// GetByLan .
|
|||
|
func (ss SubtitleLans) GetByLan(lan string) (code int64) {
|
|||
|
for _, s := range ss {
|
|||
|
if s.Lan == lan {
|
|||
|
return s.Code
|
|||
|
}
|
|||
|
}
|
|||
|
return 0
|
|||
|
}
|
|||
|
|
|||
|
// GetByID .
|
|||
|
func (ss SubtitleLans) GetByID(lanID int64) (lan string, doc string) {
|
|||
|
for _, s := range ss {
|
|||
|
if s.Code == lanID {
|
|||
|
return s.Lan, s.DocZh
|
|||
|
}
|
|||
|
}
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// NotifySubtitleUser .
|
|||
|
type NotifySubtitleUser struct {
|
|||
|
Mid int64
|
|||
|
Aid int64
|
|||
|
Oid int64
|
|||
|
SubtitleID int64
|
|||
|
ArchiveName string
|
|||
|
LanDoc string
|
|||
|
Status string
|
|||
|
}
|
|||
|
|
|||
|
// NotifySubtitleUp .
|
|||
|
type NotifySubtitleUp struct {
|
|||
|
Mid int64
|
|||
|
AuthorID int64
|
|||
|
AuthorName string
|
|||
|
Aid int64
|
|||
|
Oid int64
|
|||
|
SubtitleID int64
|
|||
|
ArchiveName string
|
|||
|
LanDoc string
|
|||
|
Status string
|
|||
|
}
|
|||
|
|
|||
|
// Msg .
|
|||
|
func (ns *NotifySubtitleUp) Msg() string {
|
|||
|
return fmt.Sprintf(_upTpl, ns.AuthorName, ns.AuthorID, ns.ArchiveName, ns.Aid, ns.LanDoc, ns.Status, ns.Aid, ns.Oid, ns.SubtitleID)
|
|||
|
}
|
|||
|
|
|||
|
// Msg .
|
|||
|
func (ns *NotifySubtitleUser) Msg() string {
|
|||
|
return fmt.Sprintf(_userTpl, ns.ArchiveName, ns.Aid, ns.LanDoc, ns.Status, ns.Aid, ns.Oid, ns.SubtitleID)
|
|||
|
}
|