处理 text NULL 字段
This commit is contained in:
@@ -1,9 +1,11 @@
|
|||||||
package api
|
package api
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
"sort"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
@@ -351,6 +353,7 @@ func NewSchema(config Config) (graphql.Schema, error) {
|
|||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
Args: graphql.FieldConfigArgument{
|
Args: graphql.FieldConfigArgument{
|
||||||
|
"follower": &graphql.ArgumentConfig{Type: graphql.Int, Description: "获取指定ID用户的关注列表发布的图像"},
|
||||||
"interest": &graphql.ArgumentConfig{Type: graphql.Int, Description: "获取指定ID用户的兴趣推荐图像"},
|
"interest": &graphql.ArgumentConfig{Type: graphql.Int, Description: "获取指定ID用户的兴趣推荐图像"},
|
||||||
"similar": &graphql.ArgumentConfig{Type: graphql.Int, Description: "获取与指定ID图像相似的图像"},
|
"similar": &graphql.ArgumentConfig{Type: graphql.Int, Description: "获取与指定ID图像相似的图像"},
|
||||||
"id": &graphql.ArgumentConfig{Type: graphql.Int, Description: "获取指定ID的图像"},
|
"id": &graphql.ArgumentConfig{Type: graphql.Int, Description: "获取指定ID的图像"},
|
||||||
@@ -384,6 +387,7 @@ func NewSchema(config Config) (graphql.Schema, error) {
|
|||||||
Text string
|
Text string
|
||||||
Interest int
|
Interest int
|
||||||
Similar int
|
Similar int
|
||||||
|
Follower int
|
||||||
}
|
}
|
||||||
mapstructure.Decode(p.Args, &args)
|
mapstructure.Decode(p.Args, &args)
|
||||||
|
|
||||||
@@ -471,6 +475,49 @@ func NewSchema(config Config) (graphql.Schema, error) {
|
|||||||
fmt.Println("Interest:", args.Interest)
|
fmt.Println("Interest:", args.Interest)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 筛选: 关注列表
|
||||||
|
if args.Follower != 0 {
|
||||||
|
// 返回JSON数组(2.5秒)
|
||||||
|
var item string
|
||||||
|
if err := db.Raw(`
|
||||||
|
SELECT JSON_ARRAYAGG(web_images.id) AS json_result
|
||||||
|
FROM web_fans
|
||||||
|
INNER JOIN web_images ON web_images.user_id = web_fans.blogger_id
|
||||||
|
WHERE web_fans.follower_id = ?
|
||||||
|
`, args.Follower).Scan(&item).Error; err != nil {
|
||||||
|
fmt.Println("获取关注列表失败", err)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var ids []int
|
||||||
|
json.Unmarshal([]byte(item), &ids)
|
||||||
|
|
||||||
|
sort.Slice(ids, func(i, j int) bool {
|
||||||
|
return ids[i] > ids[j] // 按照降序排列
|
||||||
|
})
|
||||||
|
|
||||||
|
id_list = append(id_list, ids)
|
||||||
|
|
||||||
|
//fmt.Println(item)
|
||||||
|
|
||||||
|
// 返回所有结果(7秒)
|
||||||
|
//var item []int
|
||||||
|
//if err := db.Table("web_fans").Select("web_images.id").Limit(10).Joins("inner join web_images on web_images.user_id = web_fans.blogger_id").Where("web_fans.follower_id = ?", 46).Pluck("id", &item).Error; err != nil {
|
||||||
|
// fmt.Println("获取关注列表失败", err)
|
||||||
|
// return nil, err
|
||||||
|
//}
|
||||||
|
// id_list = append(id_list, item)
|
||||||
|
|
||||||
|
// 直接出结果(最快)
|
||||||
|
//var q = db.Table("web_fans").Select("web_images.*").Limit(10)
|
||||||
|
//q = q.Joins("inner join web_images on web_images.user_id = web_fans.blogger_id")
|
||||||
|
//q = q.Where("web_fans.follower_id = ?", 46).Preload("User").Preload("Article").Find(&images)
|
||||||
|
//return map[string]interface{}{
|
||||||
|
// "list": images,
|
||||||
|
// "total": len(images),
|
||||||
|
//}, nil
|
||||||
|
}
|
||||||
|
|
||||||
// 排序
|
// 排序
|
||||||
|
|
||||||
// 截取:取交集
|
// 截取:取交集
|
||||||
|
@@ -87,6 +87,11 @@ type TextList []struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (a *TextList) Scan(value interface{}) error {
|
func (a *TextList) Scan(value interface{}) error {
|
||||||
|
// 如果数据库中的值为NULL,则返回nil
|
||||||
|
if value == nil || len(value.([]byte)) == 0 {
|
||||||
|
*a = TextList{}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
return json.Unmarshal(value.([]byte), a)
|
return json.Unmarshal(value.([]byte), a)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user