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 06e679de..25375825 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 @@ -5,17 +5,13 @@ import com.orion.ops.framework.biz.operator.log.core.annotation.OperatorLog; import com.orion.ops.framework.log.core.annotation.IgnoreLog; import com.orion.ops.framework.log.core.enums.IgnoreLogMode; import com.orion.ops.framework.web.core.annotation.RestWrapper; -import com.orion.ops.module.asset.convert.HostGroupConvert; import com.orion.ops.module.asset.define.operator.HostGroupOperatorType; import com.orion.ops.module.asset.entity.request.host.HostGroupRelUpdateRequest; import com.orion.ops.module.asset.entity.vo.HostGroupTreeVO; -import com.orion.ops.module.infra.api.DataGroupApi; -import com.orion.ops.module.infra.api.DataGroupRelApi; +import com.orion.ops.module.asset.service.HostGroupService; import com.orion.ops.module.infra.entity.dto.data.DataGroupCreateDTO; -import com.orion.ops.module.infra.entity.dto.data.DataGroupDTO; import com.orion.ops.module.infra.entity.dto.data.DataGroupMoveDTO; import com.orion.ops.module.infra.entity.dto.data.DataGroupRenameDTO; -import com.orion.ops.module.infra.enums.DataGroupTypeEnum; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -45,67 +41,63 @@ import java.util.Set; public class HostGroupController { @Resource - private DataGroupApi dataGroupApi; - - @Resource - private DataGroupRelApi dataGroupRelApi; + private HostGroupService hostGroupService; @OperatorLog(HostGroupOperatorType.CREATE) @PostMapping("/create") - @Operation(summary = "创建主机分组") + @Operation(summary = "创建主机分组 - 管理") @PreAuthorize("@ss.hasPermission('asset:host-group:create')") - public Long updateGroupHost(@Validated @RequestBody DataGroupCreateDTO request) { - return dataGroupApi.createDataGroup(DataGroupTypeEnum.HOST, request); + public Long createHostGroup(@Validated @RequestBody DataGroupCreateDTO request) { + return hostGroupService.createHostGroup(request); } @IgnoreLog(IgnoreLogMode.RET) @GetMapping("/tree") - @Operation(summary = "查询主机分组") + @Operation(summary = "查询主机分组 - 管理") @PreAuthorize("@ss.hasPermission('asset:host-group:query')") - public List queryHostGroup() { - List rows = dataGroupApi.getDataGroupTree(DataGroupTypeEnum.HOST); - return HostGroupConvert.MAPPER.toList(rows); + public List queryHostGroupTree() { + return hostGroupService.queryHostGroupTree(); } @OperatorLog(HostGroupOperatorType.RENAME) @PutMapping("/rename") - @Operation(summary = "修改名称") + @Operation(summary = "修改名称 - 管理") @PreAuthorize("@ss.hasPermission('asset:host-group:update')") public Integer updateHostGroupName(@Validated @RequestBody DataGroupRenameDTO request) { - return dataGroupApi.renameDataGroup(request); + return hostGroupService.updateHostGroupName(request); } @OperatorLog(HostGroupOperatorType.MOVE) @PutMapping("/move") - @Operation(summary = "移动位置") + @Operation(summary = "移动位置 - 管理") @PreAuthorize("@ss.hasPermission('asset:host-group:update')") public Integer moveHostGroup(@Validated @RequestBody DataGroupMoveDTO request) { - return dataGroupApi.moveDataGroup(request); + return hostGroupService.moveHostGroup(request); } @OperatorLog(HostGroupOperatorType.DELETE) @DeleteMapping("/delete") - @Operation(summary = "删除主机分组") + @Operation(summary = "删除主机分组 - 管理") @PreAuthorize("@ss.hasPermission('asset:host-group:delete')") public Integer deleteHostGroup(@RequestParam("id") Long id) { - return dataGroupApi.deleteDataGroupById(id); + return hostGroupService.deleteHostGroup(id); } @IgnoreLog(IgnoreLogMode.RET) @GetMapping("/rel-list") - @Operation(summary = "查询分组主机") + @Operation(summary = "查询分组内主机 - 管理") @Parameter(name = "groupId", description = "groupId", required = true) @PreAuthorize("@ss.hasPermission('asset:host-group:query')") public Set queryHostGroupRel(@RequestParam("groupId") Long groupId) { - return dataGroupRelApi.getGroupRelIdByGroupId(DataGroupTypeEnum.HOST, groupId); + return hostGroupService.queryHostGroupRel(groupId); } @OperatorLog(HostGroupOperatorType.UPDATE_REL) @PostMapping("/update-rel") - @Operation(summary = "修改分组主机") + @Operation(summary = "修改分组内主机 - 管理") @PreAuthorize("@ss.hasPermission('asset:host:update')") - public HttpWrapper updateGroupHost(@Validated @RequestBody HostGroupRelUpdateRequest request) { - dataGroupRelApi.updateGroupRel(request.getGroupId(), request.getHostIdList()); + public HttpWrapper updateHostGroupRel(@Validated @RequestBody HostGroupRelUpdateRequest request) { + hostGroupService.updateHostGroupRel(request); return HttpWrapper.ok(); } diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/HostGroupService.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/HostGroupService.java new file mode 100644 index 00000000..6eb85dd8 --- /dev/null +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/HostGroupService.java @@ -0,0 +1,75 @@ +package com.orion.ops.module.asset.service; + +import com.orion.ops.module.asset.entity.request.host.HostGroupRelUpdateRequest; +import com.orion.ops.module.asset.entity.vo.HostGroupTreeVO; +import com.orion.ops.module.infra.entity.dto.data.DataGroupCreateDTO; +import com.orion.ops.module.infra.entity.dto.data.DataGroupMoveDTO; +import com.orion.ops.module.infra.entity.dto.data.DataGroupRenameDTO; + +import java.util.List; +import java.util.Set; + +/** + * 主机分组服务 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023/11/23 10:59 + */ +public interface HostGroupService { + + /** + * 创建主机分组 + * + * @param request request + * @return id + */ + Long createHostGroup(DataGroupCreateDTO request); + + /** + * 查询主机分组树 + * + * @return tree + */ + List queryHostGroupTree(); + + /** + * 更新主机分组名称 + * + * @param request request + * @return effect + */ + Integer updateHostGroupName(DataGroupRenameDTO request); + + /** + * 移动主机分组 + * + * @param request request + * @return effect + */ + Integer moveHostGroup(DataGroupMoveDTO request); + + /** + * 删除主机分组 + * + * @param id id + * @return effect + */ + Integer deleteHostGroup(Long id); + + /** + * 查询主机分组内主机 + * + * @param groupId groupId + * @return hostId + */ + Set queryHostGroupRel(Long groupId); + + /** + * 修改主机分组内主机 + * + * @param request request + */ + void updateHostGroupRel(HostGroupRelUpdateRequest request); + +} 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 new file mode 100644 index 00000000..bdc6228e --- /dev/null +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/HostGroupServiceImpl.java @@ -0,0 +1,83 @@ +package com.orion.ops.module.asset.service.impl; + +import com.orion.ops.module.asset.convert.HostGroupConvert; +import com.orion.ops.module.asset.entity.request.host.HostGroupRelUpdateRequest; +import com.orion.ops.module.asset.entity.vo.HostGroupTreeVO; +import com.orion.ops.module.asset.service.HostGroupService; +import com.orion.ops.module.infra.api.DataGroupApi; +import com.orion.ops.module.infra.api.DataGroupRelApi; +import com.orion.ops.module.infra.api.DataPermissionApi; +import com.orion.ops.module.infra.entity.dto.data.DataGroupCreateDTO; +import com.orion.ops.module.infra.entity.dto.data.DataGroupDTO; +import com.orion.ops.module.infra.entity.dto.data.DataGroupMoveDTO; +import com.orion.ops.module.infra.entity.dto.data.DataGroupRenameDTO; +import com.orion.ops.module.infra.enums.DataGroupTypeEnum; +import com.orion.ops.module.infra.enums.DataPermissionTypeEnum; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; + +/** + * 主机分组服务 实现类 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023/11/23 10:59 + */ +@Service +public class HostGroupServiceImpl implements HostGroupService { + + @Resource + private DataGroupApi dataGroupApi; + + @Resource + private DataGroupRelApi dataGroupRelApi; + + @Resource + private DataPermissionApi dataPermissionApi; + + @Override + public Long createHostGroup(DataGroupCreateDTO request) { + return dataGroupApi.createDataGroup(DataGroupTypeEnum.HOST, request); + } + + @Override + public List queryHostGroupTree() { + List rows = dataGroupApi.getDataGroupTree(DataGroupTypeEnum.HOST); + return HostGroupConvert.MAPPER.toList(rows); + } + + @Override + public Integer updateHostGroupName(DataGroupRenameDTO request) { + return dataGroupApi.renameDataGroup(request); + } + + @Override + public Integer moveHostGroup(DataGroupMoveDTO request) { + return dataGroupApi.moveDataGroup(request); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Integer deleteHostGroup(Long id) { + // 删除主机分组 + Integer effect = dataGroupApi.deleteDataGroupById(id); + // 删除数据权限 + dataPermissionApi.deleteByRelId(DataPermissionTypeEnum.HOST_GROUP, id); + return effect; + } + + @Override + public Set queryHostGroupRel(Long groupId) { + return dataGroupRelApi.getGroupRelIdByGroupId(DataGroupTypeEnum.HOST, groupId); + } + + @Override + public void updateHostGroupRel(HostGroupRelUpdateRequest request) { + dataGroupRelApi.updateGroupRel(request.getGroupId(), request.getHostIdList()); + } + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/api/DataPermissionApi.java b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/api/DataPermissionApi.java index 906d9866..23d787d7 100644 --- a/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/api/DataPermissionApi.java +++ b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/api/DataPermissionApi.java @@ -1,6 +1,7 @@ package com.orion.ops.module.infra.api; -import com.orion.ops.module.infra.entity.dto.data.*; +import com.orion.ops.module.infra.entity.dto.data.DataPermissionUpdateDTO; +import com.orion.ops.module.infra.enums.DataPermissionTypeEnum; import java.util.List; @@ -14,84 +15,55 @@ import java.util.List; public interface DataPermissionApi { /** - * 创建数据权限 + * 添加数据权限 * - * @param dto dto - * @return id + * @param type type + * @param dto dto */ - Long createDataPermission(DataPermissionCreateDTO dto); + void addDataPermission(DataPermissionTypeEnum type, DataPermissionUpdateDTO dto); /** * 更新数据权限 * - * @param dto dto + * @param type type + * @param dto dto + */ + void updateDataPermission(DataPermissionTypeEnum type, DataPermissionUpdateDTO dto); + + /** + * 通过 userId 查询 (不包含角色 不走缓存) + * + * @param type type + * @param userId userId + * @return relId + */ + List getRelIdListByUserId(DataPermissionTypeEnum type, Long userId); + + /** + * 通过 roleId 查询 不走缓存 + * + * @param type type + * @param roleId roleId + * @return relId + */ + List getRelIdListByRoleId(DataPermissionTypeEnum type, Long roleId); + + /** + * 通过 userId 查询 (包含角色 走缓存) + * + * @param type type + * @param userId userId + * @return relId + */ + List getAllowRelIdList(DataPermissionTypeEnum type, Long userId); + + /** + * 通过 relId 删除 + * + * @param type type + * @param relId relId * @return effect */ - Integer updateDataPermissionById(DataPermissionUpdateDTO dto); - - /** - * 根据条件更新数据权限 - * - * @param query query - * @param update update - * @return effect - */ - Integer updateDataPermission(DataPermissionQueryDTO query, DataPermissionUpdateDTO update); - - /** - * 查询数据权限 - * - * @param id id - * @return row - */ - DataPermissionDTO getDataPermissionById(Long id); - - /** - * 批量查询数据权限 - * - * @param idList idList - * @return rows - */ - List getDataPermissionByIdList(List idList); - - /** - * 查询全部数据权限 - * - * @param dto dto - * @return rows - */ - List getDataPermissionList(DataPermissionQueryDTO dto); - - /** - * 查询数据权限数量 - * - * @param dto dto - * @return count - */ - Long getDataPermissionCount(DataPermissionQueryDTO dto); - - /** - * 删除数据权限 - * - * @param id id - * @return effect - */ - Integer deleteDataPermissionById(Long id); - - /** - * 批量删除数据权限 - * - * @param idList idList - * @return effect - */ - Integer deleteDataPermissionByIdList(List idList); - - /** - * 根据条件删除数据权限 - * - * @param dto dto - * @return effect - */ - Integer deleteDataPermission(DataPermissionQueryDTO dto); + int deleteByRelId(DataPermissionTypeEnum type, Long relId); } diff --git a/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataPermissionCreateDTO.java b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataPermissionCreateDTO.java deleted file mode 100644 index 0b46ef40..00000000 --- a/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataPermissionCreateDTO.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.orion.ops.module.infra.entity.dto.data; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; -import java.io.Serializable; -import java.util.*; -import java.math.*; - -/** - * 数据权限 创建请求业务对象 - * - * @author Jiahang Li - * @version 1.0.0 - * @since 2023-11-21 10:32 - */ -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -@Schema(name = "DataPermissionCreateDTO", description = "数据权限 创建请求业务对象") -public class DataPermissionCreateDTO implements Serializable { - - private static final long serialVersionUID = 1L; - - @NotNull - @Schema(description = "用户id") - private Long userId; - - @NotNull - @Schema(description = "角色id") - private Long roleId; - - @NotNull - @Schema(description = "引用id") - private Long relId; - - @NotBlank - @Size(max = 32) - @Schema(description = "数据类型") - private String type; - -} diff --git a/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataPermissionDTO.java b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataPermissionDTO.java deleted file mode 100644 index 23ee7069..00000000 --- a/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataPermissionDTO.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.orion.ops.module.infra.entity.dto.data; - -import io.swagger.v3.oas.annotations.media.Schema; -import java.io.Serializable; -import lombok.*; - -import java.util.*; -import java.math.*; - -/** - * 数据权限 业务对象 - * - * @author Jiahang Li - * @version 1.0.0 - * @since 2023-11-21 10:32 - */ -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -@Schema(name = "DataPermissionDTO", description = "数据权限 业务对象") -public class DataPermissionDTO implements Serializable { - - private static final long serialVersionUID = 1L; - - @Schema(description = "id") - private Long id; - - @Schema(description = "用户id") - private Long userId; - - @Schema(description = "角色id") - private Long roleId; - - @Schema(description = "引用id") - private Long relId; - - @Schema(description = "数据类型") - private String type; - - @Schema(description = "创建时间") - private Date createTime; - - @Schema(description = "修改时间") - private Date updateTime; - - @Schema(description = "创建人") - private String creator; - - @Schema(description = "修改人") - private String updater; - -} diff --git a/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataPermissionQueryDTO.java b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataPermissionQueryDTO.java deleted file mode 100644 index d986f292..00000000 --- a/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataPermissionQueryDTO.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.orion.ops.module.infra.entity.dto.data; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import javax.validation.constraints.Size; -import java.io.Serializable; -import java.util.*; -import java.math.*; - -/** - * 数据权限 查询请求业务对象 - * - * @author Jiahang Li - * @version 1.0.0 - * @since 2023-11-21 10:32 - */ -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -@Schema(name = "DataPermissionQueryDTO", description = "数据权限 查询请求业务对象") -public class DataPermissionQueryDTO implements Serializable { - - private static final long serialVersionUID = 1L; - - @Schema(description = "id") - private Long id; - - @Schema(description = "用户id") - private Long userId; - - @Schema(description = "角色id") - private Long roleId; - - @Schema(description = "引用id") - private Long relId; - - @Size(max = 32) - @Schema(description = "数据类型") - private String type; - -} diff --git a/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataPermissionUpdateDTO.java b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataPermissionUpdateDTO.java index e904734e..e04b81ae 100644 --- a/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataPermissionUpdateDTO.java +++ b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/entity/dto/data/DataPermissionUpdateDTO.java @@ -6,12 +6,8 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; import java.io.Serializable; -import java.util.*; -import java.math.*; +import java.util.List; /** * 数据权限 更新请求业务对象 @@ -29,25 +25,13 @@ public class DataPermissionUpdateDTO implements Serializable { private static final long serialVersionUID = 1L; - @NotNull - @Schema(description = "id") - private Long id; - - @NotNull @Schema(description = "用户id") private Long userId; - @NotNull @Schema(description = "角色id") private Long roleId; - @NotNull @Schema(description = "引用id") - private Long relId; - - @NotBlank - @Size(max = 32) - @Schema(description = "数据类型") - private String type; + private List relIdList; } diff --git a/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/enums/DataPermissionTypeEnum.java b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/enums/DataPermissionTypeEnum.java new file mode 100644 index 00000000..4652ef1a --- /dev/null +++ b/orion-ops-module-infra/orion-ops-module-infra-provider/src/main/java/com/orion/ops/module/infra/enums/DataPermissionTypeEnum.java @@ -0,0 +1,31 @@ +package com.orion.ops.module.infra.enums; + +/** + * 数据权限类型 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023/11/8 18:57 + */ +public enum DataPermissionTypeEnum { + + /** + * 主机分组 + */ + HOST_GROUP, + + ; + + public static DataPermissionTypeEnum of(String type) { + if (type == null) { + return null; + } + for (DataPermissionTypeEnum value : values()) { + if (value.name().equals(type)) { + return value; + } + } + return null; + } + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/api/impl/DataPermissionApiImpl.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/api/impl/DataPermissionApiImpl.java index d12771bc..307a2c28 100644 --- a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/api/impl/DataPermissionApiImpl.java +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/api/impl/DataPermissionApiImpl.java @@ -1,166 +1,72 @@ -// package com.orion.ops.module.infra.api.impl; -// -// import com.alibaba.fastjson.JSON; -// import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -// import com.orion.lang.utils.collect.Lists; -// import com.orion.ops.framework.common.constant.ErrorMessage; -// import com.orion.ops.framework.common.utils.Valid; -// import com.orion.ops.module.infra.entity.vo.*; -// import com.orion.ops.module.infra.entity.request.data.*; -// import com.orion.ops.module.infra.convert.*; -// import com.orion.ops.module.infra.define.operator.*; -// import com.orion.ops.module.infra.api.*; -// import com.orion.ops.module.infra.api.impl.*; -// import com.orion.ops.module.infra.entity.dto.data.*; -// import com.orion.ops.module.infra.convert.*; -// import com.orion.ops.module.infra.entity.domain.DataPermissionDO; -// import com.orion.ops.module.infra.dao.DataPermissionDAO; -// import com.orion.ops.module.infra.service.DataPermissionService; -// import lombok.extern.slf4j.Slf4j; -// import org.springframework.stereotype.Service; -// -// import javax.annotation.Resource; -// import java.util.ArrayList; -// import java.util.List; -// import java.util.stream.Collectors; -// -// /** -// * 数据权限 对外服务实现类 -// * -// * @author Jiahang Li -// * @version 1.0.0 -// * @since 2023-11-21 10:32 -// */ -// @Slf4j -// @Service -// public class DataPermissionApiImpl implements DataPermissionApi { -// -// @Resource -// private DataPermissionService dataPermissionService; -// -// @Resource -// private DataPermissionDAO dataPermissionDAO; -// -// @Override -// public Long createDataPermission(DataPermissionCreateDTO dto) { -// log.info("DataPermissionApi.createDataPermission dto: {}", JSON.toJSONString(dto)); -// Valid.valid(dto); -// // 转换 -// DataPermissionCreateRequest request = DataPermissionProviderConvert.MAPPER.toRequest(dto); -// // 创建 -// return dataPermissionService.createDataPermission(request); -// } -// -// @Override -// public Integer updateDataPermissionById(DataPermissionUpdateDTO dto) { -// log.info("DataPermissionApi.updateDataPermissionById dto: {}", JSON.toJSONString(dto)); -// Valid.valid(dto); -// // 转换 -// DataPermissionUpdateRequest request = DataPermissionProviderConvert.MAPPER.toRequest(dto); -// // 修改 -// return dataPermissionService.updateDataPermissionById(request); -// } -// -// @Override -// public Integer updateDataPermission(DataPermissionQueryDTO query, DataPermissionUpdateDTO update) { -// log.info("DataPermissionApi.updateDataPermission query: {}, update: {}", JSON.toJSONString(query), JSON.toJSONString(update)); -// Valid.valid(query); -// Valid.valid(update); -// // 更新 -// int effect = dataPermissionService.updateDataPermission(DataPermissionProviderConvert.MAPPER.toRequest(query), -// DataPermissionProviderConvert.MAPPER.toRequest(update)); -// log.info("DataPermissionApi.updateDataPermission effect: {}", effect); -// return effect; -// } -// -// @Override -// public DataPermissionDTO getDataPermissionById(Long id) { -// log.info("DataPermissionApi.getDataPermissionById id: {}", id); -// Valid.notNull(id, ErrorMessage.ID_MISSING); -// // 修改 -// DataPermissionDO record = dataPermissionDAO.selectById(id); -// if (record == null) { -// return null; -// } -// // 转换 -// return DataPermissionProviderConvert.MAPPER.to(record); -// } -// -// @Override -// public List getDataPermissionByIdList(List idList) { -// log.info("DataPermissionApi.getDataPermissionByIdList idList: {}", idList); -// if (Lists.isEmpty(idList)) { -// return new ArrayList<>(); -// } -// // 查询 -// List rows = dataPermissionDAO.selectBatchIds(idList); -// // 转换 -// return DataPermissionProviderConvert.MAPPER.toList(rows); -// } -// -// @Override -// public List getDataPermissionList(DataPermissionQueryDTO dto) { -// log.info("DataPermissionApi.getDataPermissionList dto: {}", JSON.toJSONString(dto)); -// Valid.valid(dto); -// // 条件 -// LambdaQueryWrapper wrapper = this.buildQueryWrapper(dto); -// // 查询 -// return dataPermissionDAO.of(wrapper).list(DataPermissionProviderConvert.MAPPER::to); -// } -// -// @Override -// public Long getDataPermissionCount(DataPermissionQueryDTO dto) { -// log.info("DataPermissionApi.getDataPermissionCount dto: {}", JSON.toJSONString(dto)); -// Valid.valid(dto); -// // 条件 -// LambdaQueryWrapper wrapper = this.buildQueryWrapper(dto); -// // 查询 -// return dataPermissionDAO.selectCount(wrapper); -// } -// -// @Override -// public Integer deleteDataPermissionById(Long id) { -// log.info("DataPermissionApi.deleteDataPermissionById id: {}", id); -// Valid.notNull(id, ErrorMessage.ID_MISSING); -// // 删除 -// Integer effect = dataPermissionService.deleteDataPermissionById(id); -// log.info("DataPermissionApi.deleteDataPermissionById id: {}, effect: {}", id, effect); -// return effect; -// } -// -// @Override -// public Integer deleteDataPermissionByIdList(List idList) { -// log.info("DataPermissionApi.deleteDataPermissionByIdList idList: {}", idList); -// Valid.notEmpty(idList, ErrorMessage.ID_MISSING); -// // 删除 -// Integer effect = dataPermissionService.deleteDataPermissionByIdList(idList); -// log.info("DataPermissionApi.deleteDataPermissionByIdList effect: {}", effect); -// return effect; -// } -// -// @Override -// public Integer deleteDataPermission(DataPermissionQueryDTO dto) { -// log.info("DataPermissionApi.deleteDataPermission dto: {}", JSON.toJSONString(dto)); -// Valid.valid(dto); -// // 删除 -// Integer effect = dataPermissionService.deleteDataPermission(DataPermissionProviderConvert.MAPPER.toRequest(dto)); -// log.info("DataPermissionApi.deleteDataPermission effect: {}", effect); -// return effect; -// } -// -// /** -// * 构建查询 wrapper -// * -// * @param dto dto -// * @return wrapper -// */ -// private LambdaQueryWrapper buildQueryWrapper(DataPermissionQueryDTO dto) { -// return dataPermissionDAO.wrapper() -// .eq(DataPermissionDO::getId, dto.getId()) -// .eq(DataPermissionDO::getUserId, dto.getUserId()) -// .eq(DataPermissionDO::getRoleId, dto.getRoleId()) -// .eq(DataPermissionDO::getRelId, dto.getRelId()) -// .eq(DataPermissionDO::getType, dto.getType()); -// } -// -// } +package com.orion.ops.module.infra.api.impl; + +import com.orion.ops.framework.common.utils.Valid; +import com.orion.ops.module.infra.api.DataPermissionApi; +import com.orion.ops.module.infra.convert.DataPermissionProviderConvert; +import com.orion.ops.module.infra.entity.dto.data.DataPermissionUpdateDTO; +import com.orion.ops.module.infra.entity.request.data.DataPermissionUpdateRequest; +import com.orion.ops.module.infra.enums.DataPermissionTypeEnum; +import com.orion.ops.module.infra.service.DataPermissionService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 数据权限 对外服务实现类 + * + * @author Jiahang Li + * @version 1.0.0 + * @since 2023-11-21 10:32 + */ +@Slf4j +@Service +public class DataPermissionApiImpl implements DataPermissionApi { + + @Resource + private DataPermissionService dataPermissionService; + + @Override + public void addDataPermission(DataPermissionTypeEnum type, DataPermissionUpdateDTO dto) { + // 校验参数 + List relIdList = dto.getRelIdList(); + Valid.isTrue(dto.getUserId() != null || dto.getRoleId() != null); + Valid.notEmpty(relIdList); + // 添加权限 + DataPermissionUpdateRequest request = DataPermissionProviderConvert.MAPPER.toRequest(dto); + request.setType(type.name()); + dataPermissionService.addDataPermission(request); + } + + @Override + public void updateDataPermission(DataPermissionTypeEnum type, DataPermissionUpdateDTO dto) { + // 校验参数 + Valid.isTrue(dto.getUserId() != null || dto.getRoleId() != null); + // 修改权限 + DataPermissionUpdateRequest request = DataPermissionProviderConvert.MAPPER.toRequest(dto); + request.setType(type.name()); + dataPermissionService.updateDataPermission(request); + } + + @Override + public List getRelIdListByUserId(DataPermissionTypeEnum type, Long userId) { + return dataPermissionService.getRelIdListByUserId(type.name(), userId); + } + + @Override + public List getRelIdListByRoleId(DataPermissionTypeEnum type, Long roleId) { + return dataPermissionService.getRelIdListByRoleId(type.name(), roleId); + } + + @Override + public List getAllowRelIdList(DataPermissionTypeEnum type, Long userId) { + return dataPermissionService.getAllowRelIdList(type.name(), userId); + } + + @Override + public int deleteByRelId(DataPermissionTypeEnum type, Long relId) { + return dataPermissionService.deleteByRelId(type.name(), relId); + } + +} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/SystemUserController.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/SystemUserController.java index 7dbc814f..271bc296 100644 --- a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/SystemUserController.java +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/SystemUserController.java @@ -143,7 +143,7 @@ public class SystemUserController { } @IgnoreLog(IgnoreLogMode.RET) - @GetMapping("/user-session") + @GetMapping("/session/list") @Operation(summary = "获取用户会话列表") @PreAuthorize("@ss.hasPermission('infra:system-user:query-session')") public List getUserSessionList(@RequestParam("id") Long id) { @@ -151,7 +151,7 @@ public class SystemUserController { } @OperatorLog(SystemUserOperatorType.OFFLINE) - @PutMapping("/offline-session") + @PutMapping("/session/offline") @Operation(summary = "下线用户会话") @PreAuthorize("@ss.hasPermission('infra:system-user:offline-session')") public HttpWrapper offlineUserSession(@Validated @RequestBody UserSessionOfflineRequest request) { diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DataPermissionConvert.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DataPermissionConvert.java index b3ba10c9..c9eff029 100644 --- a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DataPermissionConvert.java +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DataPermissionConvert.java @@ -1,15 +1,10 @@ package com.orion.ops.module.infra.convert; -import com.orion.ops.module.infra.entity.domain.*; -import com.orion.ops.module.infra.entity.vo.*; -import com.orion.ops.module.infra.entity.request.data.*; -import com.orion.ops.module.infra.convert.*; -import com.orion.ops.module.infra.define.operator.*; +import com.orion.ops.module.infra.entity.domain.DataPermissionDO; +import com.orion.ops.module.infra.entity.request.data.DataPermissionUpdateRequest; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; -import java.util.List; - /** * 数据权限 内部对象转换器 * @@ -22,8 +17,6 @@ public interface DataPermissionConvert { DataPermissionConvert MAPPER = Mappers.getMapper(DataPermissionConvert.class); - DataPermissionDO to(DataPermissionCreateRequest request); - DataPermissionDO to(DataPermissionUpdateRequest request); } diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DataPermissionProviderConvert.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DataPermissionProviderConvert.java index 8db80a6e..3b8d3639 100644 --- a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DataPermissionProviderConvert.java +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/convert/DataPermissionProviderConvert.java @@ -1,16 +1,10 @@ package com.orion.ops.module.infra.convert; -import com.orion.ops.module.infra.entity.domain.*; -import com.orion.ops.module.infra.entity.vo.*; -import com.orion.ops.module.infra.entity.request.data.*; -import com.orion.ops.module.infra.convert.*; -import com.orion.ops.module.infra.define.operator.*; -import com.orion.ops.module.infra.entity.dto.data.*; +import com.orion.ops.module.infra.entity.dto.data.DataPermissionUpdateDTO; +import com.orion.ops.module.infra.entity.request.data.DataPermissionUpdateRequest; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; -import java.util.List; - /** * 数据权限 对外服务对象转换器 * @@ -23,18 +17,6 @@ public interface DataPermissionProviderConvert { DataPermissionProviderConvert MAPPER = Mappers.getMapper(DataPermissionProviderConvert.class); - DataPermissionDO to(DataPermissionDTO dto); - - DataPermissionDTO to(DataPermissionDO domain); - - DataPermissionDO to(DataPermissionQueryDTO domain); - - DataPermissionDO to(DataPermissionUpdateDTO update); - - DataPermissionCreateRequest toRequest(DataPermissionCreateDTO request); - DataPermissionUpdateRequest toRequest(DataPermissionUpdateDTO request); - List toList(List list); - } diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/data/DataPermissionCreateRequest.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/data/DataPermissionCreateRequest.java deleted file mode 100644 index 3c06c3b5..00000000 --- a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/entity/request/data/DataPermissionCreateRequest.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.orion.ops.module.infra.entity.request.data; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; -import java.util.List; - -/** - * 数据权限 创建请求对象 - * - * @author Jiahang Li - * @version 1.0.0 - * @since 2023-11-21 10:32 - */ -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -@Schema(name = "DataPermissionCreateRequest", description = "数据权限 创建请求对象") -public class DataPermissionCreateRequest implements Serializable { - - private static final long serialVersionUID = 1L; - - @Schema(description = "用户id") - private Long userId; - - @Schema(description = "角色id") - private Long roleId; - - @Schema(description = "引用id") - private List relIdList; - - @Schema(description = "数据类型") - private String type; - -} diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/DataPermissionService.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/DataPermissionService.java index ed1e9bd8..605a8c44 100644 --- a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/DataPermissionService.java +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/DataPermissionService.java @@ -1,6 +1,5 @@ package com.orion.ops.module.infra.service; -import com.orion.ops.module.infra.entity.request.data.DataPermissionCreateRequest; import com.orion.ops.module.infra.entity.request.data.DataPermissionUpdateRequest; import java.util.List; @@ -19,7 +18,7 @@ public interface DataPermissionService { * * @param request request */ - void addDataPermission(DataPermissionCreateRequest request); + void addDataPermission(DataPermissionUpdateRequest request); /** * 更新数据权限 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 e57b9610..a8815fe2 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 @@ -10,7 +10,6 @@ import com.orion.ops.module.infra.dao.DataPermissionDAO; import com.orion.ops.module.infra.dao.SystemUserRoleDAO; import com.orion.ops.module.infra.define.cache.DataPermissionCacheKeyDefine; import com.orion.ops.module.infra.entity.domain.DataPermissionDO; -import com.orion.ops.module.infra.entity.request.data.DataPermissionCreateRequest; import com.orion.ops.module.infra.entity.request.data.DataPermissionUpdateRequest; import com.orion.ops.module.infra.service.DataPermissionService; import lombok.extern.slf4j.Slf4j; @@ -41,7 +40,7 @@ public class DataPermissionServiceImpl implements DataPermissionService { @Override @Transactional(rollbackFor = Exception.class) - public void addDataPermission(DataPermissionCreateRequest request) { + public void addDataPermission(DataPermissionUpdateRequest request) { Long userId = request.getUserId(); Long roleId = request.getRoleId(); String type = request.getType(); diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/SystemUserServiceImpl.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/SystemUserServiceImpl.java index 8b64476a..ca5d2950 100644 --- a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/SystemUserServiceImpl.java +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/SystemUserServiceImpl.java @@ -78,11 +78,18 @@ public class SystemUserServiceImpl implements SystemUserService { this.checkUsernamePresent(record); // 查询花名是否存在 this.checkNicknamePresent(record); + // 加密密码 + record.setPassword(Signatures.md5(request.getPassword())); // 插入 int effect = systemUserDAO.insert(record); log.info("SystemUserService-createSystemUser effect: {}, record: {}", effect, JSON.toJSONString(record)); - // 删除用户列表缓存 - RedisUtils.delete(UserCacheKeyDefine.USER_LIST); + // 删除用户缓存 + RedisUtils.delete( + // 用户列表 + UserCacheKeyDefine.USER_LIST.getKey(), + // 登录失败次数 + UserCacheKeyDefine.LOGIN_FAILED_COUNT.format(request.getUsername()) + ); return record.getId(); } diff --git a/orion-ops-ui/src/api/asset/host-group.ts b/orion-ops-ui/src/api/asset/host-group.ts index 04003ff0..f224015a 100644 --- a/orion-ops-ui/src/api/asset/host-group.ts +++ b/orion-ops-ui/src/api/asset/host-group.ts @@ -43,49 +43,49 @@ export interface HostGroupRelUpdateRequest { } /** - * 创建主机分组 + * 创建主机分组 - 管理 */ export function createHostGroup(request: HostGroupCreateRequest) { return axios.post('/asset/host-group/create', request); } /** - * 更新主机分组名称 + * 更新主机分组名称 - 管理 */ export function updateHostGroupName(request: HostGroupRenameRequest) { return axios.put('/asset/host-group/rename', request); } /** - * 移动主机分组 + * 移动主机分组 - 管理 */ export function moveHostGroup(request: HostGroupMoveRequest) { return axios.put('/asset/host-group/move', request); } /** - * 查询全部主机分组树 + * 查询主机分组树 - 管理 */ export function getHostGroupTree() { return axios.get>('/asset/host-group/tree'); } /** - * 删除主机分组 + * 删除主机分组 - 管理 */ export function deleteHostGroup(id: number) { return axios.delete('/asset/host-group/delete', { params: { id } }); } /** - * 查询分组内主机 + * 查询分组内主机 - 管理 */ export function getHostGroupRelList(groupId: number) { return axios.get>('/asset/host-group/rel-list', { params: { groupId } }); } /** - * 修改分组内主机 + * 修改分组内主机 - 管理 */ export function updateHostGroupRel(request: HostGroupRelUpdateRequest) { return axios.post('/asset/host-group/update-rel', request); diff --git a/orion-ops-ui/src/api/interceptor.ts b/orion-ops-ui/src/api/interceptor.ts index c4b491eb..26dc5579 100644 --- a/orion-ops-ui/src/api/interceptor.ts +++ b/orion-ops-ui/src/api/interceptor.ts @@ -55,8 +55,11 @@ axios.interceptors.response.use( }); // 认证异常 setTimeout(async () => { - // 设置错误信息 登录页面重新提示 (重新加载会刷掉提示) - window.sessionStorage.setItem(reLoginTipsKey, res.msg); + // 先判断是否有提示 防止调用多个接口 把主要信息覆盖 + if (!window.sessionStorage.getItem(reLoginTipsKey)) { + // 设置错误信息 在登录页面重新提示 因为重新页面加载会刷掉提示 + window.sessionStorage.setItem(reLoginTipsKey, res.msg); + } // 登出 await useUserStore().logout(); // 重新加载自动跳转登录页面 diff --git a/orion-ops-ui/src/api/user/user.ts b/orion-ops-ui/src/api/user/user.ts index a9f95358..4b095f82 100644 --- a/orion-ops-ui/src/api/user/user.ts +++ b/orion-ops-ui/src/api/user/user.ts @@ -151,12 +151,12 @@ export function deleteUser(id: number) { * 获取用户会话列表 */ export function getUserSessionList(id: number) { - return axios.get>('/infra/system-user/user-session', { params: { id } }); + return axios.get>('/infra/system-user/session/list', { params: { id } }); } /** * 下线用户会话 */ export function offlineUserSession(request: UserSessionOfflineRequest) { - return axios.put('/infra/system-user/offline-session', request); + return axios.put('/infra/system-user/session/offline', request); }