refactor: 修改主机权限.
This commit is contained in:
@@ -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<HostGroupTreeVO> queryHostGroup() {
|
||||
List<DataGroupDTO> rows = dataGroupApi.getDataGroupTree(DataGroupTypeEnum.HOST);
|
||||
return HostGroupConvert.MAPPER.toList(rows);
|
||||
public List<HostGroupTreeVO> 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<Long> 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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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<HostGroupTreeVO> 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<Long> queryHostGroupRel(Long groupId);
|
||||
|
||||
/**
|
||||
* 修改主机分组内主机
|
||||
*
|
||||
* @param request request
|
||||
*/
|
||||
void updateHostGroupRel(HostGroupRelUpdateRequest request);
|
||||
|
||||
}
|
||||
@@ -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<HostGroupTreeVO> queryHostGroupTree() {
|
||||
List<DataGroupDTO> 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<Long> queryHostGroupRel(Long groupId) {
|
||||
return dataGroupRelApi.getGroupRelIdByGroupId(DataGroupTypeEnum.HOST, groupId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateHostGroupRel(HostGroupRelUpdateRequest request) {
|
||||
dataGroupRelApi.updateGroupRel(request.getGroupId(), request.getHostIdList());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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<Long> getRelIdListByUserId(DataPermissionTypeEnum type, Long userId);
|
||||
|
||||
/**
|
||||
* 通过 roleId 查询 不走缓存
|
||||
*
|
||||
* @param type type
|
||||
* @param roleId roleId
|
||||
* @return relId
|
||||
*/
|
||||
List<Long> getRelIdListByRoleId(DataPermissionTypeEnum type, Long roleId);
|
||||
|
||||
/**
|
||||
* 通过 userId 查询 (包含角色 走缓存)
|
||||
*
|
||||
* @param type type
|
||||
* @param userId userId
|
||||
* @return relId
|
||||
*/
|
||||
List<Long> 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<DataPermissionDTO> getDataPermissionByIdList(List<Long> idList);
|
||||
|
||||
/**
|
||||
* 查询全部数据权限
|
||||
*
|
||||
* @param dto dto
|
||||
* @return rows
|
||||
*/
|
||||
List<DataPermissionDTO> 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<Long> idList);
|
||||
|
||||
/**
|
||||
* 根据条件删除数据权限
|
||||
*
|
||||
* @param dto dto
|
||||
* @return effect
|
||||
*/
|
||||
Integer deleteDataPermission(DataPermissionQueryDTO dto);
|
||||
int deleteByRelId(DataPermissionTypeEnum type, Long relId);
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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<Long> relIdList;
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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<DataPermissionDTO> getDataPermissionByIdList(List<Long> idList) {
|
||||
// log.info("DataPermissionApi.getDataPermissionByIdList idList: {}", idList);
|
||||
// if (Lists.isEmpty(idList)) {
|
||||
// return new ArrayList<>();
|
||||
// }
|
||||
// // 查询
|
||||
// List<DataPermissionDO> rows = dataPermissionDAO.selectBatchIds(idList);
|
||||
// // 转换
|
||||
// return DataPermissionProviderConvert.MAPPER.toList(rows);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public List<DataPermissionDTO> getDataPermissionList(DataPermissionQueryDTO dto) {
|
||||
// log.info("DataPermissionApi.getDataPermissionList dto: {}", JSON.toJSONString(dto));
|
||||
// Valid.valid(dto);
|
||||
// // 条件
|
||||
// LambdaQueryWrapper<DataPermissionDO> 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<DataPermissionDO> 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<Long> 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<DataPermissionDO> 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<Long> 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<Long> getRelIdListByUserId(DataPermissionTypeEnum type, Long userId) {
|
||||
return dataPermissionService.getRelIdListByUserId(type.name(), userId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Long> getRelIdListByRoleId(DataPermissionTypeEnum type, Long roleId) {
|
||||
return dataPermissionService.getRelIdListByRoleId(type.name(), roleId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Long> 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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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<UserSessionVO> 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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
@@ -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<DataPermissionDTO> toList(List<DataPermissionDO> list);
|
||||
|
||||
}
|
||||
|
||||
@@ -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<Long> relIdList;
|
||||
|
||||
@Schema(description = "数据类型")
|
||||
private String type;
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
/**
|
||||
* 更新数据权限
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -43,49 +43,49 @@ export interface HostGroupRelUpdateRequest {
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建主机分组
|
||||
* 创建主机分组 - 管理
|
||||
*/
|
||||
export function createHostGroup(request: HostGroupCreateRequest) {
|
||||
return axios.post<number>('/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<Array<HostGroupQueryResponse>>('/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<Array<number>>('/asset/host-group/rel-list', { params: { groupId } });
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改分组内主机
|
||||
* 修改分组内主机 - 管理
|
||||
*/
|
||||
export function updateHostGroupRel(request: HostGroupRelUpdateRequest) {
|
||||
return axios.post('/asset/host-group/update-rel', request);
|
||||
|
||||
@@ -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();
|
||||
// 重新加载自动跳转登录页面
|
||||
|
||||
@@ -151,12 +151,12 @@ export function deleteUser(id: number) {
|
||||
* 获取用户会话列表
|
||||
*/
|
||||
export function getUserSessionList(id: number) {
|
||||
return axios.get<Array<UserSessionQueryResponse>>('/infra/system-user/user-session', { params: { id } });
|
||||
return axios.get<Array<UserSessionQueryResponse>>('/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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user