You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
248 lines
6.3 KiB
248 lines
6.3 KiB
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) |
|
}
|
|
|