This commit is contained in:
Mrx
2026-05-27 13:00:51 +08:00
parent b7fb2a73c9
commit 5cee8ff035
15 changed files with 569 additions and 146 deletions

View File

@@ -3,6 +3,8 @@ package repositories
import (
"context"
"errors"
"strings"
"tyapi-server/internal/domains/product/entities"
"tyapi-server/internal/domains/product/repositories"
"tyapi-server/internal/domains/product/repositories/queries"
@@ -165,13 +167,33 @@ func (r *GormProductRepository) ListProducts(ctx context.Context, query *queries
// 应用排序
if query.SortBy != "" {
order := query.SortBy
if query.SortOrder == "desc" {
order += " DESC"
// 检查是否是关联表字段排序
if strings.Contains(query.SortBy, ".") {
parts := strings.Split(query.SortBy, ".")
if len(parts) == 2 {
// 关联表字段排序需要JOIN表
joinTable := parts[0]
sortField := parts[1]
dbQuery = dbQuery.Joins("JOIN "+joinTable+" ON products.category_id = "+joinTable+".id")
order := joinTable + "." + sortField
if query.SortOrder == "desc" {
order += " DESC"
} else {
order += " ASC"
}
dbQuery = dbQuery.Order(order)
}
} else {
order += " ASC"
// 本表字段排序
order := query.SortBy
if query.SortOrder == "desc" {
order += " DESC"
} else {
order += " ASC"
}
dbQuery = dbQuery.Order(order)
}
dbQuery = dbQuery.Order(order)
} else {
dbQuery = dbQuery.Order("created_at DESC")
}