集成颜色字段
This commit is contained in:
		@@ -13,9 +13,15 @@
 | 
				
			|||||||
# OCR
 | 
					# OCR
 | 
				
			||||||
- [ ] 脚本统计各关键词总量
 | 
					- [ ] 脚本统计各关键词总量
 | 
				
			||||||
- [ ] 筛选条件支持多选 颜色,风格 | 类型,主题,功能,材质图案(多选逗号分隔)
 | 
					- [ ] 筛选条件支持多选 颜色,风格 | 类型,主题,功能,材质图案(多选逗号分隔)
 | 
				
			||||||
 | 
					- [ ] 按颜色筛选, 周期性脚本自动补全三色
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ALTER TABLE web_images ADD COLUMN color_0_r TINYINT UNSIGNED;
 | 
				
			||||||
 | 
					ALTER TABLE web_images ADD COLUMN color_0_g TINYINT UNSIGNED;
 | 
				
			||||||
 | 
					ALTER TABLE web_images ADD COLUMN color_0_b TINYINT UNSIGNED;
 | 
				
			||||||
 | 
					ALTER TABLE web_images ADD COLUMN color_1_r TINYINT UNSIGNED;
 | 
				
			||||||
 | 
					ALTER TABLE web_images ADD COLUMN color_1_g TINYINT UNSIGNED;
 | 
				
			||||||
 | 
					ALTER TABLE web_images ADD COLUMN color_1_b TINYINT UNSIGNED;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -104,6 +104,19 @@ func NewSchema(config Config) (graphql.Schema, error) {
 | 
				
			|||||||
		log.Fatalln("连接数据库失败", err)
 | 
							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{
 | 
						user := graphql.NewObject(graphql.ObjectConfig{
 | 
				
			||||||
		Name:        "User",
 | 
							Name:        "User",
 | 
				
			||||||
@@ -630,20 +643,16 @@ func NewSchema(config Config) (graphql.Schema, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
				// 数据库中筛选: 按图像主色调颜色筛选
 | 
									// 数据库中筛选: 按图像主色调颜色筛选
 | 
				
			||||||
				if p.Args["color"] != nil {
 | 
									if p.Args["color"] != nil {
 | 
				
			||||||
					// 将 16 进制颜色转换为 RGB 三值
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
					// hexToRGB 将十六进制颜色转换为 RGB
 | 
										// hexToRGB 将十六进制颜色转换为 RGB
 | 
				
			||||||
					hexToRGB := func(hex string) (int, int, int, error) {
 | 
										hexToRGB := func(hex string) (int, int, int, error) {
 | 
				
			||||||
						// 去掉 # 号
 | 
											// 去掉 # 号
 | 
				
			||||||
						if strings.HasPrefix(hex, "#") {
 | 
											if strings.HasPrefix(hex, "#") {
 | 
				
			||||||
							hex = hex[1:]
 | 
												hex = hex[1:]
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
 | 
					 | 
				
			||||||
						// 检查是否是有效的十六进制颜色
 | 
											// 检查是否是有效的十六进制颜色
 | 
				
			||||||
						if len(hex) != 6 {
 | 
											if len(hex) != 6 {
 | 
				
			||||||
							return 0, 0, 0, fmt.Errorf("invalid hex color")
 | 
												return 0, 0, 0, fmt.Errorf("invalid hex color")
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
 | 
					 | 
				
			||||||
						// 解析红色、绿色、蓝色通道的十六进制值
 | 
											// 解析红色、绿色、蓝色通道的十六进制值
 | 
				
			||||||
						r, err := strconv.ParseInt(hex[:2], 16, 0)
 | 
											r, err := strconv.ParseInt(hex[:2], 16, 0)
 | 
				
			||||||
						if err != nil {
 | 
											if err != nil {
 | 
				
			||||||
@@ -657,23 +666,26 @@ func NewSchema(config Config) (graphql.Schema, error) {
 | 
				
			|||||||
						if err != nil {
 | 
											if err != nil {
 | 
				
			||||||
							return 0, 0, 0, err
 | 
												return 0, 0, 0, err
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
 | 
					 | 
				
			||||||
						return int(r), int(g), int(b), nil
 | 
											return int(r), int(g), int(b), nil
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
					r, g, b, err := hexToRGB(p.Args["color"].(string))
 | 
										// 逗号分割且去除空格
 | 
				
			||||||
 | 
										colors := strings.Split(strings.ReplaceAll(p.Args["color"].(string), " ", ""), ",")
 | 
				
			||||||
 | 
										for index, color := range colors {
 | 
				
			||||||
 | 
											r, g, b, err := hexToRGB(color)
 | 
				
			||||||
						if err != nil {
 | 
											if err != nil {
 | 
				
			||||||
						fmt.Println("hexToRGB", err)
 | 
												fmt.Println("hexToRGB", index, err)
 | 
				
			||||||
							return nil, err
 | 
												return nil, err
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
						query = query.Where(goqu.Ex{
 | 
											query = query.Where(goqu.Ex{
 | 
				
			||||||
						"web_images.color_r > ?": r - 10,
 | 
												fmt.Sprintf("web_images.color_%d_r > ?", index): r - 10,
 | 
				
			||||||
						"web_images.color_r < ?": r + 10,
 | 
												fmt.Sprintf("web_images.color_%d_r < ?", index): r + 10,
 | 
				
			||||||
						"web_images.color_g > ?": g - 10,
 | 
												fmt.Sprintf("web_images.color_%d_g > ?", index): g - 10,
 | 
				
			||||||
						"web_images.color_g < ?": g + 10,
 | 
												fmt.Sprintf("web_images.color_%d_g < ?", index): g + 10,
 | 
				
			||||||
						"web_images.color_b > ?": b - 10,
 | 
												fmt.Sprintf("web_images.color_%d_b > ?", index): b - 10,
 | 
				
			||||||
						"web_images.color_b < ?": b + 10,
 | 
												fmt.Sprintf("web_images.color_%d_b < ?", index): 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