package dataengine import ( consts "cid/consts/dataengine" entity "cid/model/entity/dataengine" "context" "github.com/gogf/gf/v2/frame/g" ) // TencentVideoDAO 视频素材数据访问层 type TencentVideoDAO struct{} // TencentVideo 视频DAO单例 var TencentVideo = new(TencentVideoDAO) // GetPendingList 获取待送检数据列表 func (d *TencentVideoDAO) GetPendingList(ctx context.Context, limit int) ([]entity.TencentVideo, error) { var result []entity.TencentVideo r, err := Model(consts.TencentVideoTable). Where(entity.TencentVideoCols.VerifyStatus, consts.CheckStatusPending). WhereNull("deleted_at"). OrderAsc("created_time"). Limit(limit). All() if err != nil { g.Log().Errorf(ctx, "查询待送检视频数据失败: %v", err) return nil, err } if err = r.Structs(&result); err != nil { g.Log().Errorf(ctx, "转换待送检视频数据失败: %v", err) return nil, err } return result, nil } // GetByVideoID 根据视频ID获取数据 func (d *TencentVideoDAO) GetByVideoID(ctx context.Context, videoID string) (*entity.TencentVideo, error) { var result entity.TencentVideo r, err := Model(consts.TencentVideoTable). Where(entity.TencentVideoCols.VideoID, videoID). One() if err != nil { return nil, err } if r.IsEmpty() { return nil, nil } if err = r.Struct(&result); err != nil { return nil, err } return &result, nil } // GetByID 根据ID获取数据 func (d *TencentVideoDAO) GetByID(ctx context.Context, id int64) (*entity.TencentVideo, error) { var result entity.TencentVideo r, err := Model(consts.TencentVideoTable). Where(entity.TencentVideoCols.Id, id). One() if err != nil { return nil, err } if r.IsEmpty() { return nil, nil } if err = r.Struct(&result); err != nil { return nil, err } return &result, nil } // CountPending 统计待送检数量 func (d *TencentVideoDAO) CountPending(ctx context.Context) (int, error) { count, err := Model(consts.TencentVideoTable). Where(entity.TencentVideoCols.VerifyStatus, consts.CheckStatusPending). WhereNull("deleted_at"). Count() if err != nil { g.Log().Errorf(ctx, "统计待送检视频数量失败: %v", err) return 0, err } return int(count), nil } // CountByStatus 根据状态统计数量 func (d *TencentVideoDAO) CountByStatus(ctx context.Context, status string) (int, error) { count, err := Model(consts.TencentVideoTable). Where(entity.TencentVideoCols.VerifyStatus, status). Count() if err != nil { return 0, err } return int(count), nil } // GetByCondition 根据条件获取数据列表 func (d *TencentVideoDAO) GetByCondition(ctx context.Context, condition map[string]interface{}, page, pageSize int) ([]entity.TencentVideo, int, error) { var result []entity.TencentVideo model := Model(consts.TencentVideoTable) for k, v := range condition { model = model.Where(k, v) } total, err := model.Count() if err != nil { return nil, 0, err } r, err := model. OrderDesc(entity.TencentVideoCols.CreatedTime). Page(page, pageSize). All() if err != nil { return nil, 0, err } if err = r.Structs(&result); err != nil { return nil, 0, err } return result, int(total), nil } // UpdateStatus 更新视频校验状态 func (d *TencentVideoDAO) UpdateStatus(ctx context.Context, id int64, verifyStatus string) (int64, error) { result, err := Model(consts.TencentVideoTable). Where(entity.TencentVideoCols.Id, id). Data(entity.TencentVideoCols.VerifyStatus, verifyStatus). Update() if err != nil { g.Log().Errorf(ctx, "更新视频校验状态失败: %v", err) return 0, err } affected, _ := result.RowsAffected() return affected, nil }