cid适配ppgo_job

This commit is contained in:
lmk
2026-07-18 10:10:23 +08:00
parent d930266fbf
commit 2fd858c97e
20 changed files with 810 additions and 884 deletions
@@ -2,17 +2,15 @@ package dataengine
import (
consts "cid/consts/dataengine"
internal "cid/controller/internal"
dao "cid/dao/dataengine"
entity "cid/model/entity/dataengine"
serviceDataengine "cid/service/dataengine"
"context"
"fmt"
"strings"
"time"
"gitea.redpowerfuture.com/red-future/common/beans"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
)
// MaterialVerifyController 素材校验控制器
@@ -107,7 +105,7 @@ type BatchVerifyReq struct {
// ListImage 图片素材列表
func (c *MaterialVerifyController) ListImage(ctx context.Context, req *ImageListReq) (res *ImageListRes, err error) {
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin", TenantId: 1})
ctx = internal.WithAdminUser(ctx)
if req.Page == 0 {
req.Page = 1
@@ -137,11 +135,20 @@ func (c *MaterialVerifyController) ListImage(ctx context.Context, req *ImageList
// StatsImage 图片素材统计
func (c *MaterialVerifyController) StatsImage(ctx context.Context, req *ImageListReq) (res *StatsRes, err error) {
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin", TenantId: 1})
ctx = internal.WithAdminUser(ctx)
// 使用实体中定义的正确状态值:PENDING=待校验, VERIFIED=校验通过, REJECTED=校验不通过
pending, _ := dao.TencentImage.CountByStatus(ctx, entity.VerifyStatusPending)
verified, _ := dao.TencentImage.CountByStatus(ctx, entity.VerifyStatusVerified)
rejected, _ := dao.TencentImage.CountByStatus(ctx, entity.VerifyStatusRejected)
pending, err := dao.TencentImage.CountByStatus(ctx, entity.VerifyStatusPending)
if err != nil {
g.Log().Errorf(ctx, "统计待校验图片数量失败: %v", err)
}
verified, err := dao.TencentImage.CountByStatus(ctx, entity.VerifyStatusVerified)
if err != nil {
g.Log().Errorf(ctx, "统计已通过图片数量失败: %v", err)
}
rejected, err := dao.TencentImage.CountByStatus(ctx, entity.VerifyStatusRejected)
if err != nil {
g.Log().Errorf(ctx, "统计不通过图片数量失败: %v", err)
}
return &StatsRes{
Pending: pending,
@@ -156,7 +163,7 @@ func (c *MaterialVerifyController) StatsImage(ctx context.Context, req *ImageLis
// ListVideo 视频素材列表
func (c *MaterialVerifyController) ListVideo(ctx context.Context, req *VideoListReq) (res *VideoListRes, err error) {
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin", TenantId: 1})
ctx = internal.WithAdminUser(ctx)
if req.Page == 0 {
req.Page = 1
@@ -186,11 +193,20 @@ func (c *MaterialVerifyController) ListVideo(ctx context.Context, req *VideoList
// StatsVideo 视频素材统计
func (c *MaterialVerifyController) StatsVideo(ctx context.Context, req *VideoListReq) (res *StatsRes, err error) {
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin", TenantId: 1})
ctx = internal.WithAdminUser(ctx)
// 使用实体中定义的正确状态值:PENDING=待校验, VERIFIED=校验通过, REJECTED=校验不通过
pending, _ := dao.TencentVideo.CountByStatus(ctx, entity.VerifyStatusPending)
verified, _ := dao.TencentVideo.CountByStatus(ctx, entity.VerifyStatusVerified)
rejected, _ := dao.TencentVideo.CountByStatus(ctx, entity.VerifyStatusRejected)
pending, err := dao.TencentVideo.CountByStatus(ctx, entity.VerifyStatusPending)
if err != nil {
g.Log().Errorf(ctx, "统计待校验视频数量失败: %v", err)
}
verified, err := dao.TencentVideo.CountByStatus(ctx, entity.VerifyStatusVerified)
if err != nil {
g.Log().Errorf(ctx, "统计已通过视频数量失败: %v", err)
}
rejected, err := dao.TencentVideo.CountByStatus(ctx, entity.VerifyStatusRejected)
if err != nil {
g.Log().Errorf(ctx, "统计不通过视频数量失败: %v", err)
}
return &StatsRes{
Pending: pending,
@@ -211,7 +227,7 @@ type ListLogRes struct {
// ListLog 日志列表
func (c *MaterialVerifyController) ListLog(ctx context.Context, req *LogListReq) (res *ListLogRes, err error) {
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin", TenantId: 1})
ctx = internal.WithAdminUser(ctx)
if req.Page == 0 {
req.Page = 1
@@ -258,7 +274,7 @@ type GetLogDetailReq struct {
// GetLogDetail 日志详情
func (c *MaterialVerifyController) GetLogDetail(ctx context.Context, req *GetLogDetailReq) (res *LogDetailRes, err error) {
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin", TenantId: 1})
ctx = internal.WithAdminUser(ctx)
log, err := serviceDataengine.MaterialVerify.GetLogByID(ctx, req.Id)
if err != nil {
@@ -297,7 +313,7 @@ type StatsLogRes struct {
// StatsLog 日志统计
func (c *MaterialVerifyController) StatsLog(ctx context.Context, req *LogListReq) (res *StatsLogRes, err error) {
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin", TenantId: 1})
ctx = internal.WithAdminUser(ctx)
stats, err := serviceDataengine.MaterialVerify.GetStats(ctx)
if err != nil {
return nil, err
@@ -324,7 +340,7 @@ type ManualVerifyImageRes struct {
// ManualVerifyImage 手动校验图片
func (c *MaterialVerifyController) ManualVerifyImage(ctx context.Context, req *ManualVerifyReq) (res *ManualVerifyImageRes, err error) {
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin", TenantId: 1})
ctx = internal.WithAdminUser(ctx)
log, err := serviceDataengine.MaterialVerify.VerifyImageByID(ctx, req.MaterialID)
if err != nil {
@@ -340,7 +356,7 @@ func (c *MaterialVerifyController) ManualVerifyImage(ctx context.Context, req *M
// ManualVerifyVideo 手动校验视频
func (c *MaterialVerifyController) ManualVerifyVideo(ctx context.Context, req *ManualVerifyReq) (res *ManualVerifyImageRes, err error) {
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin", TenantId: 1})
ctx = internal.WithAdminUser(ctx)
log, err := serviceDataengine.MaterialVerify.VerifyVideoByID(ctx, req.MaterialID)
if err != nil {
@@ -368,7 +384,7 @@ type BatchVerifyRes struct {
// BatchVerifyImage 批量校验图片
func (c *MaterialVerifyController) BatchVerifyImage(ctx context.Context, req *BatchVerifyReq) (res *BatchVerifyRes, err error) {
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin", TenantId: 1})
ctx = internal.WithAdminUser(ctx)
if req.Limit <= 0 {
req.Limit = 100
@@ -403,7 +419,7 @@ func (c *MaterialVerifyController) BatchVerifyImage(ctx context.Context, req *Ba
// BatchVerifyVideo 批量校验视频
func (c *MaterialVerifyController) BatchVerifyVideo(ctx context.Context, req *BatchVerifyReq) (res *BatchVerifyRes, err error) {
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin", TenantId: 1})
ctx = internal.WithAdminUser(ctx)
if req.Limit <= 0 {
req.Limit = 100
@@ -456,7 +472,7 @@ type ListAccountsRes struct {
// ListAccounts 获取所有启用的广告账户列表(用于前端下拉筛选)
func (c *MaterialVerifyController) ListAccounts(ctx context.Context, req *ListAccountsReq) (res *ListAccountsRes, err error) {
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin", TenantId: 1})
ctx = internal.WithAdminUser(ctx)
accounts, err := dao.TencentAccountRelation.GetAll(ctx)
if err != nil {
return nil, err
@@ -506,7 +522,7 @@ type ExportRejectedRes struct {
// ExportRejected 导出不通过的图片/视频数据(含失败原因)
func (c *MaterialVerifyController) ExportRejected(ctx context.Context, req *ExportRejectedReq) (res *ExportRejectedRes, err error) {
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin", TenantId: 1})
ctx = internal.WithAdminUser(ctx)
items, err := serviceDataengine.MaterialVerify.ExportRejectedData(ctx, req.MaterialType)
if err != nil {
@@ -546,32 +562,12 @@ type CallbackRes struct {
Msg string `json:"msg"`
}
// checkIP 校验请求IP是否在白名单内(context模式)
func checkIP(ctx context.Context) bool {
r := ghttp.RequestFromCtx(ctx)
if r == nil {
return true
}
allowedIPs := g.Cfg().MustGet(ctx, "yidun.callback_allowed_ips", "").String()
if allowedIPs == "" {
return true
}
clientIP := r.GetClientIp()
for _, ip := range strings.Split(allowedIPs, ",") {
if strings.TrimSpace(ip) == clientIP {
return true
}
}
g.Log().Warningf(ctx, "回调IP不在白名单中, clientIP=%s", clientIP)
return false
}
// ImageCallback 图片校验回调
func (c *MaterialVerifyController) ImageCallback(ctx context.Context, req *ImageCallbackReq) (res *CallbackRes, err error) {
if !checkIP(ctx) {
if !internal.CheckCallbackIP(ctx) {
return &CallbackRes{Code: 403, Msg: "IP not allowed"}, nil
}
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "yidun_callback", TenantId: 1})
ctx = internal.WithCallbackUser(ctx)
if req.CallbackData == "" {
return &CallbackRes{Code: 400, Msg: "callbackData不能为空"}, nil
}
@@ -581,15 +577,15 @@ func (c *MaterialVerifyController) ImageCallback(ctx context.Context, req *Image
return &CallbackRes{Code: 500, Msg: err.Error()}, nil
}
return &CallbackRes{Code: 200, Msg: "处理成功"}, nil
return &CallbackRes{Code: 0, Msg: "处理成功"}, nil
}
// VideoCallback 视频校验回调
func (c *MaterialVerifyController) VideoCallback(ctx context.Context, req *VideoCallbackReq) (res *CallbackRes, err error) {
if !checkIP(ctx) {
if !internal.CheckCallbackIP(ctx) {
return &CallbackRes{Code: 403, Msg: "IP not allowed"}, nil
}
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "yidun_callback", TenantId: 1})
ctx = internal.WithCallbackUser(ctx)
if req.CallbackData == "" {
return &CallbackRes{Code: 400, Msg: "callbackData不能为空"}, nil
}
@@ -599,7 +595,7 @@ func (c *MaterialVerifyController) VideoCallback(ctx context.Context, req *Video
return &CallbackRes{Code: 500, Msg: err.Error()}, nil
}
return &CallbackRes{Code: 200, Msg: "处理成功"}, nil
return &CallbackRes{Code: 0, Msg: "处理成功"}, nil
}
// ResultRes 结果查询响应
@@ -610,7 +606,7 @@ type ResultRes struct {
// ImageResult 图片校验结果查询(轮询模式)
func (c *MaterialVerifyController) ImageResult(ctx context.Context, req *TaskIDReq) (res *ResultRes, err error) {
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin", TenantId: 1})
ctx = internal.WithAdminUser(ctx)
if req.TaskID == "" {
return &ResultRes{Code: 400, Msg: "taskId不能为空"}, nil
}
@@ -620,12 +616,12 @@ func (c *MaterialVerifyController) ImageResult(ctx context.Context, req *TaskIDR
return &ResultRes{Code: 500, Msg: err.Error()}, nil
}
return &ResultRes{Code: 200, Msg: "处理成功"}, nil
return &ResultRes{Code: 0, Msg: "处理成功"}, nil
}
// VideoResult 视频校验结果查询(轮询模式)
func (c *MaterialVerifyController) VideoResult(ctx context.Context, req *TaskIDReq) (res *ResultRes, err error) {
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin", TenantId: 1})
ctx = internal.WithAdminUser(ctx)
if req.TaskID == "" {
return &ResultRes{Code: 400, Msg: "taskId不能为空"}, nil
}
@@ -635,5 +631,5 @@ func (c *MaterialVerifyController) VideoResult(ctx context.Context, req *TaskIDR
return &ResultRes{Code: 500, Msg: err.Error()}, nil
}
return &ResultRes{Code: 200, Msg: "处理成功"}, nil
return &ResultRes{Code: 0, Msg: "处理成功"}, nil
}