yidun送检功能
This commit is contained in:
12
dao/dataengine/db.go
Normal file
12
dao/dataengine/db.go
Normal file
@@ -0,0 +1,12 @@
|
||||
package dataengine
|
||||
|
||||
import (
|
||||
"github.com/gogf/gf/v2/database/gdb"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
)
|
||||
|
||||
// Model 获取 dataEngine 数据库的 Model(GoFrame ORM)
|
||||
// 配置文件中 dataEngine 对应的实际数据库名是 dataengine
|
||||
func Model(tableName string) *gdb.Model {
|
||||
return g.DB("dataEngine").Model(tableName)
|
||||
}
|
||||
287
dao/dataengine/material_verify_log_dao.go
Normal file
287
dao/dataengine/material_verify_log_dao.go
Normal file
@@ -0,0 +1,287 @@
|
||||
package dataengine
|
||||
|
||||
import (
|
||||
consts "cid/consts/dataengine"
|
||||
daoEntity "cid/model/entity/dataengine"
|
||||
"context"
|
||||
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/os/gtime"
|
||||
)
|
||||
|
||||
// MaterialVerifyLogDAO 素材校验日志数据访问层
|
||||
type MaterialVerifyLogDAO struct{}
|
||||
|
||||
// MaterialVerifyLog DAO单例
|
||||
var MaterialVerifyLog = new(MaterialVerifyLogDAO)
|
||||
|
||||
// TableName 表名
|
||||
const MaterialVerifyLogTable = "material_verify_log"
|
||||
|
||||
// Create 创建校验日志
|
||||
func (d *MaterialVerifyLogDAO) Create(ctx context.Context, log *daoEntity.MaterialVerifyLog) (int64, error) {
|
||||
// 构建插入数据,排除主键Id(让数据库自增)
|
||||
data := g.Map{
|
||||
"tenant_id": log.TenantID,
|
||||
"material_type": log.MaterialType,
|
||||
"material_id": log.MaterialID,
|
||||
"source_table": log.SourceTable,
|
||||
"source_id": log.SourceID,
|
||||
"account_id": log.AccountID,
|
||||
"verify_status": log.VerifyStatus,
|
||||
"created_at": gtime.Now(),
|
||||
}
|
||||
result, err := g.DB("default").Model(MaterialVerifyLogTable).Data(data).Insert()
|
||||
if err != nil {
|
||||
g.Log().Errorf(ctx, "创建校验日志失败: %v", err)
|
||||
return 0, err
|
||||
}
|
||||
id, _ := result.LastInsertId()
|
||||
return id, nil
|
||||
}
|
||||
|
||||
// GetByID 根据ID获取日志
|
||||
func (d *MaterialVerifyLogDAO) GetByID(ctx context.Context, id int64) (*daoEntity.MaterialVerifyLog, error) {
|
||||
var result daoEntity.MaterialVerifyLog
|
||||
r, err := g.DB("default").Model(MaterialVerifyLogTable).
|
||||
Where(daoEntity.MaterialVerifyLogCols.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
|
||||
}
|
||||
|
||||
// GetByTaskID 根据任务ID获取日志
|
||||
func (d *MaterialVerifyLogDAO) GetByTaskID(ctx context.Context, taskID string) (*daoEntity.MaterialVerifyLog, error) {
|
||||
var result daoEntity.MaterialVerifyLog
|
||||
r, err := g.DB("default").Model(MaterialVerifyLogTable).
|
||||
Where(daoEntity.MaterialVerifyLogCols.TaskID, taskID).
|
||||
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
|
||||
}
|
||||
|
||||
// GetByMaterialID 根据素材ID获取日志列表
|
||||
func (d *MaterialVerifyLogDAO) GetByMaterialID(ctx context.Context, materialID string) ([]daoEntity.MaterialVerifyLog, error) {
|
||||
var result []daoEntity.MaterialVerifyLog
|
||||
r, err := g.DB("default").Model(MaterialVerifyLogTable).
|
||||
Where(daoEntity.MaterialVerifyLogCols.MaterialID, materialID).
|
||||
OrderDesc(daoEntity.MaterialVerifyLogCols.CreatedAt).
|
||||
All()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err = r.Structs(&result); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// GetBySource 根据来源获取日志
|
||||
func (d *MaterialVerifyLogDAO) GetBySource(ctx context.Context, sourceTable string, sourceID int64) ([]daoEntity.MaterialVerifyLog, error) {
|
||||
var result []daoEntity.MaterialVerifyLog
|
||||
r, err := g.DB("default").Model(MaterialVerifyLogTable).
|
||||
Where(daoEntity.MaterialVerifyLogCols.SourceTable, sourceTable).
|
||||
Where(daoEntity.MaterialVerifyLogCols.SourceID, sourceID).
|
||||
OrderDesc(daoEntity.MaterialVerifyLogCols.CreatedAt).
|
||||
All()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err = r.Structs(&result); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// UpdateVerifyResult 更新校验结果
|
||||
func (d *MaterialVerifyLogDAO) UpdateVerifyResult(ctx context.Context, id int64, verifyStatus string, suggestion, label, resultType int, responseResult string, checkTime int64) error {
|
||||
_, err := g.DB("default").Model(MaterialVerifyLogTable).
|
||||
Where(daoEntity.MaterialVerifyLogCols.Id, id).
|
||||
Data(map[string]interface{}{
|
||||
daoEntity.MaterialVerifyLogCols.VerifyStatus: verifyStatus,
|
||||
daoEntity.MaterialVerifyLogCols.Suggestion: suggestion,
|
||||
daoEntity.MaterialVerifyLogCols.Label: label,
|
||||
daoEntity.MaterialVerifyLogCols.ResultType: resultType,
|
||||
daoEntity.MaterialVerifyLogCols.ResponseResult: responseResult,
|
||||
daoEntity.MaterialVerifyLogCols.CheckTime: checkTime,
|
||||
}).Update()
|
||||
if err != nil {
|
||||
g.Log().Errorf(ctx, "更新校验日志结果失败: %v", err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// UpdateError 更新错误信息
|
||||
func (d *MaterialVerifyLogDAO) UpdateError(ctx context.Context, id int64, verifyStatus string, errorMsg string) error {
|
||||
_, err := g.DB("default").Model(MaterialVerifyLogTable).
|
||||
Where(daoEntity.MaterialVerifyLogCols.Id, id).
|
||||
Data(map[string]interface{}{
|
||||
daoEntity.MaterialVerifyLogCols.VerifyStatus: verifyStatus,
|
||||
daoEntity.MaterialVerifyLogCols.ErrorMsg: errorMsg,
|
||||
}).Update()
|
||||
if err != nil {
|
||||
g.Log().Errorf(ctx, "更新校验日志错误失败: %v", err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// UpdateTaskID 更新任务ID
|
||||
func (d *MaterialVerifyLogDAO) UpdateTaskID(ctx context.Context, id int64, taskID string) error {
|
||||
_, err := g.DB("default").Model(MaterialVerifyLogTable).
|
||||
Where(daoEntity.MaterialVerifyLogCols.Id, id).
|
||||
Data(map[string]interface{}{
|
||||
daoEntity.MaterialVerifyLogCols.TaskID: taskID,
|
||||
}).Update()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// UpdateDuration 更新处理耗时
|
||||
func (d *MaterialVerifyLogDAO) UpdateDuration(ctx context.Context, id int64, durationMs int64) error {
|
||||
_, err := g.DB("default").Model(MaterialVerifyLogTable).
|
||||
Where(daoEntity.MaterialVerifyLogCols.Id, id).
|
||||
Data(map[string]interface{}{
|
||||
daoEntity.MaterialVerifyLogCols.DurationMs: durationMs,
|
||||
}).Update()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// UpdateRequestParams 更新请求参数
|
||||
func (d *MaterialVerifyLogDAO) UpdateRequestParams(ctx context.Context, id int64, requestParams string) error {
|
||||
_, err := g.DB("default").Model(MaterialVerifyLogTable).
|
||||
Where(daoEntity.MaterialVerifyLogCols.Id, id).
|
||||
Data(map[string]interface{}{
|
||||
daoEntity.MaterialVerifyLogCols.RequestParams: requestParams,
|
||||
}).Update()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetByCondition 根据条件分页查询
|
||||
func (d *MaterialVerifyLogDAO) GetByCondition(ctx context.Context, condition map[string]interface{}, page, pageSize int) ([]daoEntity.MaterialVerifyLog, int, error) {
|
||||
var result []daoEntity.MaterialVerifyLog
|
||||
model := g.DB("default").Model(MaterialVerifyLogTable)
|
||||
|
||||
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(daoEntity.MaterialVerifyLogCols.CreatedAt).
|
||||
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
|
||||
}
|
||||
|
||||
// CountByStatus 按状态统计
|
||||
func (d *MaterialVerifyLogDAO) CountByStatus(ctx context.Context, verifyStatus string) (int, error) {
|
||||
count, err := g.DB("default").Model(MaterialVerifyLogTable).
|
||||
Where(daoEntity.MaterialVerifyLogCols.VerifyStatus, verifyStatus).
|
||||
Count()
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return int(count), nil
|
||||
}
|
||||
|
||||
// GetStats 获取统计信息
|
||||
func (d *MaterialVerifyLogDAO) GetStats(ctx context.Context) (map[string]int, error) {
|
||||
stats := make(map[string]int)
|
||||
|
||||
// 使用实体中定义的正确状态值:PENDING=待校验, VERIFIED=校验通过, REJECTED=校验不通过
|
||||
statuses := []struct {
|
||||
statusKey string
|
||||
statusVal string
|
||||
}{
|
||||
{"pending", daoEntity.VerifyStatusPending},
|
||||
{"verified", daoEntity.VerifyStatusVerified},
|
||||
{"rejected", daoEntity.VerifyStatusRejected},
|
||||
}
|
||||
|
||||
var totalCount int
|
||||
for _, item := range statuses {
|
||||
count, err := d.CountByStatus(ctx, item.statusVal)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
stats[item.statusKey] = count
|
||||
totalCount += count
|
||||
}
|
||||
|
||||
// 添加总计
|
||||
stats["total"] = totalCount
|
||||
|
||||
return stats, nil
|
||||
}
|
||||
|
||||
// GetPendingResults 获取待查询结果的日志(状态为submitting且有taskID)
|
||||
func (d *MaterialVerifyLogDAO) GetPendingResults(ctx context.Context, limit int) ([]daoEntity.MaterialVerifyLog, error) {
|
||||
var result []daoEntity.MaterialVerifyLog
|
||||
|
||||
// 查询状态为 pending 且有 task_id 的记录
|
||||
r, err := g.DB("default").Model(MaterialVerifyLogTable).
|
||||
Where(daoEntity.MaterialVerifyLogCols.VerifyStatus, consts.CheckStatusPending).
|
||||
WhereNotNull(daoEntity.MaterialVerifyLogCols.TaskID).
|
||||
Where(daoEntity.MaterialVerifyLogCols.TaskID + " != ''").
|
||||
OrderAsc(daoEntity.MaterialVerifyLogCols.CreatedAt).
|
||||
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
|
||||
}
|
||||
|
||||
// CountPendingResults 统计待查询结果的数量
|
||||
func (d *MaterialVerifyLogDAO) CountPendingResults(ctx context.Context) (int, error) {
|
||||
count, err := g.DB("default").Model(MaterialVerifyLogTable).
|
||||
Where(daoEntity.MaterialVerifyLogCols.VerifyStatus, consts.CheckStatusPending).
|
||||
WhereNotNull(daoEntity.MaterialVerifyLogCols.TaskID).
|
||||
Where(daoEntity.MaterialVerifyLogCols.TaskID + " != ''").
|
||||
Count()
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return int(count), nil
|
||||
}
|
||||
180
dao/dataengine/tencent_content_check_log_dao.go
Normal file
180
dao/dataengine/tencent_content_check_log_dao.go
Normal file
@@ -0,0 +1,180 @@
|
||||
package dataengine
|
||||
|
||||
import (
|
||||
consts "cid/consts/dataengine"
|
||||
entity "cid/model/entity/dataengine"
|
||||
yidunService "cid/service/yidun"
|
||||
"context"
|
||||
"encoding/json"
|
||||
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
)
|
||||
|
||||
// TencentContentCheckLogDAO 送检日志数据访问层
|
||||
type TencentContentCheckLogDAO struct{}
|
||||
|
||||
// TencentContentCheckLog 日志DAO单例
|
||||
var TencentContentCheckLog = new(TencentContentCheckLogDAO)
|
||||
|
||||
// Create 创建送检日志
|
||||
func (d *TencentContentCheckLogDAO) Create(ctx context.Context, log *entity.TencentContentCheckLog) (int64, error) {
|
||||
r, err := g.DB("default").Model(consts.TencentContentCheckLogTable).Data(log).Insert()
|
||||
if err != nil {
|
||||
g.Log().Errorf(ctx, "创建送检日志失败: %v", err)
|
||||
return 0, err
|
||||
}
|
||||
id, _ := r.LastInsertId()
|
||||
return id, nil
|
||||
}
|
||||
|
||||
// UpdateStatus 更新送检状态
|
||||
func (d *TencentContentCheckLogDAO) UpdateStatus(ctx context.Context, id int64, status string, responseData string, failReason string) error {
|
||||
_, err := g.DB("default").Model(consts.TencentContentCheckLogTable).
|
||||
Where("id", id).
|
||||
Data(map[string]interface{}{
|
||||
"status": status,
|
||||
"response_data": responseData,
|
||||
"fail_reason": failReason,
|
||||
}).Update()
|
||||
return err
|
||||
}
|
||||
|
||||
// UpdateCheckResult 更新检测结果
|
||||
func (d *TencentContentCheckLogDAO) UpdateCheckResult(ctx context.Context, id int64, suggestion, label, resultType int, checkTime int64) error {
|
||||
_, err := g.DB("default").Model(consts.TencentContentCheckLogTable).
|
||||
Where("id", id).
|
||||
Data(map[string]interface{}{
|
||||
"status": consts.CheckStatusCompleted,
|
||||
"suggestion": suggestion,
|
||||
"label": label,
|
||||
"result_type": resultType,
|
||||
"check_time": checkTime,
|
||||
}).Update()
|
||||
return err
|
||||
}
|
||||
|
||||
// GetByID 根据ID获取日志
|
||||
func (d *TencentContentCheckLogDAO) GetByID(ctx context.Context, id int64) (*entity.TencentContentCheckLog, error) {
|
||||
var result entity.TencentContentCheckLog
|
||||
r, err := g.DB("default").Model(consts.TencentContentCheckLogTable).
|
||||
Where("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
|
||||
}
|
||||
|
||||
// GetBySourceID 根据来源ID获取日志
|
||||
func (d *TencentContentCheckLogDAO) GetBySourceID(ctx context.Context, sourceTable string, sourceID int64) ([]entity.TencentContentCheckLog, error) {
|
||||
var result []entity.TencentContentCheckLog
|
||||
r, err := g.DB("default").Model(consts.TencentContentCheckLogTable).
|
||||
Where("source_table", sourceTable).
|
||||
Where("source_id", sourceID).
|
||||
OrderDesc("created_at").
|
||||
All()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err = r.Structs(&result); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// GetByTaskID 根据任务ID获取日志
|
||||
func (d *TencentContentCheckLogDAO) GetByTaskID(ctx context.Context, taskID string) (*entity.TencentContentCheckLog, error) {
|
||||
var result entity.TencentContentCheckLog
|
||||
r, err := g.DB("default").Model(consts.TencentContentCheckLogTable).
|
||||
Where("task_id", taskID).
|
||||
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
|
||||
}
|
||||
|
||||
// ListByStatus 根据状态获取日志列表
|
||||
func (d *TencentContentCheckLogDAO) ListByStatus(ctx context.Context, status string, page, pageSize int) ([]entity.TencentContentCheckLog, int, error) {
|
||||
var result []entity.TencentContentCheckLog
|
||||
model := g.DB("default").Model(consts.TencentContentCheckLogTable)
|
||||
|
||||
if status != "" {
|
||||
model = model.Where("status", status)
|
||||
}
|
||||
|
||||
total, err := model.Count()
|
||||
if err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
|
||||
r, err := model.
|
||||
OrderDesc("created_at").
|
||||
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
|
||||
}
|
||||
|
||||
// UpdateDuration 更新耗时
|
||||
func (d *TencentContentCheckLogDAO) UpdateDuration(ctx context.Context, id int64, duration int64) error {
|
||||
_, err := g.DB("default").Model(consts.TencentContentCheckLogTable).
|
||||
Where("id", id).
|
||||
Data("duration", duration).
|
||||
Update()
|
||||
return err
|
||||
}
|
||||
|
||||
// UpdateTaskID 更新任务ID
|
||||
func (d *TencentContentCheckLogDAO) UpdateTaskID(ctx context.Context, id int64, taskID string) error {
|
||||
_, err := g.DB("default").Model(consts.TencentContentCheckLogTable).
|
||||
Where("id", id).
|
||||
Data("task_id", taskID).
|
||||
Update()
|
||||
return err
|
||||
}
|
||||
|
||||
// GetSubmitResult 获取图片提交结果
|
||||
func (d *TencentContentCheckLogDAO) GetImageSubmitResult(ctx context.Context, id int64) (*yidunService.ImageSubmitResult, error) {
|
||||
log, err := d.GetByID(ctx, id)
|
||||
if err != nil || log == nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var result yidunService.ImageSubmitResult
|
||||
if err := json.Unmarshal([]byte(log.ResponseData), &result); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &result, nil
|
||||
}
|
||||
|
||||
// GetVideoSubmitResult 获取视频提交结果
|
||||
func (d *TencentContentCheckLogDAO) GetVideoSubmitResult(ctx context.Context, id int64) (*yidunService.VideoSubmitResult, error) {
|
||||
log, err := d.GetByID(ctx, id)
|
||||
if err != nil || log == nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var result yidunService.VideoSubmitResult
|
||||
if err := json.Unmarshal([]byte(log.ResponseData), &result); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &result, nil
|
||||
}
|
||||
136
dao/dataengine/tencent_image_dao.go
Normal file
136
dao/dataengine/tencent_image_dao.go
Normal file
@@ -0,0 +1,136 @@
|
||||
package dataengine
|
||||
|
||||
import (
|
||||
consts "cid/consts/dataengine"
|
||||
entity "cid/model/entity/dataengine"
|
||||
"context"
|
||||
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
)
|
||||
|
||||
// TencentImageDAO 图片素材数据访问层
|
||||
type TencentImageDAO struct{}
|
||||
|
||||
// TencentImage 图片DAO单例
|
||||
var TencentImage = new(TencentImageDAO)
|
||||
|
||||
// GetPendingList 获取待送检数据列表
|
||||
func (d *TencentImageDAO) GetPendingList(ctx context.Context, limit int) ([]entity.TencentImage, error) {
|
||||
var result []entity.TencentImage
|
||||
r, err := Model(consts.TencentImageTable).
|
||||
Where(entity.TencentImageCols.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
|
||||
}
|
||||
|
||||
// GetByImageID 根据图片ID获取数据
|
||||
func (d *TencentImageDAO) GetByImageID(ctx context.Context, imageID string) (*entity.TencentImage, error) {
|
||||
var result entity.TencentImage
|
||||
r, err := Model(consts.TencentImageTable).
|
||||
Where(entity.TencentImageCols.ImageID, imageID).
|
||||
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 *TencentImageDAO) GetByID(ctx context.Context, id int64) (*entity.TencentImage, error) {
|
||||
var result entity.TencentImage
|
||||
r, err := Model(consts.TencentImageTable).
|
||||
Where(entity.TencentImageCols.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 *TencentImageDAO) CountPending(ctx context.Context) (int, error) {
|
||||
count, err := Model(consts.TencentImageTable).
|
||||
Where(entity.TencentImageCols.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 *TencentImageDAO) CountByStatus(ctx context.Context, status string) (int, error) {
|
||||
count, err := Model(consts.TencentImageTable).
|
||||
Where(entity.TencentImageCols.VerifyStatus, status).
|
||||
Count()
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return int(count), nil
|
||||
}
|
||||
|
||||
// GetByCondition 根据条件获取数据列表
|
||||
func (d *TencentImageDAO) GetByCondition(ctx context.Context, condition map[string]interface{}, page, pageSize int) ([]entity.TencentImage, int, error) {
|
||||
var result []entity.TencentImage
|
||||
model := Model(consts.TencentImageTable)
|
||||
|
||||
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.TencentImageCols.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 *TencentImageDAO) UpdateStatus(ctx context.Context, id int64, verifyStatus string) (int64, error) {
|
||||
result, err := Model(consts.TencentImageTable).
|
||||
Where(entity.TencentImageCols.Id, id).
|
||||
Data(entity.TencentImageCols.VerifyStatus, verifyStatus).
|
||||
Update()
|
||||
if err != nil {
|
||||
g.Log().Errorf(ctx, "更新图片校验状态失败: %v", err)
|
||||
return 0, err
|
||||
}
|
||||
affected, _ := result.RowsAffected()
|
||||
return affected, nil
|
||||
}
|
||||
136
dao/dataengine/tencent_video_dao.go
Normal file
136
dao/dataengine/tencent_video_dao.go
Normal file
@@ -0,0 +1,136 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user