diff --git a/core/core-backend/src/main/resources/i18n/core_en_US.properties b/core/core-backend/src/main/resources/i18n/core_en_US.properties index 744120cc8f..b29f6d9f2d 100644 --- a/core/core-backend/src/main/resources/i18n/core_en_US.properties +++ b/core/core-backend/src/main/resources/i18n/core_en_US.properties @@ -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 diff --git a/core/core-backend/src/main/resources/i18n/core_zh_CN.properties b/core/core-backend/src/main/resources/i18n/core_zh_CN.properties index 700c70547b..ecd0034ce4 100644 --- a/core/core-backend/src/main/resources/i18n/core_zh_CN.properties +++ b/core/core-backend/src/main/resources/i18n/core_zh_CN.properties @@ -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 diff --git a/core/core-backend/src/main/resources/i18n/core_zh_TW.properties b/core/core-backend/src/main/resources/i18n/core_zh_TW.properties index 408e69f5b3..746f5a2a6f 100644 --- a/core/core-backend/src/main/resources/i18n/core_zh_TW.properties +++ b/core/core-backend/src/main/resources/i18n/core_zh_TW.properties @@ -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 diff --git a/core/core-frontend/src/api/org.ts b/core/core-frontend/src/api/org.ts index d030867b11..023f86a065 100644 --- a/core/core-frontend/src/api/org.ts +++ b/core/core-frontend/src/api/org.ts @@ -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 }) diff --git a/core/core-frontend/src/layout/components/AccountOperator.vue b/core/core-frontend/src/layout/components/AccountOperator.vue index e4732dfef3..48edf7d131 100644 --- a/core/core-frontend/src/layout/components/AccountOperator.vue +++ b/core/core-frontend/src/layout/components/AccountOperator.vue @@ -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') diff --git a/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/auth/dto/BasePermissionRequest.java b/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/auth/dto/BasePermissionRequest.java index dec141060a..224a1b33e1 100644 --- a/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/auth/dto/BasePermissionRequest.java +++ b/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/auth/dto/BasePermissionRequest.java @@ -19,5 +19,6 @@ public class BasePermissionRequest implements Serializable { @Schema(description = "资源类型", requiredMode = Schema.RequiredMode.REQUIRED) private String flag; + private Long oid; private boolean system; } diff --git a/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/auth/dto/PermissionOriginFlag.java b/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/auth/dto/PermissionOriginFlag.java new file mode 100644 index 0000000000..6ef81f484e --- /dev/null +++ b/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/auth/dto/PermissionOriginFlag.java @@ -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; +} diff --git a/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/auth/vo/PermissionOrigin.java b/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/auth/vo/PermissionOrigin.java index 7d388edd57..a153fff60c 100644 --- a/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/auth/vo/PermissionOrigin.java +++ b/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/auth/vo/PermissionOrigin.java @@ -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 permissions; + + private PermissionOriginFlag originFlag; + + + public PermissionOrigin(Long id, String name, Integer type, List permissions) { + this.id = id; + this.name = name; + this.type = type; + this.permissions = permissions; + } } diff --git a/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/auth/vo/PermissionVO.java b/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/auth/vo/PermissionVO.java index c1fb6928c3..b664a0a99d 100644 --- a/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/auth/vo/PermissionVO.java +++ b/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/auth/vo/PermissionVO.java @@ -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 permissions; @Schema(description = "关联权限项") private List permissionOrigins; diff --git a/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/org/api/OrgApi.java b/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/org/api/OrgApi.java index 8896277f3a..b3832ab39f 100644 --- a/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/org/api/OrgApi.java +++ b/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/org/api/OrgApi.java @@ -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 pageTree(@RequestBody OrgRequest request); + List pageTree(); @Operation(summary = "懒加载组织树") @PostMapping("/page/lazyTree") diff --git a/sdk/common/src/main/java/io/dataease/constant/CacheConstant.java b/sdk/common/src/main/java/io/dataease/constant/CacheConstant.java index 84a6cab477..3e4e784369 100644 --- a/sdk/common/src/main/java/io/dataease/constant/CacheConstant.java +++ b/sdk/common/src/main/java/io/dataease/constant/CacheConstant.java @@ -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"; } diff --git a/sdk/common/src/main/java/io/dataease/dao/auto/entity/PerBusiResource.java b/sdk/common/src/main/java/io/dataease/dao/auto/entity/PerBusiResource.java index a6bcb842cc..ad1e430280 100644 --- a/sdk/common/src/main/java/io/dataease/dao/auto/entity/PerBusiResource.java +++ b/sdk/common/src/main/java/io/dataease/dao/auto/entity/PerBusiResource.java @@ -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") diff --git a/sdk/common/src/main/java/io/dataease/model/V3MenuModel.java b/sdk/common/src/main/java/io/dataease/model/V3MenuModel.java index 13ad7c7892..75a0597fcf 100644 --- a/sdk/common/src/main/java/io/dataease/model/V3MenuModel.java +++ b/sdk/common/src/main/java/io/dataease/model/V3MenuModel.java @@ -64,5 +64,5 @@ public class V3MenuModel implements Serializable { */ private Boolean auth; - private String module; + private boolean plugin; }