107 lines
2.6 KiB
Go
107 lines
2.6 KiB
Go
package api
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"strconv"
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/zhenghaoz/gorse/client"
|
|
)
|
|
|
|
var gorse *client.GorseClient
|
|
|
|
func gorseInit(host string, port int) {
|
|
gorse = client.NewGorseClient(fmt.Sprintf("http://%s:%d", host, port), "")
|
|
}
|
|
|
|
// 同步图片数据
|
|
func PutImages(page int) error {
|
|
var ctx context.Context = context.Background()
|
|
|
|
for i := 0; i < page; i++ {
|
|
var items []client.Item
|
|
var data []Image
|
|
|
|
if err := db.Table("web_images").Select("id", "tags", "create_time").Limit(100).Offset(i * 100).Scan(&data).Error; err != nil {
|
|
fmt.Println("获取图像记录失败", err)
|
|
return err
|
|
}
|
|
|
|
for _, item := range data {
|
|
fmt.Println(item.ID, item.Tags, item.CreateTime)
|
|
items = append(items, client.Item{
|
|
ItemId: fmt.Sprintf("%d", item.ID),
|
|
Timestamp: item.CreateTime.Format("2006-01-02 15:04:05"),
|
|
Labels: strings.Split(item.Tags, ", "),
|
|
Comment: fmt.Sprintf("%d", item.Content),
|
|
})
|
|
}
|
|
|
|
if _, err := gorse.InsertItems(ctx, items); err != nil {
|
|
fmt.Println("写入图像记录失败", err)
|
|
return err
|
|
}
|
|
}
|
|
|
|
fmt.Println("写入图像记录结束..", page*100)
|
|
return nil
|
|
}
|
|
|
|
// 同步点赞数据
|
|
func PutPraises(page int) error {
|
|
var ctx context.Context = context.Background()
|
|
|
|
for i := 0; i < page; i++ {
|
|
var feedbacks []client.Feedback
|
|
var data []struct {
|
|
ID int
|
|
PraiseID int
|
|
UserID int
|
|
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)
|
|
return err
|
|
}
|
|
|
|
for _, item := range data {
|
|
fmt.Println(item.ID, item.UserID, item.PraiseID, item.CreateTime)
|
|
feedbacks = append(feedbacks, client.Feedback{
|
|
FeedbackType: "like",
|
|
UserId: fmt.Sprintf("%d", item.UserID),
|
|
ItemId: fmt.Sprintf("%d", item.PraiseID),
|
|
Timestamp: item.CreateTime.Format("2006-01-02 15:04:05"),
|
|
})
|
|
}
|
|
|
|
if _, err := gorse.InsertFeedback(ctx, feedbacks); err != nil {
|
|
fmt.Println("写入点赞记录失败", err)
|
|
return err
|
|
}
|
|
}
|
|
|
|
fmt.Println("写入点赞记录结束..", page*100)
|
|
return nil
|
|
}
|
|
|
|
// 同步收藏数据
|
|
|
|
// 获取推荐ID
|
|
func GetRecommend(user_id int, categorys []string) ([]int, error) {
|
|
var ctx context.Context = context.Background()
|
|
var ids []int
|
|
data, err := gorse.GetItemRecommend(ctx, fmt.Sprintf("%d", user_id), categorys, "read", "0", 100, 0)
|
|
if err != nil {
|
|
fmt.Println("获取推荐失败", err)
|
|
return ids, err
|
|
}
|
|
for _, item := range data {
|
|
id, _ := strconv.Atoi(item)
|
|
ids = append(ids, id)
|
|
}
|
|
return ids, nil
|
|
}
|