收藏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