减少传输耗时
This commit is contained in:
		
							
								
								
									
										11
									
								
								api/gorse.go
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								api/gorse.go
									
									
									
									
									
								
							@@ -62,11 +62,12 @@ func PutPraises(page int) error {
 | 
			
		||||
			CreateTime time.Time
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if err := db.Table("web_praises").Select("id", "praise_id", "user_id", "create_time").Where("type = ?", 4).Limit(100).Offset(i * 100).Scan(&data).Error; err != nil {
 | 
			
		||||
			fmt.Println("获取点赞记录失败", err)
 | 
			
		||||
		if err := db.Table("web_praise").Select("id", "praise_id", "user_id", "create_time").Where("gorse = false").Where("type = ?", 4).Limit(100).Scan(&data).Error; err != nil {
 | 
			
		||||
			fmt.Println("获取图像点赞记录失败", err)
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		var ids []int
 | 
			
		||||
		for _, item := range data {
 | 
			
		||||
			fmt.Println(item.ID, item.UserID, item.PraiseID, item.CreateTime)
 | 
			
		||||
			feedbacks = append(feedbacks, client.Feedback{
 | 
			
		||||
@@ -75,6 +76,12 @@ func PutPraises(page int) error {
 | 
			
		||||
				ItemId:       fmt.Sprintf("%d", item.PraiseID),
 | 
			
		||||
				Timestamp:    item.CreateTime.Format("2006-01-02 15:04:05"),
 | 
			
		||||
			})
 | 
			
		||||
			ids = append(ids, item.ID)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if err := db.Table("web_praise").Where("id in (?)", data).Update("gorse", true).Error; err != nil {
 | 
			
		||||
			fmt.Println("更新点赞记录失败", err)
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if _, err := gorse.InsertFeedback(ctx, feedbacks); err != nil {
 | 
			
		||||
 
 | 
			
		||||
@@ -598,10 +598,9 @@ func NewSchema(config Config) (graphql.Schema, error) {
 | 
			
		||||
								},
 | 
			
		||||
							},
 | 
			
		||||
						},
 | 
			
		||||
						"sort": []string{
 | 
			
		||||
							"_score",
 | 
			
		||||
						},
 | 
			
		||||
						"size": 2000,
 | 
			
		||||
						"_source": false,
 | 
			
		||||
						"sort":    []string{"_score"},
 | 
			
		||||
						"size":    100000,
 | 
			
		||||
					})
 | 
			
		||||
 | 
			
		||||
					if err != nil {
 | 
			
		||||
@@ -621,7 +620,6 @@ func NewSchema(config Config) (graphql.Schema, error) {
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					query = query.Where(goqu.Ex{"web_images.id": goqu.Op{"in": item}}).Select("web_images.id", goqu.L(
 | 
			
		||||
						//fmt.Sprintf("ROW_NUMBER() OVER(ORDER BY FIELD(%s, %s))", "web_images.id", regexp.MustCompile(`[\[\]]`).ReplaceAllString(strings.Join(strings.Fields(fmt.Sprint(item)), ", "), "")),
 | 
			
		||||
						fmt.Sprintf("ROW_NUMBER() OVER(ORDER BY %s %s)", "web_images.id", "DESC"),
 | 
			
		||||
					).As("row_num"))
 | 
			
		||||
				}
 | 
			
		||||
@@ -886,7 +884,7 @@ func NewSchema(config Config) (graphql.Schema, error) {
 | 
			
		||||
					limit = args.Last
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				fmt.Println("SQL:", sql)
 | 
			
		||||
				//fmt.Println("SQL:", sql)
 | 
			
		||||
 | 
			
		||||
				sql = fmt.Sprintf(`
 | 
			
		||||
				WITH RankedArticles AS (%s)
 | 
			
		||||
@@ -896,7 +894,7 @@ func NewSchema(config Config) (graphql.Schema, error) {
 | 
			
		||||
				ORDER BY LimitedRanked.row_num LIMIT %d
 | 
			
		||||
				`, sql, cursor, limit)
 | 
			
		||||
 | 
			
		||||
				fmt.Println("cursor:", cursor, limit)
 | 
			
		||||
				//fmt.Println("cursor:", cursor, limit)
 | 
			
		||||
 | 
			
		||||
				if err := db.Raw(sql).Scan(&images).Error; err != nil {
 | 
			
		||||
					fmt.Println("获取图像列表失败", err)
 | 
			
		||||
@@ -909,8 +907,8 @@ func NewSchema(config Config) (graphql.Schema, error) {
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				var find = db.Where("web_images.id IN ?", ids)
 | 
			
		||||
				for index, item := range LoadItem(p.Info.FieldASTs[0].SelectionSet.Selections) {
 | 
			
		||||
					fmt.Println(index, item)
 | 
			
		||||
				for _, item := range LoadItem(p.Info.FieldASTs[0].SelectionSet.Selections) {
 | 
			
		||||
					//fmt.Println(index, item)
 | 
			
		||||
					find = find.Preload(item)
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user