集成颜色字段
This commit is contained in:
@@ -104,6 +104,19 @@ func NewSchema(config Config) (graphql.Schema, error) {
|
||||
log.Fatalln("连接数据库失败", err)
|
||||
}
|
||||
|
||||
//// 定时检查补全颜色字段
|
||||
//checkColorNullRows := func() {
|
||||
// for {
|
||||
// var ids struct {
|
||||
// ID int
|
||||
// }
|
||||
// if err := db.Table("web_images").Where("color IS NULL").Scan(ids).Error; err != nil {
|
||||
// fmt.Println("定时检查补全颜色字段查询失败", err)
|
||||
// }
|
||||
// fmt.Println("定时检查补全颜色字段查询成功", ids)
|
||||
// }
|
||||
//}
|
||||
|
||||
// 用户的可选字段
|
||||
user := graphql.NewObject(graphql.ObjectConfig{
|
||||
Name: "User",
|
||||
@@ -630,20 +643,16 @@ 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 {
|
||||
@@ -657,22 +666,25 @@ func NewSchema(config Config) (graphql.Schema, error) {
|
||||
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
|
||||
// 逗号分割且去除空格
|
||||
colors := strings.Split(strings.ReplaceAll(p.Args["color"].(string), " ", ""), ",")
|
||||
for index, color := range colors {
|
||||
r, g, b, err := hexToRGB(color)
|
||||
if err != nil {
|
||||
fmt.Println("hexToRGB", index, err)
|
||||
return nil, err
|
||||
}
|
||||
query = query.Where(goqu.Ex{
|
||||
fmt.Sprintf("web_images.color_%d_r > ?", index): r - 10,
|
||||
fmt.Sprintf("web_images.color_%d_r < ?", index): r + 10,
|
||||
fmt.Sprintf("web_images.color_%d_g > ?", index): g - 10,
|
||||
fmt.Sprintf("web_images.color_%d_g < ?", index): g + 10,
|
||||
fmt.Sprintf("web_images.color_%d_b > ?", index): b - 10,
|
||||
fmt.Sprintf("web_images.color_%d_b < ?", index): b + 10,
|
||||
})
|
||||
}
|
||||
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条
|
||||
|
Reference in New Issue
Block a user