From b32486305ce7b2a2090eb4d70611d8935eb0052d Mon Sep 17 00:00:00 2001 From: satori Date: Sat, 16 Nov 2024 23:10:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A3=80=E7=B4=A2=E7=B2=BE=E5=BA=A6=20precisio?= =?UTF-8?q?n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/graphql.go | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/api/graphql.go b/api/graphql.go index c34d80d..49d723c 100644 --- a/api/graphql.go +++ b/api/graphql.go @@ -778,19 +778,32 @@ func NewSchema(config Config) (graphql.Schema, error) { // 逗号分割且去除空格 colors := strings.Split(strings.ReplaceAll(p.Args["color"].(string), " ", ""), ",") for index, color := range colors { + + var precision int = 10 + if strings.Contains(color, ":") { + re := regexp.MustCompile(`^#([0-9a-fA-F]{6}):(\d+)$`) + matches := re.FindStringSubmatch(color) + num, err := strconv.Atoi(matches[2]) + if err != nil { + fmt.Println("数字精度转换失败:", err) + return nil, err + } + precision = num + } + r, g, b, err := hexToRGB(color) if err != nil { fmt.Println("hexToRGB", index, err) return nil, err } - fmt.Println(color, r, g, b) + fmt.Println(color, r, g, b, precision) query = query.Where(goqu.And( - goqu.L(fmt.Sprintf("web_images.color_%d_r", index)).Gt(r-10), - goqu.L(fmt.Sprintf("web_images.color_%d_r", index)).Lt(r+10), - goqu.L(fmt.Sprintf("web_images.color_%d_g", index)).Gt(g-10), - goqu.L(fmt.Sprintf("web_images.color_%d_g", index)).Lt(g+10), - goqu.L(fmt.Sprintf("web_images.color_%d_b", index)).Gt(b-10), - goqu.L(fmt.Sprintf("web_images.color_%d_b", index)).Lt(b+10), + goqu.L(fmt.Sprintf("web_images.color_%d_r", index)).Gt(r-precision), + goqu.L(fmt.Sprintf("web_images.color_%d_r", index)).Lt(r+precision), + goqu.L(fmt.Sprintf("web_images.color_%d_g", index)).Gt(g-precision), + goqu.L(fmt.Sprintf("web_images.color_%d_g", index)).Lt(g+precision), + goqu.L(fmt.Sprintf("web_images.color_%d_b", index)).Gt(b-precision), + goqu.L(fmt.Sprintf("web_images.color_%d_b", index)).Lt(b+precision), )) } }