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 }