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)
|
||
}
|