浏览代码

local_link_statistic

Xingyu Xian 3 天之前
父节点
当前提交
80c4bcfb31

+ 35 - 0
db/local_life.go

@@ -0,0 +1,35 @@
+package db
+
+import (
+	"context"
+	"github.com/sirupsen/logrus"
+	"youngee_b_api/model/gorm_model"
+)
+
+// GetLocalIdList 本地生活ID列表
+func GetLocalIdList(ctx context.Context, taskStatus int, localPlatform int) ([]string, int64, error) {
+	db := GetReadDB(ctx)
+
+	var total int64
+	if err := db.Model(gorm_model.YounggeeLocalLifeInfo{}).
+		Where("task_status = ? and local_platform = ?", taskStatus, localPlatform).
+		Count(&total).
+		Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetLocalIdList] error counting locals, err:%+v", err)
+		return nil, 0, err
+	}
+
+	var localIds []string
+	err := db.Debug().
+		Model(gorm_model.YounggeeLocalLifeInfo{}).
+		Where("task_status = ? and local_platform = ?", taskStatus, localPlatform).
+		Order("updated_at desc").
+		Pluck("local_id", &localIds).
+		Error
+
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetLocalIdList] error querying Local IDs, err:%+v", err)
+		return nil, 0, err
+	}
+	return localIds, total, nil
+}

+ 37 - 0
db/local_task_link_statistic.go

@@ -0,0 +1,37 @@
+package db
+
+import (
+	"context"
+	"errors"
+	"fmt"
+	"time"
+	"youngee_b_api/model/gorm_model"
+)
+
+// CreateLocalTaskLinkStatistic 创建一条统计记录
+func CreateLocalTaskLinkStatistic(ctx context.Context, stat *gorm_model.LocalTaskLinkStatistic) error {
+	// 基本校验
+	if stat == nil {
+		return errors.New("nil statistic data")
+	}
+
+	// 获取写数据库连接
+	db := GetWriteDB(ctx)
+	if db == nil {
+		return errors.New("database connection not available")
+	}
+
+	// 设置默认时间
+	if stat.CreateTime.IsZero() {
+		var currentTime time.Time
+		stat.CreateTime = &currentTime
+	}
+
+	// 执行创建
+	if err := db.WithContext(ctx).Create(stat).Error; err != nil {
+		// 可以在这里添加特定错误处理
+		return fmt.Errorf("failed to create statistic: %w", err)
+	}
+
+	return nil
+}

+ 31 - 0
db/locallife_task.go

@@ -1392,3 +1392,34 @@ func GetLocalDataList(ctx context.Context, request http_model.LocalTaskDatalistR
 		Total:             conv.MustString(total, ""),
 	}, nil
 }
+
+// GetLocalTaskIdList 子任务ID列表
+func GetLocalTaskIdList(ctx context.Context, localId string) ([]string, int64, error) {
+	db := GetReadDB(ctx)
+
+	// Get count first
+	var total int64
+	if err := db.Model(gorm_model.YounggeeLocalLifeInfo{}).
+		Where("data_status = ? and local_id = ?", 5, localId).
+		Count(&total).
+		Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetLocalTaskIdList] error counting task, err:%+v", err)
+		return nil, 0, err
+	}
+
+	// Query only project_id with the given status
+	var taskIds []string
+	err := db.Debug().
+		Model(gorm_model.YounggeeLocalLifeInfo{}).
+		Where("data_status = ? and local_id = ?", 5, localId).
+		Order("update_at desc").
+		Pluck("task_id", &taskIds).
+		Error
+
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetLocalTaskIdList] error querying taskIDs, err:%+v", err)
+		return nil, 0, err
+	}
+
+	return taskIds, total, nil
+}

+ 3 - 3
db/project_task.go

@@ -1344,7 +1344,7 @@ func GetProjectTaskIdList(ctx context.Context, projectId string) ([]string, int6
 
 	// Get count first
 	var total int64
-	if err := db.Model(gorm_model.YounggeeSecTaskInfo{}).
+	if err := db.Model(gorm_model.YoungeeTaskInfo{}).
 		Where("data_status = ? and project_id = ?", 5, projectId).
 		Count(&total).
 		Error; err != nil {
@@ -1355,9 +1355,9 @@ func GetProjectTaskIdList(ctx context.Context, projectId string) ([]string, int6
 	// Query only project_id with the given status
 	var taskIds []string
 	err := db.Debug().
-		Model(gorm_model.YounggeeSecTaskInfo{}).
+		Model(gorm_model.YoungeeTaskInfo{}).
 		Where("data_status = ? and project_id = ?", 5, projectId).
-		Order("updated_at desc").
+		Order("update_at desc").
 		Pluck("task_id", &taskIds).
 		Error
 

+ 21 - 0
model/gorm_model/local_task_link_statistic.go

@@ -0,0 +1,21 @@
+package gorm_model
+
+import (
+	"time"
+)
+
+type LocalTaskLinkStatistic struct {
+	StatisticId     int        `gorm:"column:statistic_id;primary_key;AUTO_INCREMENT"` // 主键ID
+	LocalId         string     `gorm:"column:local_id"`                                // 本地生活ID
+	TaskId          string     `gorm:"column:task_id"`                                 // 子任务ID
+	PlatformId      int        `gorm:"column:platform_id"`                             // 平台ID,1-7分别代表小红书、抖音、微博、快手、b站、大众点评、知乎
+	VoteCount       int        `gorm:"column:vote_count"`                              // 点赞量
+	CommitCount     int        `gorm:"column:commit_count"`                            // 评论数
+	CollectionCount int        `gorm:"column:collection_count"`                        // 收藏数
+	ViewCount       int        `gorm:"column:view_count"`                              // 浏览量
+	CreateTime      *time.Time `gorm:"column:create_time"`                             // 创建时间
+}
+
+func (m *LocalTaskLinkStatistic) TableName() string {
+	return "local_task_link_statistic"
+}

+ 1 - 1
model/gorm_model/project_task_link_statistic.go

@@ -7,7 +7,7 @@ import (
 type ProjectTaskLinkStatistic struct {
 	StatisticId     int        `gorm:"column:statistic_id;primary_key;AUTO_INCREMENT"` // 主键ID
 	ProjectId       string     `gorm:"column:project_id"`                              // 种草任务ID
-	TaskID          string     `gorm:"column:task_id"`                                 // 子任务ID
+	TaskId          string     `gorm:"column:task_id"`                                 // 子任务ID
 	PlatformId      int        `gorm:"column:platform_id"`                             // 平台ID,1-7分别代表小红书、抖音、微博、快手、b站、大众点评、知乎
 	VoteCount       int        `gorm:"column:vote_count"`                              // 点赞量
 	CommitCount     int        `gorm:"column:commit_count"`                            // 评论数

+ 70 - 3
service/autoTask.go

@@ -41,14 +41,24 @@ func AutoTask() error {
 	}
 	_, err5 := c.AddFunc(spec, GetAutoLinkDefaultTask)
 	if err5 != nil {
-		log.Println("service [GetAutoLinkDefaultTask] error:", err4)
+		log.Println("service [GetAutoLinkDefaultTask] error:", err5)
 		return err5
 	}
 	_, err6 := c.AddFunc(spec, GetAutoCaseCloseDefaultTask)
 	if err6 != nil {
-		log.Println("service [GetAutoCaseCloseDefaultTask] error:", err4)
+		log.Println("service [GetAutoCaseCloseDefaultTask] error:", err6)
 		return err6
 	}
+	_, err7 := c.AddFunc(spec, UpdateProjectTaskRedBookLinkData)
+	if err7 != nil {
+		log.Println("service [UpdateProjectTaskRedBookLinkData] error:", err7)
+		return err7
+	}
+	_, err8 := c.AddFunc(spec, UpdateLocalTaskRedBookLinkData)
+	if err8 != nil {
+		log.Println("service [UpdateLocalTaskRedBookLinkData] error:", err8)
+		return err8
+	}
 	fmt.Println(spec)
 	c.Start()
 	return nil
@@ -108,6 +118,8 @@ func GetAutoCaseCloseDefaultTask() {
 // UpdateProjectTaskRedBookLinkData 定时拉取小红书平台,种草子任务链接数据
 func UpdateProjectTaskRedBookLinkData() {
 
+	log.Println("UpdateProjectTaskRedBookLinkData is running ,Time :", time.Now())
+
 	// 1. 符合条件的project
 	ctx := context.Background()
 	projectIdList, projectIdListTotal, projectIdListErr := db.GetProjectIdList(ctx, 8, 1)
@@ -139,7 +151,7 @@ func UpdateProjectTaskRedBookLinkData() {
 						}
 						createData := gorm_model.ProjectTaskLinkStatistic{
 							ProjectId:       projectId,
-							TaskID:          taskId,
+							TaskId:          taskId,
 							PlatformId:      1,
 							VoteCount:       like,
 							CommitCount:     comment,
@@ -157,3 +169,58 @@ func UpdateProjectTaskRedBookLinkData() {
 		}
 	}
 }
+
+// UpdateLocalTaskRedBookLinkData 定时拉取小红书平台,本地生活子任务链接数据
+func UpdateLocalTaskRedBookLinkData() {
+
+	log.Println("UpdateLocalTaskRedBookLinkData is running ,Time :", time.Now())
+
+	// 1. 符合条件的local
+	ctx := context.Background()
+	localIdList, localIdListTotal, localIdListErr := db.GetLocalIdList(ctx, 8, 1)
+	if localIdListErr != nil {
+		log.Println("GetLocalIdList error : ", localIdListErr)
+		return
+	}
+
+	// 2. 符合条件的task
+	if localIdList != nil && localIdListTotal != 0 {
+		for _, localId := range localIdList {
+			taskIdList, taskIdTotal, taskIdErr := db.GetLocalTaskIdList(ctx, localId)
+			if taskIdErr != nil {
+				log.Println("GetProjectTaskIdList error : ", taskIdErr)
+				continue
+			}
+			if taskIdList != nil && taskIdTotal != 0 {
+				for _, taskId := range taskIdList {
+					linkInfo, linkErr := db.GetProjectTaskLinkInfo(ctx, taskId, 1)
+					if linkErr != nil {
+						log.Println("GetProjectTaskLinkInfo error : ", linkErr)
+						continue
+					}
+					if linkInfo != "" {
+						like, comment, collect, share, moreApiErr := GetRedBookLinkDetail(ctx, linkInfo)
+						if moreApiErr != nil {
+							log.Println("GetRedBookLinkDetail error : ", moreApiErr)
+							continue
+						}
+						createData := gorm_model.LocalTaskLinkStatistic{
+							LocalId:         localId,
+							TaskId:          taskId,
+							PlatformId:      1,
+							VoteCount:       like,
+							CommitCount:     comment,
+							CollectionCount: collect,
+							ViewCount:       share,
+						}
+						createErr := db.CreateLocalTaskLinkStatistic(ctx, &createData)
+						if createErr != nil {
+							log.Println("CreateProjectTaskLinkStatistic error : ", createErr)
+							continue
+						}
+					}
+				}
+			}
+		}
+	}
+}