diff --git a/api/graphql.go b/api/graphql.go index ea093c2..4e466b1 100644 --- a/api/graphql.go +++ b/api/graphql.go @@ -496,7 +496,9 @@ func NewSchema(config Config) (graphql.Schema, error) { return map[string]interface{}{"list": []Image{}, "total": 0}, nil } - query = query.Where(goqu.Ex{"web_images.id": goqu.Op{"in": item}}) + query = query.Where(goqu.Ex{"web_images.id": goqu.Op{"in": item}}).Select("web_images.id", goqu.L( + fmt.Sprintf("ROW_NUMBER() OVER(ORDER BY FIELD(%s, %s))", "web_images.id", regexp.MustCompile(`[\[\]]`).ReplaceAllString(strings.Join(strings.Fields(fmt.Sprint(item)), ", "), "")), + ).As("row_num")) } // 筛选:相似图像 @@ -511,6 +513,13 @@ func NewSchema(config Config) (graphql.Schema, error) { ).As("row_num")) } + // 如果没有外部排序则使用指定排序 + if args.Similar == 0 && args.Similar == 0 && p.Args["sort"] != nil && p.Args["order"] != nil { + query = query.Select("web_images.id", goqu.L( + fmt.Sprintf("ROW_NUMBER() OVER(ORDER BY %s %s)", p.Args["sort"], p.Args["order"]), + ).As("row_num")) + } + // 筛选:兴趣推荐 if args.Interest != 0 { fmt.Println("Interest:", args.Interest)