支持 颜色筛选
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