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

This commit is contained in:
fit2cloud-chenyw
2026-06-08 16:47:42 +08:00
parent 8add59f7d3
commit 4dfcafa4ef
13 changed files with 64 additions and 21 deletions

View File

@@ -7,7 +7,8 @@ i18n_menu.workbranch=Workbench
i18n_menu.visualized=Visualization
i18n_menu.template=Template
i18n_menu.application=Application
i18n_menu.system=System Management
i18n_menu.sys-setting=System Settings
i18n_menu.system=Organization Management Center
i18n_menu.template-market=Template Market
i18n_menu.toolbox=Toolbox
i18n_menu.template-setting=Template Management

View File

@@ -6,7 +6,8 @@ i18n_menu.workbranch=\u5DE5\u4F5C\u53F0
i18n_menu.visualized=\u53EF\u89C6\u5316
i18n_menu.template=\u6A21\u7248
i18n_menu.application=\u5E94\u7528
i18n_menu.system=\u7CFB\u7EDF\u7BA1\u7406
i18n_menu.sys-setting=\u7CFB\u7EDF\u8BBE\u7F6E
i18n_menu.system=\u7EC4\u7EC7\u7BA1\u7406\u4E2D\u5FC3
i18n_menu.template-market=\u6A21\u677F\u5E02\u573A
i18n_menu.toolbox=\u5DE5\u5177\u7BB1
i18n_menu.template-setting=\u6A21\u677F\u7BA1\u7406

View File

@@ -6,7 +6,8 @@ i18n_menu.workbranch=\u5DE5\u4F5C\u81FA
i18n_menu.visualized=\u53EF\u8996\u5316
i18n_menu.template=\u6A21\u7248
i18n_menu.application=\u61C9\u7528
i18n_menu.system=\u7CFB\u7D71\u7BA1\u7406
i18n_menu.sys-setting=\u7CFB\u7EDF\u8BBE\u7F6E
i18n_menu.system=\u7D44\u7E54\u7BA1\u7406\u4E2D\u5FC3
i18n_menu.template-market=\u6A21\u677F\u5E02\u5834
i18n_menu.toolbox=\u5DE5\u5177\u7BB1
i18n_menu.template-setting=\u6A21\u677F\u7BA1\u7406

View File

@@ -1,6 +1,6 @@
import request from '@/config/axios'
export const searchApi = data => request.post({ url: '/org/page/tree', data })
export const searchApi = data => request.get({ url: '/org/page/tree', data })
export const saveApi = data => request.post({ url: '/org/page/create', data })
export const updateApi = data => request.post({ url: '/org/page/edit', data })
export const resourceExistApi = oid => request.get({ url: '/org/resourceExist/' + oid })

View File

@@ -14,6 +14,7 @@ import LangSelector from './LangSelector.vue'
import router from '@/router'
import { useCache } from '@/hooks/web/useCache'
import { useAppearanceStoreWithOut } from '@/store/modules/appearance'
import { usePermissionStore } from '@/store/modules/permission'
import { useRouter } from 'vue-router_2'
const appearanceStore = useAppearanceStoreWithOut()
const navigateBg = computed(() => appearanceStore.getNavigateBg)
@@ -28,6 +29,12 @@ interface LinkItem {
link?: string
method?: string
}
const permissionStore = usePermissionStore()
const showSystem = ref(false)
const initShowSystem = () => {
showSystem.value = permissionStore.getRouters.some(route => route.path === '/sys-setting')
}
const linkList = ref([{ id: 5, label: t('common.about'), method: 'toAbout' }] as LinkItem[])
if (!appearanceStore.getShowAbout) {
linkList.value.splice(0, 1)
@@ -105,7 +112,8 @@ const toSystemCfg = () => {
const kidPath = sysMenu.matched[0].children[0].path
push(`${sysMenu.path}/${kidPath}`)
}
if (uid.value === '1') {
initShowSystem()
if (showSystem.value) {
// linkLoaded([{ id: 4, link: '/sys-setting/parameter', label: t('commons.system_setting') }])
linkLoaded([{ id: 4, label: t('commons.system_setting'), method: 'toSystemCfg' }])
const desktop = wsCache.get('app.desktop')

View File

@@ -19,5 +19,6 @@ public class BasePermissionRequest implements Serializable {
@Schema(description = "资源类型", requiredMode = Schema.RequiredMode.REQUIRED)
private String flag;
private Long oid;
private boolean system;
}

View File

@@ -0,0 +1,25 @@
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.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PermissionOriginFlag implements Serializable {
@Schema(description = "是否根结点")
private boolean root;
@Schema(description = "角色类型编码: 0=普通用户,7=数据分析师,9=组织管理员")
private Integer typeCode = 0;
@JsonSerialize(using= ToStringSerializer.class)
@Schema(description = "顶层目录ID")
private Long topRootDirId;
}

View File

@@ -2,6 +2,7 @@ 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.api.permissions.auth.dto.PermissionOriginFlag;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -28,6 +29,16 @@ public class PermissionOrigin implements Serializable {
private String name;
@Schema(description = "来源类型: 0=user, 1=role, 2=org")
private Integer type;
@Schema(description = "关联权限项")
private List<PermissionItem> permissions;
private PermissionOriginFlag originFlag;
public PermissionOrigin(Long id, String name, Integer type, List<PermissionItem> permissions) {
this.id = id;
this.name = name;
this.type = type;
this.permissions = permissions;
}
}

View File

@@ -13,13 +13,7 @@ public class PermissionVO implements Serializable {
@Serial
private static final long serialVersionUID = 7951267541124410580L;
@Schema(description = "是否根结点")
private boolean root;
@Schema(description = "是否只读")
private boolean readonly;
@Schema(description = "角色类型编码: 0=普通用户,5=数据分析师,9=组织管理员")
private Integer typeCode = 0;
@Schema(description = "直接权限项")
private List<PermissionItem> permissions;
@Schema(description = "关联权限项")
private List<PermissionOrigin> permissionOrigins;

View File

@@ -4,11 +4,11 @@ import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import io.dataease.api.permissions.org.dto.OrgCreator;
import io.dataease.api.permissions.org.dto.OrgEditor;
import io.dataease.api.permissions.org.dto.OrgLazyRequest;
import io.dataease.api.permissions.org.dto.OrgRequest;
import io.dataease.api.permissions.org.vo.*;
import io.dataease.api.permissions.org.vo.LazyTreeVO;
import io.dataease.api.permissions.org.vo.OrgDetailVO;
import io.dataease.api.permissions.org.vo.OrgPageVO;
import io.dataease.auth.DeApiPath;
import io.dataease.auth.DePermit;
import io.dataease.model.KeywordRequest;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
@@ -28,9 +28,9 @@ import static io.dataease.constant.AuthResourceEnum.ORG;
public interface OrgApi {
@Operation(summary = "查询组织树")
@PostMapping("/page/tree")
@GetMapping("/page/tree")
@DePermit("m:read")
List<OrgPageVO> pageTree(@RequestBody OrgRequest request);
List<OrgPageVO> pageTree();
@Operation(summary = "懒加载组织树")
@PostMapping("/page/lazyTree")

View File

@@ -13,7 +13,6 @@ public class CacheConstant {
}
public static class RoleCacheConstant {
public static final String ROLE_MENU_PERS_CACHE = "de_v2_role_menu_pers";
public static final String ROLE_BUSI_PERS_CACHE = "de_v2_role_busi_pers";
public static final String ROLE_BUSI_PERS_INTERACTIVE_CACHE = "de_v2_role_busi_pers_interactive";
}

View File

@@ -11,7 +11,9 @@ import org.hibernate.annotations.Comment;
@Getter
@Setter
@Entity
@Table(name = "per_busi_resource")
@Table(name = "per_busi_resource", indexes = {
@Index(name = "idx_per_busi_resource_org_rt", columnList = "org_id, rt_id")
})
public class PerBusiResource {
@Id
@Comment("资源ID")

View File

@@ -64,5 +64,5 @@ public class V3MenuModel implements Serializable {
*/
private Boolean auth;
private String module;
private boolean plugin;
}