add field order

This commit is contained in:
ccmjga
2025-05-18 16:55:50 +08:00
parent 0226e329d4
commit 94a69d999b
11 changed files with 143 additions and 34 deletions

View File

@@ -1,8 +1,10 @@
package com.zl.mjga.dto;
import static com.zl.mjga.utils.StringCaseUtils.convertCamelCaseToSnake;
import static org.jooq.impl.DSL.field;
import static org.jooq.impl.DSL.name;
import io.swagger.v3.oas.annotations.media.Schema;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -17,11 +19,12 @@ public class PageRequestDto {
public static final String REGEX = "^[a-zA-Z][a-zA-Z0-9_]*$";
public static final String SPACE = " ";
public static final String COLON = ":";
private long page;
private long size;
@Schema(description = "排序字段", example = "name:asc,age:desc", type = "string")
private Map<String, Direction> sortBy = new HashMap<>();
public PageRequestDto(int page, int size) {
@@ -68,10 +71,12 @@ public class PageRequestDto {
}
public List<SortField<Object>> getSortFields() {
List<SortField<Object>> sortFields = sortBy.entrySet().stream()
List<SortField<Object>> sortFields =
sortBy.entrySet().stream()
.map(
(entry) ->
field(name(entry.getKey())).sort(SortOrder.valueOf(entry.getValue().getKeyword())))
(entry) ->
field(name(convertCamelCaseToSnake(entry.getKey())))
.sort(SortOrder.valueOf(entry.getValue().getKeyword())))
.toList();
if (sortFields.isEmpty()) {
return List.of(field(name("id")).sort(SortOrder.ASC));
@@ -108,7 +113,7 @@ public class PageRequestDto {
return result;
}
for (String fieldSpaceDirection : sortBy.split(",")) {
String[] fieldDirectionArray = fieldSpaceDirection.split(SPACE);
String[] fieldDirectionArray = fieldSpaceDirection.split(COLON);
if (fieldDirectionArray.length != 2) {
throw new IllegalArgumentException(
String.format(

View File

@@ -11,8 +11,7 @@ import lombok.NoArgsConstructor;
@Data
public class UserUpsertDto {
private Long id;
@NotEmpty
private String username;
@NotEmpty private String username;
private String password;
@NotNull private Boolean enable;
}

View File

@@ -3,7 +3,6 @@ package com.zl.mjga.repository;
import static org.jooq.generated.mjga.tables.Permission.PERMISSION;
import static org.jooq.generated.mjga.tables.Role.ROLE;
import static org.jooq.impl.DSL.*;
import static org.jooq.impl.DSL.noField;
import com.zl.mjga.dto.PageRequestDto;
import com.zl.mjga.dto.urp.PermissionQueryDto;

View File

@@ -2,7 +2,6 @@ package com.zl.mjga.repository;
import static org.jooq.generated.mjga.Tables.*;
import static org.jooq.impl.DSL.noCondition;
import static org.jooq.impl.DSL.noField;
import com.zl.mjga.dto.PageRequestDto;
import com.zl.mjga.dto.position.PositionQueryDto;

View File

@@ -0,0 +1,15 @@
package com.zl.mjga.utils;
public class StringCaseUtils {
public static String convertCamelCaseToSnake(String input) {
StringBuilder result = new StringBuilder();
for (char c : input.toCharArray()) {
if (Character.isUpperCase(c)) {
result.append("_").append(Character.toLowerCase(c));
} else {
result.append(c);
}
}
return result.toString();
}
}