支持 颜色筛选
This commit is contained in:
@@ -409,6 +409,7 @@ func NewSchema(config Config) (graphql.Schema, error) {
|
|||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
Args: graphql.FieldConfigArgument{
|
Args: graphql.FieldConfigArgument{
|
||||||
|
"color": &graphql.ArgumentConfig{Type: graphql.String, Description: "按主色调筛选图像, 使用十六进制颜色代码(#FF1414)"},
|
||||||
"explorer_id": &graphql.ArgumentConfig{Type: graphql.Int, Description: "筛选图像中指定收藏夹的"},
|
"explorer_id": &graphql.ArgumentConfig{Type: graphql.Int, Description: "筛选图像中指定收藏夹的"},
|
||||||
"collect_id": &graphql.ArgumentConfig{Type: graphql.Int, Description: "筛选图像中指定收藏夹的"},
|
"collect_id": &graphql.ArgumentConfig{Type: graphql.Int, Description: "筛选图像中指定收藏夹的"},
|
||||||
"collect": &graphql.ArgumentConfig{Type: graphql.Int, Description: "筛选图像中指定用户收藏过的"},
|
"collect": &graphql.ArgumentConfig{Type: graphql.Int, Description: "筛选图像中指定用户收藏过的"},
|
||||||
@@ -627,6 +628,53 @@ func NewSchema(config Config) (graphql.Schema, error) {
|
|||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 数据库中筛选: 按图像主色调颜色筛选
|
||||||
|
if p.Args["color"] != nil {
|
||||||
|
// 将 16 进制颜色转换为 RGB 三值
|
||||||
|
|
||||||
|
// hexToRGB 将十六进制颜色转换为 RGB
|
||||||
|
hexToRGB := func(hex string) (int, int, int, error) {
|
||||||
|
// 去掉 # 号
|
||||||
|
if strings.HasPrefix(hex, "#") {
|
||||||
|
hex = hex[1:]
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查是否是有效的十六进制颜色
|
||||||
|
if len(hex) != 6 {
|
||||||
|
return 0, 0, 0, fmt.Errorf("invalid hex color")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 解析红色、绿色、蓝色通道的十六进制值
|
||||||
|
r, err := strconv.ParseInt(hex[:2], 16, 0)
|
||||||
|
if err != nil {
|
||||||
|
return 0, 0, 0, err
|
||||||
|
}
|
||||||
|
g, err := strconv.ParseInt(hex[2:4], 16, 0)
|
||||||
|
if err != nil {
|
||||||
|
return 0, 0, 0, err
|
||||||
|
}
|
||||||
|
b, err := strconv.ParseInt(hex[4:], 16, 0)
|
||||||
|
if err != nil {
|
||||||
|
return 0, 0, 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return int(r), int(g), int(b), nil
|
||||||
|
}
|
||||||
|
r, g, b, err := hexToRGB(p.Args["color"].(string))
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("hexToRGB", err)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
query = query.Where(goqu.Ex{
|
||||||
|
"web_images.color_r > ?": r - 10,
|
||||||
|
"web_images.color_r < ?": r + 10,
|
||||||
|
"web_images.color_g > ?": g - 10,
|
||||||
|
"web_images.color_g < ?": g + 10,
|
||||||
|
"web_images.color_b > ?": b - 10,
|
||||||
|
"web_images.color_b < ?": b + 10,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// 取所有数据的前N条
|
// 取所有数据的前N条
|
||||||
sql, _, _ := query.Where(goqu.Ex{"article_category_top_id": 22}).ToSQL()
|
sql, _, _ := query.Where(goqu.Ex{"article_category_top_id": 22}).ToSQL()
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user