فهرست منبع

fix: SortUtil 修复 LambdaQueryWrapper 类型不兼容问题

iwt 1 ماه پیش
والد
کامیت
4c2c41f20e
1فایلهای تغییر یافته به همراه17 افزوده شده و 3 حذف شده
  1. 17 3
      cfc-backend/src/main/java/com/etotem/cfc/util/SortUtil.java

+ 17 - 3
cfc-backend/src/main/java/com/etotem/cfc/util/SortUtil.java

@@ -20,13 +20,27 @@ public class SortUtil {
             String col = spec.get("column");
             if (!StringUtils.hasText(col)) continue;
             boolean asc = !"desc".equalsIgnoreCase(spec.get("order"));
-            sb.append(col.replaceAll("([A-Z])", "_$1").toLowerCase())
-              .append(asc ? " asc" : " desc");
+            sb.append(toSnake(col)).append(asc ? " asc" : " desc");
         }
         if (sb.length() > 11) wrapper.last(sb.toString());
     }
 
     public static <T> void applySort(LambdaQueryWrapper<T> wrapper) {
-        applySort((QueryWrapper<T>) wrapper);
+        List<Map<String, String>> sortSpecs = SortContext.get();
+        if (sortSpecs == null || sortSpecs.isEmpty() || wrapper == null) return;
+        StringBuilder sb = new StringBuilder(" order by ");
+        for (int i = 0; i < sortSpecs.size(); i++) {
+            if (i > 0) sb.append(", ");
+            Map<String, String> spec = sortSpecs.get(i);
+            String col = spec.get("column");
+            if (!StringUtils.hasText(col)) continue;
+            boolean asc = !"desc".equalsIgnoreCase(spec.get("order"));
+            sb.append(toSnake(col)).append(asc ? " asc" : " desc");
+        }
+        if (sb.length() > 11) wrapper.last(sb.toString());
+    }
+
+    private static String toSnake(String camel) {
+        return camel.replaceAll("([A-Z])", "_$1").toLowerCase();
     }
 }