@@ -0,0 +1,80 @@
|
||||
package contentreviewser
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"91porn-server/models/v/contentreviewmod"
|
||||
"91porn-server/models/v/mediacontentmod"
|
||||
"91porn-server/models/v/mediamod"
|
||||
"91porn-server/models/v/vidmod"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
// ApplyResolution 把命中记录里管理员提交的修改写回到对应数据源
|
||||
// 按 TargetType 分发:
|
||||
//
|
||||
// VIDEO → vidmod.UpdateForReview(title, content, richText)
|
||||
// ACG_MEDIA → mediamod.UpdateForReview(title, summary)
|
||||
// ACG_CONTENT → mediacontentmod.UpdateForReview(name, text)
|
||||
//
|
||||
// 该函数不修改 issue 自身的 resolveStatus;调用方在写回成功后再调 ApproveIssue
|
||||
func ApplyResolution(issue *contentreviewmod.ReviewIssue) error {
|
||||
switch issue.TargetType {
|
||||
case contentreviewmod.IssueTargetVideo:
|
||||
return vidmod.UpdateForReview(
|
||||
issue.TargetID,
|
||||
issue.SubmittedTitle,
|
||||
issue.SubmittedContent,
|
||||
issue.SubmittedRichText,
|
||||
)
|
||||
case contentreviewmod.IssueTargetACGMedia:
|
||||
return mediamod.UpdateForReview(
|
||||
issue.TargetID,
|
||||
issue.SubmittedTitle,
|
||||
issue.SubmittedContent,
|
||||
)
|
||||
case contentreviewmod.IssueTargetACGContent:
|
||||
return mediacontentmod.UpdateForReview(
|
||||
issue.TargetID,
|
||||
issue.SubmittedTitle,
|
||||
issue.SubmittedContent,
|
||||
)
|
||||
default:
|
||||
return fmt.Errorf("unsupported targetType: %s", issue.TargetType)
|
||||
}
|
||||
}
|
||||
|
||||
// ApplyOffShelfBatch 按 TargetType 分组把命中目标批量下架:
|
||||
//
|
||||
// VIDEO → vidmod.OffShelfManyForReview(TargetIDs) 视频置为 OffShelf(5)
|
||||
// ACG_MEDIA → mediamod.OffShelfManyForReview(TargetIDs) Media 置为 status=0
|
||||
// ACG_CONTENT → mediacontentmod.OffShelfManyForReview(TargetIDs) 章节置为 isActive=false
|
||||
//
|
||||
// 每个类型一次 UpdateMany;遇到未知 TargetType 直接返回错误,整批回滚交给调用方语义处理。
|
||||
// 该函数不修改 issue 自身 resolveStatus;调用方下架成功后再调 BatchOffShelfResolveIssues
|
||||
func ApplyOffShelfBatch(issues []*contentreviewmod.ReviewIssue) error {
|
||||
var videoIDs, mediaIDs, contentIDs []primitive.ObjectID
|
||||
for _, iss := range issues {
|
||||
switch iss.TargetType {
|
||||
case contentreviewmod.IssueTargetVideo:
|
||||
videoIDs = append(videoIDs, iss.TargetID)
|
||||
case contentreviewmod.IssueTargetACGMedia:
|
||||
mediaIDs = append(mediaIDs, iss.TargetID)
|
||||
case contentreviewmod.IssueTargetACGContent:
|
||||
contentIDs = append(contentIDs, iss.TargetID)
|
||||
default:
|
||||
return fmt.Errorf("unsupported targetType: %s (issueId=%s)", iss.TargetType, iss.ID.Hex())
|
||||
}
|
||||
}
|
||||
if err := vidmod.OffShelfManyForReview(videoIDs); err != nil {
|
||||
return fmt.Errorf("offshelf videos fail: %w", err)
|
||||
}
|
||||
if err := mediamod.OffShelfManyForReview(mediaIDs); err != nil {
|
||||
return fmt.Errorf("offshelf media fail: %w", err)
|
||||
}
|
||||
if err := mediacontentmod.OffShelfManyForReview(contentIDs); err != nil {
|
||||
return fmt.Errorf("offshelf media content fail: %w", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user