diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/AssetDataController.http b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/AssetDataController.http index e69de29b..4d010c3a 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/AssetDataController.http +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/AssetDataController.http @@ -0,0 +1,4 @@ +### 查询已授权的主机分组 +GET {{baseUrl}}/asset/authorized-data/host-group +Authorization: {{token}} + diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/HostGroupController.http b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/HostGroupController.http index 13f7d037..7f1749df 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/HostGroupController.http +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/HostGroupController.http @@ -41,3 +41,23 @@ Authorization: {{token}} DELETE {{baseUrl}}/asset/host-group/delete?id=1 Authorization: {{token}} + +### 获取已授权的分组 +GET {{baseUrl}}/asset/host-group/get-authorized-group?userId=1 +Authorization: {{token}} + + +### 主机分组授权 +PUT {{baseUrl}}/asset/host-group/grant +Content-Type: application/json +Authorization: {{token}} + +{ + "userId": 10, + "groupIdList": [ + 3, + 5 + ] +} + +### diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/HostGroupController.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/HostGroupController.java index 61c733e7..204d322c 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/HostGroupController.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/HostGroupController.java @@ -103,14 +103,11 @@ public class HostGroupController { return HttpWrapper.ok(); } - // TODO 日志 host-group:grant - // TODO 菜单 asset:host-group:grant - @IgnoreLog(IgnoreLogMode.RET) @GetMapping("/get-authorized-group") @Operation(summary = "获取已授权的分组") @PreAuthorize("@ss.hasPermission('asset:host-group:grant')") - public List getAuthorizedHostGroup(@RequestParam HostGroupGrantQueryRequest request) { + public List getAuthorizedHostGroup(HostGroupGrantQueryRequest request) { return hostGroupService.getAuthorizedHostGroup(request); } diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/host/HostGroupGrantQueryRequest.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/host/HostGroupGrantQueryRequest.java index 069357a4..1163b4d0 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/host/HostGroupGrantQueryRequest.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/host/HostGroupGrantQueryRequest.java @@ -9,7 +9,7 @@ import lombok.NoArgsConstructor; import java.io.Serializable; /** - * 主机分组 查询请求对象 + * 主机分组授权 查询请求对象 * * @author Jiahang Li * @version 1.0.0 @@ -19,7 +19,7 @@ import java.io.Serializable; @Builder @NoArgsConstructor @AllArgsConstructor -@Schema(name = "HostGroupQueryRequest", description = "主机分组 查询请求对象") +@Schema(name = "HostGroupQueryRequest", description = "主机分组授权 查询请求对象") public class HostGroupGrantQueryRequest implements Serializable { @Schema(description = "用户id") diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/HostGroupServiceImpl.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/HostGroupServiceImpl.java index abebd2eb..d56bf0bc 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/HostGroupServiceImpl.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/HostGroupServiceImpl.java @@ -19,10 +19,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; /** * 主机分组服务 实现类 @@ -155,7 +152,7 @@ public class HostGroupServiceImpl implements HostGroupService { // 构建已授权的分组 List relNodes = new ArrayList<>(); TreeUtils.getAllNodes(dataGroup, authorizedGroupIdList, relNodes); - dataGroup = relNodes; + dataGroup = new ArrayList<>(new HashSet<>(relNodes)); } // 查询分组引用 Map> groupRel = dataGroupRelApi.getGroupRelList(DataGroupTypeEnum.HOST); diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/DataPermissionServiceImpl.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/DataPermissionServiceImpl.java index de6f4095..3427b017 100644 --- a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/DataPermissionServiceImpl.java +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/DataPermissionServiceImpl.java @@ -78,12 +78,12 @@ public class DataPermissionServiceImpl implements DataPermissionService { Long roleId = request.getRoleId(); String type = request.getType(); // 删除 + LambdaQueryWrapper wrapper = dataPermissionDAO.wrapper() + .eq(DataPermissionDO::getUserId, userId) + .eq(DataPermissionDO::getRoleId, roleId) + .eq(DataPermissionDO::getType, type); + dataPermissionDAO.delete(wrapper); if (Lists.isEmpty(request.getRelIdList())) { - LambdaQueryWrapper wrapper = dataPermissionDAO.wrapper() - .eq(DataPermissionDO::getUserId, userId) - .eq(DataPermissionDO::getRoleId, roleId) - .eq(DataPermissionDO::getType, type); - dataPermissionDAO.delete(wrapper); return; } // 新增 diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/resources/mapper/SystemRoleMapper.xml b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/resources/mapper/SystemRoleMapper.xml index 46234b49..6f5442eb 100644 --- a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/resources/mapper/SystemRoleMapper.xml +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/resources/mapper/SystemRoleMapper.xml @@ -23,9 +23,9 @@ diff --git a/orion-ops-ui/src/api/asset/asset-data.ts b/orion-ops-ui/src/api/asset/asset-data.ts new file mode 100644 index 00000000..bdd20fb3 --- /dev/null +++ b/orion-ops-ui/src/api/asset/asset-data.ts @@ -0,0 +1,9 @@ +import type { HostGroupQueryResponse } from '@/api/asset/host-group'; +import axios from 'axios'; + +/** + * 查询已授权的主机分组 + */ +export function getAuthorizedHostGroup() { + return axios.get>('/asset/authorized-data/host-group'); +} diff --git a/orion-ops-ui/src/api/asset/host-group.ts b/orion-ops-ui/src/api/asset/host-group.ts index 20c470a1..7e41d272 100644 --- a/orion-ops-ui/src/api/asset/host-group.ts +++ b/orion-ops-ui/src/api/asset/host-group.ts @@ -30,8 +30,10 @@ export interface HostGroupMoveRequest { */ export interface HostGroupQueryResponse { key: number; + parentId: number; title: string; children: Array; + hosts: Array; } /** @@ -42,6 +44,21 @@ export interface HostGroupRelUpdateRequest { hostIdList?: Array; } +/** + * 主机分组授权 查询请求对象 + */ +export interface HostGroupGrantQueryRequest { + userId?: number; + roleId?: number; +} + +/** + * 主机分组 授权请求对象 + */ +export interface HostGroupGrantRequest extends HostGroupGrantQueryRequest { + groupIdList?: Array; +} + /** * 创建主机分组 */ @@ -90,3 +107,17 @@ export function getHostGroupRelList(groupId: number) { export function updateHostGroupRel(request: HostGroupRelUpdateRequest) { return axios.put('/asset/host-group/update-rel', request); } + +/** + * 获取已授权的分组 + */ +export function getAuthorizedHostGroup(params: HostGroupGrantQueryRequest) { + return axios.get>('/asset/host-group/get-authorized-group', { params }); +} + +/** + * 主机分组授权 + */ +export function grantHostGroup(request: HostGroupGrantRequest) { + return axios.put('/asset/host-group/grant', request); +} diff --git a/orion-ops-ui/src/components/app/footer/index.vue b/orion-ops-ui/src/components/app/footer/index.vue index e07b9539..b67b7636 100644 --- a/orion-ops-ui/src/components/app/footer/index.vue +++ b/orion-ops-ui/src/components/app/footer/index.vue @@ -21,10 +21,10 @@ diff --git a/orion-ops-ui/src/views/asset/host-group/components/host-group-view.vue b/orion-ops-ui/src/views/asset/host-group/components/host-group-view.vue index fdea2faa..5c2eff82 100644 --- a/orion-ops-ui/src/views/asset/host-group/components/host-group-view.vue +++ b/orion-ops-ui/src/views/asset/host-group/components/host-group-view.vue @@ -1,25 +1,34 @@