优化颜色筛选
This commit is contained in:
		
							
								
								
									
										56
									
								
								api/image.go
									
									
									
									
									
								
							
							
						
						
									
										56
									
								
								api/image.go
									
									
									
									
									
								
							@@ -536,24 +536,52 @@ var ImageItems = &graphql.Field{
 | 
			
		||||
					return nil, err
 | 
			
		||||
				}
 | 
			
		||||
				fmt.Println(color, r, g, b, precision)
 | 
			
		||||
				query = query.Where(goqu.Or(
 | 
			
		||||
				//query = query.Where(goqu.Or(
 | 
			
		||||
				//	goqu.And(
 | 
			
		||||
				//		goqu.L(fmt.Sprintf("web_images.color_%d_r", 0)).Gt(r-precision),
 | 
			
		||||
				//		goqu.L(fmt.Sprintf("web_images.color_%d_r", 0)).Lt(r+precision),
 | 
			
		||||
				//		goqu.L(fmt.Sprintf("web_images.color_%d_g", 0)).Gt(g-precision),
 | 
			
		||||
				//		goqu.L(fmt.Sprintf("web_images.color_%d_g", 0)).Lt(g+precision),
 | 
			
		||||
				//		goqu.L(fmt.Sprintf("web_images.color_%d_b", 0)).Gt(b-precision),
 | 
			
		||||
				//		goqu.L(fmt.Sprintf("web_images.color_%d_b", 0)).Lt(b+precision),
 | 
			
		||||
				//	),
 | 
			
		||||
				//	goqu.And(
 | 
			
		||||
				//		goqu.L(fmt.Sprintf("web_images.color_%d_r", 1)).Gt(r-precision),
 | 
			
		||||
				//		goqu.L(fmt.Sprintf("web_images.color_%d_r", 1)).Lt(r+precision),
 | 
			
		||||
				//		goqu.L(fmt.Sprintf("web_images.color_%d_g", 1)).Gt(g-precision),
 | 
			
		||||
				//		goqu.L(fmt.Sprintf("web_images.color_%d_g", 1)).Lt(g+precision),
 | 
			
		||||
				//		goqu.L(fmt.Sprintf("web_images.color_%d_b", 1)).Gt(b-precision),
 | 
			
		||||
				//		goqu.L(fmt.Sprintf("web_images.color_%d_b", 1)).Lt(b+precision),
 | 
			
		||||
				//	),
 | 
			
		||||
				//))
 | 
			
		||||
 | 
			
		||||
				query1, _, _ := goqu.Dialect("mysql").From("web_images").Select("id").Where(
 | 
			
		||||
					goqu.And(
 | 
			
		||||
						goqu.L(fmt.Sprintf("web_images.color_%d_r", 0)).Gt(r-precision),
 | 
			
		||||
						goqu.L(fmt.Sprintf("web_images.color_%d_r", 0)).Lt(r+precision),
 | 
			
		||||
						goqu.L(fmt.Sprintf("web_images.color_%d_g", 0)).Gt(g-precision),
 | 
			
		||||
						goqu.L(fmt.Sprintf("web_images.color_%d_g", 0)).Lt(g+precision),
 | 
			
		||||
						goqu.L(fmt.Sprintf("web_images.color_%d_b", 0)).Gt(b-precision),
 | 
			
		||||
						goqu.L(fmt.Sprintf("web_images.color_%d_b", 0)).Lt(b+precision),
 | 
			
		||||
						goqu.L(fmt.Sprintf("color_%d_r", 0)).Gt(r-precision),
 | 
			
		||||
						goqu.L(fmt.Sprintf("color_%d_r", 0)).Lt(r+precision),
 | 
			
		||||
						goqu.L(fmt.Sprintf("color_%d_g", 0)).Gt(g-precision),
 | 
			
		||||
						goqu.L(fmt.Sprintf("color_%d_g", 0)).Lt(g+precision),
 | 
			
		||||
						goqu.L(fmt.Sprintf("color_%d_b", 0)).Gt(b-precision),
 | 
			
		||||
						goqu.L(fmt.Sprintf("color_%d_b", 0)).Lt(b+precision),
 | 
			
		||||
					),
 | 
			
		||||
				).ToSQL()
 | 
			
		||||
 | 
			
		||||
				query2, _, _ := goqu.Dialect("mysql").From("web_images").Select("id").Where(
 | 
			
		||||
					goqu.And(
 | 
			
		||||
						goqu.L(fmt.Sprintf("web_images.color_%d_r", 1)).Gt(r-precision),
 | 
			
		||||
						goqu.L(fmt.Sprintf("web_images.color_%d_r", 1)).Lt(r+precision),
 | 
			
		||||
						goqu.L(fmt.Sprintf("web_images.color_%d_g", 1)).Gt(g-precision),
 | 
			
		||||
						goqu.L(fmt.Sprintf("web_images.color_%d_g", 1)).Lt(g+precision),
 | 
			
		||||
						goqu.L(fmt.Sprintf("web_images.color_%d_b", 1)).Gt(b-precision),
 | 
			
		||||
						goqu.L(fmt.Sprintf("web_images.color_%d_b", 1)).Lt(b+precision),
 | 
			
		||||
						goqu.L(fmt.Sprintf("color_%d_r", 1)).Gt(r-precision),
 | 
			
		||||
						goqu.L(fmt.Sprintf("color_%d_r", 1)).Lt(r+precision),
 | 
			
		||||
						goqu.L(fmt.Sprintf("color_%d_g", 1)).Gt(g-precision),
 | 
			
		||||
						goqu.L(fmt.Sprintf("color_%d_g", 1)).Lt(g+precision),
 | 
			
		||||
						goqu.L(fmt.Sprintf("color_%d_b", 1)).Gt(b-precision),
 | 
			
		||||
						goqu.L(fmt.Sprintf("color_%d_b", 1)).Lt(b+precision),
 | 
			
		||||
					),
 | 
			
		||||
				))
 | 
			
		||||
				).ToSQL()
 | 
			
		||||
 | 
			
		||||
				query = query.Join(
 | 
			
		||||
					goqu.L(fmt.Sprintf("(%s UNION %s) AS w", query1, query2)),
 | 
			
		||||
					goqu.On(goqu.Ex{"web_images.id": goqu.I("w.id")}),
 | 
			
		||||
				)
 | 
			
		||||
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user