refactor(X-Pack): 对权限体系进行重构-9

This commit is contained in:
fit2cloud-chenyw
2026-05-28 10:54:21 +08:00
parent e568d1a8c7
commit 340db1673b
15 changed files with 190 additions and 109 deletions

View File

@@ -13,6 +13,6 @@ export default {
rewrite: path => path.replace(/^\/api/, 'de2api')
}
},
port: 8080
port: 7070
}
}

View File

@@ -14,17 +14,12 @@ export const resourceTreeApi = (flag: string, isSystem?: boolean) => {
export const menuTreeApi = () => request.get({ url: '/auth/menuResource' })
export const resourcePerApi = data => request.post({ url: '/auth/busiPermission', data })
export const subjectPermissionApi = data => request.post({ url: '/auth/subjectPermission', data })
export const menuPerApi = data => request.post({ url: '/auth/menuPermission', data })
export const subjectPermissionSaveApi = data =>
request.post({ url: '/auth/saveSubjectPermission', data })
export const busiPerSaveApi = data => request.post({ url: '/auth/saveBusiPer', data })
export const menuPerSaveApi = data => request.post({ url: '/auth/saveMenuPer', data })
export const resourcePermissionApi = data => request.post({ url: '/auth/resourcePermission', data })
export const resourceTargetPerApi = data =>
request.post({ url: '/auth/busiTargetPermission', data })
export const menuTargetPerApi = data => request.post({ url: '/auth/menuTargetPermission', data })
export const busiTargetPerSaveApi = data => request.post({ url: '/auth/saveBusiTargetPer', data })
export const menuTargetPerSaveApi = data => request.post({ url: '/auth/saveMenuTargetPer', data })
export const resourcePermissionSaveApi = data =>
request.post({ url: '/auth/saveResourcePermission', data })

22
pom.xml
View File

@@ -10,6 +10,8 @@
<modules>
<module>sdk</module>
<module>de-xpack</module>
<module>core</module>
</modules>
<parent>
<groupId>org.springframework.boot</groupId>
@@ -195,6 +197,26 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.4.0</version>
<executions>
<execution>
<id>remove-core-module</id>
<phase>initialize</phase>
<goals>
<goal>remove-project-artifact</goal>
</goals>
<configuration>
<modules>
<module>de-xpack</module>
<module>core</module>
</modules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

View File

@@ -1,21 +1,24 @@
package io.dataease.api.permissions.auth.api;
import java.util.List;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import io.dataease.api.permissions.auth.dto.*;
import io.dataease.api.permissions.auth.dto.SubjectPermissionEditor;
import io.dataease.api.permissions.auth.dto.BasePermissionRequest;
import io.dataease.api.permissions.auth.dto.BusiResourceRequest;
import io.dataease.api.permissions.auth.dto.ResourcePermissionEditor;
import io.dataease.api.permissions.auth.vo.PermissionVO;
import io.dataease.api.permissions.auth.vo.ResourceItemVO;
import io.dataease.api.permissions.auth.vo.ResourceVO;
import io.swagger.v3.oas.annotations.Hidden;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@Tag(name = "权限管理")
@ApiSupport(order = 885, author = "fit2cloud-someone")
@@ -26,54 +29,66 @@ public interface AuthApi {
@PostMapping("/busiResource")
List<ResourceVO> busiResource(@RequestBody BusiResourceRequest request);
@Operation(summary = "查询对象已授权资源")
@ApiOperationSupport(order = 3)
@PostMapping("/busiPermission")
PermissionVO busiPermission(@RequestBody BusiPermissionRequest request);
@Operation(summary = "查询资源已授权对象")
@ApiOperationSupport(order = 5)
@PostMapping("/busiTargetPermission")
PermissionVO busiTargetPermission(@RequestBody BusiPermissionRequest request);
@Operation(summary = "查询菜单树")
@ApiOperationSupport(order = 2)
@GetMapping("/menuResource")
List<ResourceVO> menuResource();
@Operation(summary = "查询对象已授权菜单")
@ApiOperationSupport(order = 4)
@PostMapping("/menuPermission")
PermissionVO menuPermission(@RequestBody MenuPermissionRequest request);
@Operation(summary = "查询对象已授权资源")
@ApiOperationSupport(order = 3)
@PostMapping("/subjectPermission")
PermissionVO subjectPermission(@RequestBody BasePermissionRequest request);
@Operation(summary = "查询菜单已授权对象")
@ApiOperationSupport(order = 6)
@PostMapping("/menuTargetPermission")
PermissionVO menuTargetPermission(@RequestBody MenuPermissionRequest request);
@Operation(summary = "查询资源已授权对象")
@ApiOperationSupport(order = 5)
@PostMapping("/resourcePermission")
PermissionVO resourcePermission(@RequestBody BasePermissionRequest request);
/*
* @Operation(summary = "查询对象已授权菜单")
*
* @ApiOperationSupport(order = 4)
*
* @PostMapping("/menuPermission")
* PermissionVO menuPermission(@RequestBody MenuPermissionRequest request);
*
* @Operation(summary = "查询菜单已授权对象")
*
* @ApiOperationSupport(order = 6)
*
* @PostMapping("/menuTargetPermission")
* PermissionVO menuTargetPermission(@RequestBody MenuPermissionRequest
* request);
*/
@Operation(summary = "保存资源权限")
@ApiOperationSupport(order = 7)
@PostMapping("/saveBusiPer")
void saveBusiPer(@RequestBody BusiPerEditor editor);
@PostMapping("/saveSubjectPermission")
void saveSubjectPermission(@RequestBody SubjectPermissionEditor editor);
@Operation(summary = "资源维度保存权限")
@ApiOperationSupport(order = 9)
@PostMapping("/saveBusiTargetPer")
void saveBusiTargetPer(@RequestBody BusiTargetPerCreator creator);
@Operation(summary = "保存菜单权限")
@ApiOperationSupport(order = 8)
@PostMapping("/saveMenuPer")
void saveMenuPer(@RequestBody MenuPerEditor editor);
@Operation(summary = "菜单维度保存权限")
@ApiOperationSupport(order = 10)
@PostMapping("/saveMenuTargetPer")
void saveMenuTargetPer(@RequestBody MenuTargetPerCreator creator);
@PostMapping("/saveResourcePermission")
void saveResourcePermission(@RequestBody ResourcePermissionEditor creator);
/*
* @Operation(summary = "保存菜单权限")
*
* @ApiOperationSupport(order = 8)
*
* @PostMapping("/saveMenuPer")
* void saveMenuPer(@RequestBody MenuPerEditor editor);
*
* @Operation(summary = "菜单维度保存权限")
*
* @ApiOperationSupport(order = 10)
*
* @PostMapping("/saveMenuTargetPer")
* void saveMenuTargetPer(@RequestBody MenuTargetPerCreator creator);
*/
@Hidden
@PostMapping("/busiTargetPermissionAll")
List<ResourceItemVO> busiTargetPermissionAll(@RequestBody BusiPermissionRequest request);
List<ResourceItemVO> busiTargetPermissionAll(@RequestBody BasePermissionRequest request);
}

View File

@@ -8,7 +8,7 @@ import java.io.Serializable;
@Schema(description = "权限查询条件")
@Data
public class BusiPermissionRequest implements Serializable {
public class BasePermissionRequest implements Serializable {
@Serial
private static final long serialVersionUID = -2424587989223319563L;

View File

@@ -1,15 +0,0 @@
package io.dataease.api.permissions.auth.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Schema(description = "资源权限构造器")
@Data
public class BusiTargetPerCreator extends MenuTargetPerCreator{
@Schema(description = "类型")
private Integer type;
@Schema(description = "标记")
private String flag;
}

View File

@@ -0,0 +1,19 @@
package io.dataease.api.permissions.auth.dto;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@Data
public class ResourceItemDTO implements Serializable {
@JsonSerialize(using= ToStringSerializer.class)
@Schema(description = "资源ID")
private Long id;
@JsonSerialize(using= ToStringSerializer.class)
@Schema(description = "组织ID")
private Long oid;
}

View File

@@ -0,0 +1,21 @@
package io.dataease.api.permissions.auth.dto;
import io.dataease.api.permissions.auth.vo.BasePermissionItem;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Schema(description = "资源权限构造器")
@Data
public class ResourcePermissionEditor {
@Schema(description = "资源集合")
private List<ResourceItemDTO> resourceList;
@Schema(description = "主体类型")
private Integer type;
@Schema(description = "资源类型标记")
private String flag;
@Schema(description = "权限集合")
private List<BasePermissionItem> permissions;
}

View File

@@ -1,17 +1,19 @@
package io.dataease.api.permissions.auth.dto;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
import io.dataease.api.permissions.auth.vo.PermissionItem;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
@SuppressWarnings("unused")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "业务权限编辑器")
@Data
public class BusiPerEditor extends BusiPermissionRequest implements Serializable {
public class SubjectPermissionEditor extends BasePermissionRequest implements Serializable {
@Serial
private static final long serialVersionUID = 3067994331757489447L;
@Schema(description = "编辑权限节点集合")

View File

@@ -0,0 +1,24 @@
package io.dataease.api.permissions.auth.vo;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
@Data
public class BasePermissionItem implements Serializable {
@Serial
private static final long serialVersionUID = -6537851979745319692L;
@JsonSerialize(using = ToStringSerializer.class)
@Schema(description = "ID")
private Long id;
@Schema(description = "权重")
private int weight;
@Schema(description = "独立权重")
private int ext;
}

View File

@@ -3,28 +3,19 @@ package io.dataease.api.permissions.auth.vo;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.*;
import java.io.Serial;
import java.io.Serializable;
@EqualsAndHashCode(callSuper = true)
@Schema(description = "权限项")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class PermissionItem implements Serializable {
public class PermissionItem extends BasePermissionItem implements Serializable {
@Serial
private static final long serialVersionUID = -6537851979745319692L;
@JsonSerialize(using= ToStringSerializer.class)
@Schema(description = "ID")
private Long id;
@Schema(description = "权重")
private int weight;
@Schema(description = "独立权重")
private int ext;
@JsonSerialize(using = ToStringSerializer.class)
@Schema(description = "组织ID")
private Long oid;
}

View File

@@ -1,15 +1,16 @@
package io.dataease.api.permissions.auth.vo;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.dataease.model.TreeResultModel;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.dataease.model.TreeResultModel;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(description = "资源结点")
public class ResourceVO implements TreeResultModel<ResourceVO>, Serializable {
@@ -27,4 +28,7 @@ public class ResourceVO implements TreeResultModel<ResourceVO>, Serializable {
private boolean leaf = false;
@Schema(description = "额外标识")
private Integer extraFlag = 0;
@JsonSerialize(using = ToStringSerializer.class)
@Schema(description = "组织ID")
private Long oid;
}

View File

@@ -1,18 +1,13 @@
package io.dataease.constant;
import lombok.Getter;
@Getter
public enum BusiResourceEnum {
PANEL(1), SCREEN(2), DATASET(3), DATASOURCE(4), DATA_FILLING(8), SPREADSHEET(10);
MENU(0), PANEL(1), SCREEN(2), DATASET(3), DATASOURCE(4), DATA_FILLING(8), SPREADSHEET(10);
private int flag;
public int getFlag() {
return flag;
}
public void setFlag(int flag) {
this.flag = flag;
}
private final int flag;
BusiResourceEnum(int flag) {
this.flag = flag;

View File

@@ -63,6 +63,12 @@ public class PerBusiResource {
@Column(name = "extra_flag1", nullable = false)
private Integer extraFlag1;
@NotNull
@Comment("是否组织根目录(随组织生命周期)")
@ColumnDefault("false")
@Column(name = "org_root", nullable = false)
private Boolean orgRoot = false;
@NotNull
@Comment("创建时间")
@ColumnDefault("0")

View File

@@ -1,19 +1,19 @@
package io.dataease.model;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "业务资源结点")
@Data
public class BusiNodeVO implements TreeResultModel<BusiNodeVO>, Serializable {
@Serial
private static final long serialVersionUID = 8191619596741217494L;
@@ -36,4 +36,6 @@ public class BusiNodeVO implements TreeResultModel<BusiNodeVO>, Serializable {
private List<BusiNodeVO> children;
@Schema(description = "独立权重")
private Integer ext;
@Schema(description = "组织根节点")
private boolean orgRoot;
}