支持 颜色筛选
This commit is contained in:
		@@ -409,6 +409,7 @@ func NewSchema(config Config) (graphql.Schema, error) {
 | 
			
		||||
				},
 | 
			
		||||
			}),
 | 
			
		||||
			Args: graphql.FieldConfigArgument{
 | 
			
		||||
				"color":         &graphql.ArgumentConfig{Type: graphql.String, Description: "按主色调筛选图像, 使用十六进制颜色代码(#FF1414)"},
 | 
			
		||||
				"explorer_id":   &graphql.ArgumentConfig{Type: graphql.Int, Description: "筛选图像中指定收藏夹的"},
 | 
			
		||||
				"collect_id":    &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条
 | 
			
		||||
				sql, _, _ := query.Where(goqu.Ex{"article_category_top_id": 22}).ToSQL()
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user