176 lines
5.6 KiB
Go
176 lines
5.6 KiB
Go
package yidun
|
|
|
|
import (
|
|
dto "cid/model/dto/yidun"
|
|
serviceDataengine "cid/service/dataengine"
|
|
"context"
|
|
|
|
"gitea.com/red-future/common/beans"
|
|
)
|
|
|
|
// ContentCheckController 内容送检控制器
|
|
type ContentCheckController struct{}
|
|
|
|
// ContentCheck 内容送检控制器单例
|
|
var ContentCheck = new(ContentCheckController)
|
|
|
|
// StatusRes 状态响应
|
|
type StatusRes struct {
|
|
Running bool `json:"running"`
|
|
Config serviceDataengine.ContentCheckConfig `json:"config"`
|
|
PendingStats map[string]int `json:"pending_stats"`
|
|
}
|
|
|
|
// Start 启动送检服务
|
|
func (c *ContentCheckController) Start(ctx context.Context, req *dto.StartCheckReq) (res *beans.ResponseEmpty, err error) {
|
|
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
|
|
|
if serviceDataengine.TencentContentCheck.IsRunning() {
|
|
return &beans.ResponseEmpty{}, nil
|
|
}
|
|
|
|
// 如果有配置参数,更新配置
|
|
if req.BatchSize > 0 || req.IntervalSeconds > 0 {
|
|
config := serviceDataengine.ContentCheckConfig{
|
|
BatchSize: req.BatchSize,
|
|
ImageEnabled: req.ImageEnabled,
|
|
VideoEnabled: req.VideoEnabled,
|
|
IntervalSeconds: req.IntervalSeconds,
|
|
}
|
|
serviceDataengine.TencentContentCheck.SetConfig(config)
|
|
}
|
|
|
|
err = serviceDataengine.TencentContentCheck.Start(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &beans.ResponseEmpty{}, nil
|
|
}
|
|
|
|
// Stop 停止送检服务
|
|
func (c *ContentCheckController) Stop(ctx context.Context, req *dto.EmptyReq) (res *beans.ResponseEmpty, err error) {
|
|
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
|
serviceDataengine.TencentContentCheck.Stop(ctx)
|
|
return
|
|
}
|
|
|
|
// Status 获取送检服务状态
|
|
func (c *ContentCheckController) Status(ctx context.Context, req *dto.EmptyReq) (res *StatusRes, err error) {
|
|
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
|
|
|
res = &StatusRes{
|
|
Running: serviceDataengine.TencentContentCheck.IsRunning(),
|
|
Config: serviceDataengine.TencentContentCheck.GetConfig(),
|
|
PendingStats: serviceDataengine.TencentContentCheck.GetPendingStats(ctx),
|
|
}
|
|
return
|
|
}
|
|
|
|
// ProcessImageCallback 处理图片检测回调
|
|
func (c *ContentCheckController) ProcessImageCallback(ctx context.Context, req *dto.ProcessImageCallbackReq) (res *beans.ResponseEmpty, err error) {
|
|
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
|
|
|
if req.CallbackData == "" {
|
|
return nil, err
|
|
}
|
|
|
|
err = serviceDataengine.TencentContentCallback.ProcessImageCallback(ctx, req.CallbackData)
|
|
return
|
|
}
|
|
|
|
// ProcessVideoCallback 处理视频检测回调
|
|
func (c *ContentCheckController) ProcessVideoCallback(ctx context.Context, req *dto.ProcessVideoCallbackReq) (res *beans.ResponseEmpty, err error) {
|
|
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
|
|
|
if req.CallbackData == "" {
|
|
return nil, err
|
|
}
|
|
|
|
err = serviceDataengine.TencentContentCallback.ProcessVideoCallback(ctx, req.CallbackData)
|
|
return
|
|
}
|
|
|
|
// ProcessImageResult 查询并处理图片检测结果(轮询模式)
|
|
func (c *ContentCheckController) ProcessImageResult(ctx context.Context, req *dto.ProcessImageResultReq) (res *beans.ResponseEmpty, err error) {
|
|
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
|
|
|
if req.TaskID == "" {
|
|
return nil, err
|
|
}
|
|
|
|
err = serviceDataengine.TencentContentCallback.ProcessImageResult(ctx, req.TaskID)
|
|
return
|
|
}
|
|
|
|
// ProcessVideoResult 查询并处理视频检测结果(轮询模式)
|
|
func (c *ContentCheckController) ProcessVideoResult(ctx context.Context, req *dto.ProcessVideoResultReq) (res *beans.ResponseEmpty, err error) {
|
|
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
|
|
|
if req.TaskID == "" {
|
|
return nil, err
|
|
}
|
|
|
|
err = serviceDataengine.TencentContentCallback.ProcessVideoResult(ctx, req.TaskID)
|
|
return
|
|
}
|
|
|
|
// ManualSubmitImageByID 根据图片ID手动提交送检
|
|
func (c *ContentCheckController) ManualSubmitImageByID(ctx context.Context, req *dto.ManualSubmitImageByIDReq) (res *dto.ManualSubmitRes, err error) {
|
|
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
|
|
|
result, err := serviceDataengine.TencentContentCheck.SubmitImageByID(ctx, req.ImageID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
res = &dto.ManualSubmitRes{
|
|
TaskID: result.TaskID,
|
|
}
|
|
return
|
|
}
|
|
|
|
// ManualSubmitVideoByID 根据视频ID手动提交送检
|
|
func (c *ContentCheckController) ManualSubmitVideoByID(ctx context.Context, req *dto.ManualSubmitVideoByIDReq) (res *dto.ManualSubmitRes, err error) {
|
|
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
|
|
|
result, err := serviceDataengine.TencentContentCheck.SubmitVideoByID(ctx, req.VideoID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
res = &dto.ManualSubmitRes{
|
|
TaskID: result.TaskID,
|
|
}
|
|
return
|
|
}
|
|
|
|
// GetImageCheckLogs 获取图片的送检日志
|
|
func (c *ContentCheckController) GetImageCheckLogs(ctx context.Context, req *dto.GetImageCheckLogsReq) (res *dto.GetCheckLogsRes, err error) {
|
|
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
|
|
|
logs, err := serviceDataengine.TencentContentCallback.GetCheckLogsByImageID(ctx, req.ImageID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
res = &dto.GetCheckLogsRes{
|
|
List: logs,
|
|
}
|
|
return
|
|
}
|
|
|
|
// GetVideoCheckLogs 获取视频的送检日志
|
|
func (c *ContentCheckController) GetVideoCheckLogs(ctx context.Context, req *dto.GetVideoCheckLogsReq) (res *dto.GetCheckLogsRes, err error) {
|
|
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
|
|
|
logs, err := serviceDataengine.TencentContentCallback.GetCheckLogsByVideoID(ctx, req.VideoID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
res = &dto.GetCheckLogsRes{
|
|
List: logs,
|
|
}
|
|
return
|
|
}
|