收藏views
This commit is contained in:
@@ -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,
|
||||||
|
Reference in New Issue
Block a user