137 lines
3.6 KiB
Go
137 lines
3.6 KiB
Go
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
|
|
}
|