This commit is contained in:
Chuck1sn
2025-05-14 10:16:48 +08:00
commit 3cd59337e7
220 changed files with 23768 additions and 0 deletions

View File

@@ -0,0 +1,129 @@
package com.zl.mjga.dto;
import static org.jooq.impl.DSL.field;
import static org.jooq.impl.DSL.name;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import lombok.*;
import org.apache.commons.lang3.StringUtils;
import org.jooq.SortField;
import org.jooq.SortOrder;
@Data
@NoArgsConstructor
public class PageRequestDto {
public static final String REGEX = "^[a-zA-Z][a-zA-Z0-9_]*$";
public static final String SPACE = " ";
private long page;
private long size;
private Map<String, Direction> sortBy = new HashMap<>();
public PageRequestDto(int page, int size) {
checkPageAndSize(page, size);
this.page = page;
this.size = size;
}
public PageRequestDto(int page, int size, Map<String, Direction> sortBy) {
checkPageAndSize(page, size);
this.page = page;
this.size = size;
this.sortBy = sortBy;
}
@AllArgsConstructor
@Getter
public enum Direction {
ASC("ASC"),
DESC("DESC");
private final String keyword;
public static Direction fromString(String value) {
try {
return Direction.valueOf(value.toUpperCase(Locale.US));
} catch (Exception e) {
throw new IllegalArgumentException(
String.format(
"Invalid value '%s' for orders given; Has to be either 'desc' or 'asc' (case"
+ " insensitive)",
value),
e);
}
}
}
public static PageRequestDto of(int page, int size) {
return new PageRequestDto(page, size);
}
public static PageRequestDto of(int page, int size, Map<String, Direction> sortBy) {
return new PageRequestDto(page, size, sortBy);
}
public List<SortField<Object>> getSortFields() {
return sortBy.entrySet().stream()
.map(
(entry) ->
field(name(entry.getKey())).sort(SortOrder.valueOf(entry.getValue().getKeyword())))
.toList();
}
private void checkPageAndSize(int page, int size) {
if (page < 0) {
throw new IllegalArgumentException("Page index must not be less than zero");
}
if (size < 1) {
throw new IllegalArgumentException("Page size must not be less than one");
}
}
public long getOffset() {
if (page == 0) {
return 0;
} else {
return (page - 1) * size;
}
}
public void setSortBy(String sortBy) {
this.sortBy = convertSortBy(sortBy);
}
private Map<String, Direction> convertSortBy(String sortBy) {
Map<String, Direction> result = new HashMap<>();
if (StringUtils.isEmpty(sortBy)) {
return result;
}
for (String fieldSpaceDirection : sortBy.split(",")) {
String[] fieldDirectionArray = fieldSpaceDirection.split(SPACE);
if (fieldDirectionArray.length != 2) {
throw new IllegalArgumentException(
String.format(
"Invalid sortBy field format %s. The expect format is [col1 asc,col2 desc]",
sortBy));
}
String field = fieldDirectionArray[0];
if (!verifySortField(field)) {
throw new IllegalArgumentException(
String.format("Invalid Sort field %s. Sort field must match %s", sortBy, REGEX));
}
String direction = fieldDirectionArray[1];
result.put(field, Direction.fromString(direction));
}
return result;
}
private static boolean verifySortField(String sortField) {
Pattern pattern = Pattern.compile(REGEX);
Matcher matcher = pattern.matcher(sortField);
return matcher.matches();
}
}

View File

@@ -0,0 +1,22 @@
package com.zl.mjga.dto;
import jakarta.annotation.Nullable;
import lombok.*;
@Data
public class PageResponseDto<T> {
private long total;
private T data;
public PageResponseDto(long total, @Nullable T data) {
if (total < 0) {
throw new IllegalArgumentException("total must not be less than zero");
}
this.total = total;
this.data = data;
}
public static <T> PageResponseDto<T> empty() {
return new PageResponseDto<>(0, null);
}
}

View File

@@ -0,0 +1,6 @@
package com.zl.mjga.dto.department;
import jakarta.validation.constraints.NotNull;
import java.util.List;
public record DepartmentBindDto(@NotNull Long userId, @NotNull List<Long> departmentIds) {}

View File

@@ -0,0 +1,16 @@
package com.zl.mjga.dto.department;
import com.zl.mjga.model.urp.BindState;
import lombok.*;
@Getter
@Setter
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class DepartmentQueryDto {
private Long userId;
private String name;
private Boolean enable;
private BindState bindState = BindState.ALL;
}

View File

@@ -0,0 +1,20 @@
package com.zl.mjga.dto.department;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class DepartmentRespDto {
@NotNull private Long id;
@NotEmpty private String name;
private Long parentId;
private String parentName;
private Boolean isBound;
}

View File

@@ -0,0 +1,17 @@
package com.zl.mjga.dto.department;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.*;
@Getter
@Setter
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class DepartmentUpsertDto {
private Long id;
@NotEmpty private String name;
private Long parentId;
@NotNull private Boolean enable;
}

View File

@@ -0,0 +1,8 @@
package com.zl.mjga.dto.permission;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import java.util.List;
public record PermissionBindDto(
@NotNull Long roleId, @NotEmpty(message = "权限不能为空") List<Long> permissionIds) {}

View File

@@ -0,0 +1,6 @@
package com.zl.mjga.dto.position;
import jakarta.validation.constraints.NotNull;
import java.util.List;
public record PositionBindDto(@NotNull Long userId, @NotNull List<Long> positionIds) {}

View File

@@ -0,0 +1,15 @@
package com.zl.mjga.dto.position;
import com.zl.mjga.model.urp.BindState;
import lombok.*;
@Getter
@Setter
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class PositionQueryDto {
private Long userId;
private String name;
private BindState bindState = BindState.ALL;
}

View File

@@ -0,0 +1,19 @@
package com.zl.mjga.dto.position;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class PositionRespDto {
@NotNull private Long id;
@NotEmpty private String name;
private Long parentId;
private Boolean isBound;
}

View File

@@ -0,0 +1,17 @@
package com.zl.mjga.dto.position;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.*;
@Getter
@Setter
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class PositionUpsertDto {
private Long id;
@NotEmpty private String name;
private Long parentId;
@NotNull private Boolean enable;
}

View File

@@ -0,0 +1,8 @@
package com.zl.mjga.dto.role;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import java.util.List;
public record RoleBindDto(
@NotNull(message = "用户不能为空") Long userId, @NotEmpty(message = "角色不能为空") List<Long> roleIds) {}

View File

@@ -0,0 +1,5 @@
package com.zl.mjga.dto.scheduler;
import jakarta.validation.constraints.NotEmpty;
public record JobKeyDto(@NotEmpty String name, @NotEmpty String group) {}

View File

@@ -0,0 +1,26 @@
package com.zl.mjga.dto.scheduler;
import java.util.Map;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class JobTriggerDto {
private String name;
private String group;
private String className;
private Map jobDataMap;
private String triggerName;
private String triggerGroup;
private String schedulerType;
private String cronExpression;
private long startTime;
private long endTime;
private long nextFireTime;
private long previousFireTime;
private String triggerState;
private Map triggerJobDataMap;
}

View File

@@ -0,0 +1,3 @@
package com.zl.mjga.dto.scheduler;
public record QueryDto(String name) {}

View File

@@ -0,0 +1,21 @@
package com.zl.mjga.dto.scheduler;
import java.util.Map;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TriggerDto {
private String name;
private String group;
private String schedulerType;
private String cronExpression;
private long startTime;
private long endTime;
private long nextFireTime;
private long previousFireTime;
private Map jobDataMap;
}

View File

@@ -0,0 +1,5 @@
package com.zl.mjga.dto.scheduler;
import jakarta.validation.constraints.NotEmpty;
public record TriggerKeyDto(@NotEmpty String name, @NotEmpty String group) {}

View File

@@ -0,0 +1,16 @@
package com.zl.mjga.dto.sign;
import jakarta.validation.constraints.NotEmpty;
import lombok.*;
@Getter
@Setter
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class SignInDto {
@NotEmpty private String username;
@NotEmpty private String password;
}

View File

@@ -0,0 +1,15 @@
package com.zl.mjga.dto.sign;
import jakarta.validation.constraints.NotEmpty;
import lombok.*;
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class SignUpDto {
@NotEmpty private String username;
@NotEmpty private String password;
}

View File

@@ -0,0 +1,18 @@
package com.zl.mjga.dto.urp;
import com.zl.mjga.model.urp.BindState;
import java.util.List;
import lombok.*;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class PermissionQueryDto {
private Long roleId;
private Long permissionId;
private String permissionCode;
private String permissionName;
private List<Long> permissionIdList;
private BindState bindState = BindState.ALL;
}

View File

@@ -0,0 +1,14 @@
package com.zl.mjga.dto.urp;
import lombok.*;
@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
public class PermissionRespDto {
private Long id;
private String code;
private String name;
private Boolean isBound;
}

View File

@@ -0,0 +1,15 @@
package com.zl.mjga.dto.urp;
import jakarta.validation.constraints.NotEmpty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class PermissionUpsertDto {
private Long id;
@NotEmpty private String code;
@NotEmpty private String name;
}

View File

@@ -0,0 +1,17 @@
package com.zl.mjga.dto.urp;
import java.util.LinkedList;
import java.util.List;
import lombok.*;
@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
public class RoleDto {
private Long id;
private String code;
private String name;
private Boolean isBound;
@Builder.Default List<PermissionRespDto> permissions = new LinkedList<>();
}

View File

@@ -0,0 +1,18 @@
package com.zl.mjga.dto.urp;
import com.zl.mjga.model.urp.BindState;
import java.util.List;
import lombok.*;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class RoleQueryDto {
private Long userId;
private Long roleId;
private String roleCode;
private String roleName;
private List<Long> roleIdList;
private BindState bindState = BindState.ALL;
}

View File

@@ -0,0 +1,15 @@
package com.zl.mjga.dto.urp;
import jakarta.validation.constraints.NotEmpty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class RoleUpsertDto {
private Long id;
@NotEmpty private String code;
@NotEmpty private String name;
}

View File

@@ -0,0 +1,10 @@
package com.zl.mjga.dto.urp;
import lombok.*;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class UserQueryDto {
private String username;
}

View File

@@ -0,0 +1,34 @@
package com.zl.mjga.dto.urp;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.time.OffsetDateTime;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import lombok.*;
@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
public class UserRolePermissionDto {
private Long id;
private String username;
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private String password;
private Boolean enable;
@Builder.Default private List<RoleDto> roles = new LinkedList<>();
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private OffsetDateTime createTime;
public Set<PermissionRespDto> getPermissions() {
return roles.stream()
.flatMap((roleDto) -> roleDto.getPermissions().stream())
.collect(Collectors.toSet());
}
}

View File

@@ -0,0 +1,17 @@
package com.zl.mjga.dto.urp;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class UserUpsertDto {
private Long id;
@NotEmpty private String username;
private String password;
@NotNull private Boolean enable;
}