收藏views

This commit is contained in:
2024-12-24 19:35:44 +08:00
parent abe1a0822f
commit 178085305d

View File

@@ -1,7 +1,11 @@
package api package api
import ( import (
"encoding/json"
"fmt" "fmt"
"io"
"net/http"
"strings"
"time" "time"
"github.com/graphql-go/graphql" "github.com/graphql-go/graphql"
@@ -29,6 +33,7 @@ type Collection struct {
User User `json:"user" gorm:"foreignKey:UserId;references:ID"` User User `json:"user" gorm:"foreignKey:UserId;references:ID"`
Fan bool `json:"praise" gorm:"-"` Fan bool `json:"praise" gorm:"-"`
Covers []Cover `json:"covers" gorm:"-"` Covers []Cover `json:"covers" gorm:"-"`
Views int `json:"views"`
} }
func (Collection) TableName() string { func (Collection) TableName() string {
@@ -68,6 +73,7 @@ var CollectionItems = &graphql.Field{
})), })),
Description: "封面集", Description: "封面集",
}, },
"views": &graphql.Field{Type: graphql.Int, Description: "浏览量"},
}, },
})), Description: "收藏夹列表"}, })), Description: "收藏夹列表"},
"total": &graphql.Field{Type: graphql.Int, Description: "收藏夹总数"}, "total": &graphql.Field{Type: graphql.Int, Description: "收藏夹总数"},
@@ -135,6 +141,59 @@ var CollectionItems = &graphql.Field{
collects[index].Covers = data collects[index].Covers = data
} }
if funk.Contains(items, "views") {
type ApiResponse struct {
ID int `json:"id"`
Count int `json:"count"`
}
// 0. 收集要查询的 ID
var ids []int
for x := range collects {
ids = append(ids, collects[x].ID)
}
idx := strings.Trim(strings.Replace(fmt.Sprint(ids), " ", ",", -1), "[]")
// 1. 发送 GET 请求
resp, err := http.Get("http://localhost:6005/api/get_views/收藏?ids=" + idx)
if err != nil {
fmt.Println("Error making GET request:", err)
return nil, err
}
defer resp.Body.Close()
// 2. 检查 HTTP 状态码
if resp.StatusCode != http.StatusOK {
fmt.Printf("Request failed with status code: %d\n", resp.StatusCode)
return nil, err
}
// 3. 读取响应体
body, err := io.ReadAll(resp.Body)
if err != nil {
fmt.Println("Error reading response body:", err)
return nil, err
}
// 4. 解析 JSON 数据到结构体
var data []ApiResponse
err = json.Unmarshal(body, &data)
if err != nil {
fmt.Println("Error unmarshalling JSON:", err)
return nil, err
}
// 5. 赋值到数据集
for _, item := range data {
for i := range collects {
if collects[i].ID == item.ID {
collects[i].Views = item.Count
continue
}
}
}
}
return map[string]interface{}{ return map[string]interface{}{
"list": collects, "list": collects,
"total": total, "total": total,