排序规则

This commit is contained in:
2024-11-10 12:21:45 +08:00
parent 241952e680
commit 840c1dd5a4

View File

@@ -456,9 +456,6 @@ func NewSchema(config Config) (graphql.Schema, error) {
} }
} }
var list []int
var id_list [][]int
// 筛选:提取文字 // 筛选:提取文字
if args.Text != "" { if args.Text != "" {
resp, err := models.ZincSearch(map[string]interface{}{ resp, err := models.ZincSearch(map[string]interface{}{
@@ -506,11 +503,23 @@ func NewSchema(config Config) (graphql.Schema, error) {
for _, id := range models.GetSimilarImagesIdList(args.Similar, 200) { for _, id := range models.GetSimilarImagesIdList(args.Similar, 200) {
item = append(item, int(id)) item = append(item, int(id))
} }
id_list = append(id_list, item)
if len(id_list) == 0 { toGoquExpressions := func(ids []int) []goqu.Expression {
return map[string]interface{}{"list": []Image{}, "total": 0}, nil expressions := make([]goqu.Expression, len(ids))
for i, id := range ids {
expressions[i] = goqu.V(id)
} }
return expressions
}
expressions := toGoquExpressions(item)
interfaceExpressions := make([]interface{}, len(expressions))
for i, expr := range expressions {
interfaceExpressions[i] = expr
}
query = query.Where(goqu.Ex{"web_images.id": goqu.Op{"in": item}}).
Order(goqu.Func("FIELD", append([]interface{}{goqu.I("web_images.id")}, interfaceExpressions...)...).Asc())
} }
// 筛选:兴趣推荐 // 筛选:兴趣推荐
@@ -578,77 +587,6 @@ func NewSchema(config Config) (graphql.Schema, error) {
)) ))
} }
// 排序
// 截取:取交集
if len(id_list) != 0 {
list = id_list[0]
if len(id_list) > 1 {
for _, slice := range id_list[1:] {
list = funk.Join(list, slice, funk.InnerJoin).([]int)
}
}
if len(list) == 0 {
return map[string]interface{}{"list": []Image{}, "total": 0}, nil
}
}
total = len(list)
//var count int64
//if len(list) > 0 {
// query = query.Count(&count)
//}
// 截取: 分页
if args.After != 0 {
index := -1
for i, id := range list {
if id == args.After {
index = i
break
}
}
if index != -1 {
list = list[index+1:]
}
}
if args.Before != 0 {
index := -1
for i, id := range list {
if id == args.Before {
index = i
break
}
}
if index != -1 {
list = list[:index]
}
}
// 如果截取范围小于列表长度
if args.First != 0 && args.First < len(list) {
list = list[:args.First]
}
// 如果截取范围小于列表长度
if args.Last != 0 && args.Last < len(list) {
list = list[len(list)-args.Last:]
}
if args.First == 0 && args.Last == 0 {
if len(list) > 10 {
list = list[:10]
}
}
// 存在外部筛选条件
if len(id_list) > 0 && len(list) > 0 {
//query = query.Where("id IN ?", list)
//where = fmt.Sprintf("web_images.id IN ?", )
}
// 取所有数据的前N条 // 取所有数据的前N条
sql, _, _ := query.Where(goqu.Ex{"article_category_top_id": 22}).ToSQL() sql, _, _ := query.Where(goqu.Ex{"article_category_top_id": 22}).ToSQL()
@@ -696,17 +634,6 @@ func NewSchema(config Config) (graphql.Schema, error) {
return nil, err return nil, err
} }
//var order string
//// 排序规则
//if p.Args["sort"] != nil && p.Args["order"] != nil {
// // query = query.Order(fmt.Sprintf("%s %s", args.Sort, args.Order))
// order = "ORDER BY " + p.Args["sort"].(string) + " " + p.Args["order"].(string) + " "
//}
//if total == 0 && count > 0 {
// total = int(count)
//}
return map[string]interface{}{ return map[string]interface{}{
"list": images, "list": images,
"total": total, "total": total,