feat: 数据别名服务.

This commit is contained in:
lijiahangmax
2023-12-18 22:25:43 +08:00
parent b49791e860
commit bbb56d63bf
18 changed files with 284 additions and 516 deletions

View File

@@ -53,4 +53,15 @@ DELETE {{baseUrl}}/asset/host/delete?id=1
Authorization: {{token}}
### 更新主机别名
PUT {{baseUrl}}/asset/host/update-alias
Content-Type: application/json
Authorization: {{token}}
{
"id": 1,
"name": "alias"
}
###

View File

@@ -5,6 +5,7 @@ import com.orion.ops.framework.biz.operator.log.core.annotation.OperatorLog;
import com.orion.ops.framework.common.validator.group.Page;
import com.orion.ops.framework.log.core.annotation.IgnoreLog;
import com.orion.ops.framework.log.core.enums.IgnoreLogMode;
import com.orion.ops.framework.security.core.utils.SecurityUtils;
import com.orion.ops.framework.web.core.annotation.RestWrapper;
import com.orion.ops.module.asset.define.operator.HostOperatorType;
import com.orion.ops.module.asset.entity.request.host.*;
@@ -12,6 +13,9 @@ import com.orion.ops.module.asset.entity.vo.HostConfigVO;
import com.orion.ops.module.asset.entity.vo.HostVO;
import com.orion.ops.module.asset.service.HostConfigService;
import com.orion.ops.module.asset.service.HostService;
import com.orion.ops.module.infra.api.DataAliasApi;
import com.orion.ops.module.infra.entity.dto.data.DataAliasUpdateDTO;
import com.orion.ops.module.infra.enums.DataAliasTypeEnum;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -45,6 +49,9 @@ public class HostController {
@Resource
private HostConfigService hostConfigService;
@Resource
private DataAliasApi dataAliasApi;
@OperatorLog(HostOperatorType.CREATE)
@PostMapping("/create")
@Operation(summary = "创建主机")
@@ -95,6 +102,17 @@ public class HostController {
return hostService.deleteHostById(id);
}
@PutMapping("/update-alias")
@Operation(summary = "修改主机别名")
public Integer updateHostAlias(@Validated @RequestBody HostAliasUpdateRequest request) {
DataAliasUpdateDTO update = DataAliasUpdateDTO.builder()
.userId(SecurityUtils.getLoginUserId())
.relId(request.getId())
.alias(request.getName())
.build();
return dataAliasApi.updateDataAlias(update, DataAliasTypeEnum.HOST);
}
@IgnoreLog(IgnoreLogMode.RET)
@GetMapping("/get-config")
@Operation(summary = "查询主机配置")

View File

@@ -0,0 +1,35 @@
package com.orion.ops.module.asset.entity.request.host;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
/**
* 主机别名 更新请求对象
*
* @author Jiahang Li
* @version 1.0.0
* @since 2023-9-13 14:31
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "HostAliasUpdateRequest", description = "主机别名 更新请求对象")
public class HostAliasUpdateRequest implements Serializable {
@NotNull
@Schema(description = "id")
private Long id;
@Size(max = 32)
@Schema(description = "别名")
private String name;
}

View File

@@ -23,11 +23,13 @@ import com.orion.ops.module.asset.entity.request.host.HostUpdateRequest;
import com.orion.ops.module.asset.entity.vo.HostVO;
import com.orion.ops.module.asset.service.HostConfigService;
import com.orion.ops.module.asset.service.HostService;
import com.orion.ops.module.infra.api.DataAliasApi;
import com.orion.ops.module.infra.api.DataGroupRelApi;
import com.orion.ops.module.infra.api.FavoriteApi;
import com.orion.ops.module.infra.api.TagRelApi;
import com.orion.ops.module.infra.entity.dto.data.DataGroupRelCreateDTO;
import com.orion.ops.module.infra.entity.dto.tag.TagDTO;
import com.orion.ops.module.infra.enums.DataAliasTypeEnum;
import com.orion.ops.module.infra.enums.DataGroupTypeEnum;
import com.orion.ops.module.infra.enums.FavoriteTypeEnum;
import com.orion.ops.module.infra.enums.TagTypeEnum;
@@ -71,6 +73,9 @@ public class HostServiceImpl implements HostService {
@Resource
private DataGroupRelApi dataGroupRelApi;
@Resource
private DataAliasApi dataAliasApi;
@Override
public Long createHost(HostCreateRequest request) {
log.info("HostService-createHost request: {}", JSON.toJSONString(request));
@@ -213,6 +218,8 @@ public class HostServiceImpl implements HostService {
tagRelApi.deleteRelId(TagTypeEnum.HOST, id);
// 删除收藏引用
favoriteApi.deleteByRelId(FavoriteTypeEnum.HOST, id);
// 删除主机别名
dataAliasApi.deleteByRelId(DataAliasTypeEnum.HOST, id);
}
/**

View File

@@ -1,95 +1,64 @@
// package com.orion.ops.module.infra.api;
//
// import com.orion.ops.module.infra.entity.dto.data.*;
//
// import java.util.List;
//
// /**
// * 数据别名 对外服务类
// *
// * @author Jiahang Li
// * @version 1.0.0
// * @since 2023-12-18 17:37
// */
// public interface DataAliasApi {
//
// /**
// * 创建数据别名
// *
// * @param dto dto
// * @return id
// */
// Long createDataAlias(DataAliasCreateDTO dto);
//
// /**
// * 更新数据别名
// *
// * @param dto dto
// * @return effect
// */
// Integer updateDataAliasById(DataAliasUpdateDTO dto);
//
// /**
// * 查询数据别名
// *
// * @param id id
// * @return row
// */
// DataAliasDTO getDataAliasById(Long id);
//
// /**
// * 批量查询数据别名
// *
// * @param idList idList
// * @return rows
// */
// List<DataAliasDTO> getDataAliasByIdList(List<Long> idList);
//
// /**
// * 查询全部数据别名
// *
// * @param dto dto
// * @return rows
// */
// List<DataAliasDTO> getDataAliasList(DataAliasQueryDTO dto);
//
// /**
// * 通过缓存查询数据别名
// *
// * @return rows
// */
// List<DataAliasDTO> getDataAliasListByCache();
//
// /**
// * 查询数据别名数量
// *
// * @param dto dto
// * @return count
// */
// Long getDataAliasCount(DataAliasQueryDTO dto);
//
// /**
// * 删除数据别名
// *
// * @param id id
// * @return effect
// */
// Integer deleteDataAliasById(Long id);
//
// /**
// * 批量删除数据别名
// *
// * @param idList idList
// * @return effect
// */
// Integer deleteDataAliasByIdList(List<Long> idList);
//
// /**
// * 根据条件删除数据别名
// *
// * @param dto dto
// * @return effect
// */
// Integer deleteDataAlias(DataAliasQueryDTO dto);
//
// }
package com.orion.ops.module.infra.api;
import com.orion.ops.module.infra.entity.dto.data.DataAliasUpdateDTO;
import com.orion.ops.module.infra.enums.DataAliasTypeEnum;
import java.util.Map;
import java.util.concurrent.Future;
/**
* 数据别名 对外服务类
*
* @author Jiahang Li
* @version 1.0.0
* @since 2023-12-18 17:37
*/
public interface DataAliasApi {
/**
* 更新数据别名
*
* @param dto dto
* @param type type
* @return effect
*/
Integer updateDataAlias(DataAliasUpdateDTO dto, DataAliasTypeEnum type);
/**
* 查询数据别名
*
* @param userId userId
* @param type type
* @param relId relId
* @return aliasName
*/
String getDataAlias(Long userId, DataAliasTypeEnum type, Long relId);
/**
* 查询数据别名
*
* @param userId userId
* @param type type
* @return relId:aliasName
*/
Map<Long, String> getDataAlias(Long userId, DataAliasTypeEnum type);
/**
* 异步查询数据别名
*
* @param userId userId
* @param type type
* @return relId:aliasName
*/
Future<Map<Long, String>> getDataAliasAsync(Long userId, DataAliasTypeEnum type);
/**
* 删除数据别名
*
* @param type type
* @param relId relId
* @return effect
*/
Integer deleteByRelId(DataAliasTypeEnum type, Long relId);
}

View File

@@ -1,50 +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-12-18 17:37
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "DataAliasCreateDTO", description = "数据别名 创建请求业务对象")
public class DataAliasCreateDTO implements Serializable {
private static final long serialVersionUID = 1L;
@NotNull
@Schema(description = "用户id")
private Long userId;
@NotNull
@Schema(description = "数据id")
private Long relId;
@NotBlank
@Size(max = 32)
@Schema(description = "数据类型")
private String type;
@NotBlank
@Size(max = 32)
@Schema(description = "别名")
private String alias;
}

View File

@@ -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-12-18 17:37
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "DataAliasDTO", description = "数据别名 业务对象")
public class DataAliasDTO 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 relId;
@Schema(description = "数据类型")
private String type;
@Schema(description = "别名")
private String alias;
@Schema(description = "创建时间")
private Date createTime;
@Schema(description = "修改时间")
private Date updateTime;
@Schema(description = "创建人")
private String creator;
@Schema(description = "修改人")
private String updater;
}

View File

@@ -1,47 +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-12-18 17:37
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "DataAliasQueryDTO", description = "数据别名 查询请求业务对象")
public class DataAliasQueryDTO 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 relId;
@Size(max = 32)
@Schema(description = "数据类型")
private String type;
@Size(max = 32)
@Schema(description = "别名")
private String alias;
}

View File

@@ -6,12 +6,9 @@ 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.*;
/**
* 数据别名 更新请求业务对象
@@ -24,15 +21,11 @@ import java.math.*;
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "DataAliasUpdateDTO", description = "数据别名 更新请求业务对象")
@Schema(name = "DataAliasUpdateDTO", description = "数据别名 创建请求业务对象")
public class DataAliasUpdateDTO implements Serializable {
private static final long serialVersionUID = 1L;
@NotNull
@Schema(description = "id")
private Long id;
@NotNull
@Schema(description = "用户id")
private Long userId;
@@ -41,12 +34,6 @@ public class DataAliasUpdateDTO implements Serializable {
@Schema(description = "数据id")
private Long relId;
@NotBlank
@Size(max = 32)
@Schema(description = "数据类型")
private String type;
@NotBlank
@Size(max = 32)
@Schema(description = "别名")
private String alias;

View File

@@ -0,0 +1,31 @@
package com.orion.ops.module.infra.enums;
/**
* 数据别名类型
*
* @author Jiahang Li
* @version 1.0.0
* @since 2023/12/18 21:51
*/
public enum DataAliasTypeEnum {
/**
* 主机
*/
HOST,
;
public static DataAliasTypeEnum of(String type) {
if (type == null) {
return null;
}
for (DataAliasTypeEnum value : values()) {
if (value.name().equals(type)) {
return value;
}
}
return null;
}
}

View File

@@ -1,165 +1,67 @@
// 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.entity.dto.*;
// import com.orion.ops.module.infra.define.cache.*;
// 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.DataAliasDO;
// import com.orion.ops.module.infra.dao.DataAliasDAO;
// import com.orion.ops.module.infra.service.DataAliasService;
// 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-12-18 17:37
// */
// @Slf4j
// @Service
// public class DataAliasApiImpl implements DataAliasApi {
//
// @Resource
// private DataAliasService dataAliasService;
//
// @Resource
// private DataAliasDAO dataAliasDAO;
//
// @Override
// public Long createDataAlias(DataAliasCreateDTO dto) {
// log.info("DataAliasApi.createDataAlias dto: {}", JSON.toJSONString(dto));
// Valid.valid(dto);
// // 转换
// DataAliasCreateRequest request = DataAliasProviderConvert.MAPPER.toRequest(dto);
// // 创建
// return dataAliasService.createDataAlias(request);
// }
//
// @Override
// public Integer updateDataAliasById(DataAliasUpdateDTO dto) {
// log.info("DataAliasApi.updateDataAliasById dto: {}", JSON.toJSONString(dto));
// Valid.valid(dto);
// // 转换
// DataAliasUpdateRequest request = DataAliasProviderConvert.MAPPER.toRequest(dto);
// // 修改
// return dataAliasService.updateDataAliasById(request);
// }
//
//
// @Override
// public DataAliasDTO getDataAliasById(Long id) {
// log.info("DataAliasApi.getDataAliasById id: {}", id);
// Valid.notNull(id, ErrorMessage.ID_MISSING);
// // 修改
// DataAliasDO record = dataAliasDAO.selectById(id);
// if (record == null) {
// return null;
// }
// // 转换
// return DataAliasProviderConvert.MAPPER.to(record);
// }
//
// @Override
// public List<DataAliasDTO> getDataAliasByIdList(List<Long> idList) {
// log.info("DataAliasApi.getDataAliasByIdList idList: {}", idList);
// if (Lists.isEmpty(idList)) {
// return new ArrayList<>();
// }
// // 查询
// List<DataAliasDO> rows = dataAliasDAO.selectBatchIds(idList);
// // 转换
// return DataAliasProviderConvert.MAPPER.toList(rows);
// }
//
// @Override
// public List<DataAliasDTO> getDataAliasList(DataAliasQueryDTO dto) {
// log.info("DataAliasApi.getDataAliasList dto: {}", JSON.toJSONString(dto));
// Valid.valid(dto);
// // 条件
// LambdaQueryWrapper<DataAliasDO> wrapper = this.buildQueryWrapper(dto);
// // 查询
// return dataAliasDAO.of(wrapper).list(DataAliasProviderConvert.MAPPER::to);
// }
//
// @Override
// public List<DataAliasDTO> getDataAliasListByCache() {
// return dataAliasService.getDataAliasListByCache()
// .stream()
// .map(DataAliasProviderConvert.MAPPER::to)
// .collect(Collectors.toList());
// }
//
// @Override
// public Long getDataAliasCount(DataAliasQueryDTO dto) {
// log.info("DataAliasApi.getDataAliasCount dto: {}", JSON.toJSONString(dto));
// Valid.valid(dto);
// // 条件
// LambdaQueryWrapper<DataAliasDO> wrapper = this.buildQueryWrapper(dto);
// // 查询
// return dataAliasDAO.selectCount(wrapper);
// }
//
// @Override
// public Integer deleteDataAliasById(Long id) {
// log.info("DataAliasApi.deleteDataAliasById id: {}", id);
// Valid.notNull(id, ErrorMessage.ID_MISSING);
// // 删除
// Integer effect = dataAliasService.deleteDataAliasById(id);
// log.info("DataAliasApi.deleteDataAliasById id: {}, effect: {}", id, effect);
// return effect;
// }
//
// @Override
// public Integer deleteDataAliasByIdList(List<Long> idList) {
// log.info("DataAliasApi.deleteDataAliasByIdList idList: {}", idList);
// Valid.notEmpty(idList, ErrorMessage.ID_MISSING);
// // 删除
// Integer effect = dataAliasService.deleteDataAliasByIdList(idList);
// log.info("DataAliasApi.deleteDataAliasByIdList effect: {}", effect);
// return effect;
// }
//
// @Override
// public Integer deleteDataAlias(DataAliasQueryDTO dto) {
// log.info("DataAliasApi.deleteDataAlias dto: {}", JSON.toJSONString(dto));
// Valid.valid(dto);
// // 删除
// Integer effect = dataAliasService.deleteDataAlias(DataAliasProviderConvert.MAPPER.toRequest(dto));
// log.info("DataAliasApi.deleteDataAlias effect: {}", effect);
// return effect;
// }
//
// /**
// * 构建查询 wrapper
// *
// * @param dto dto
// * @return wrapper
// */
// private LambdaQueryWrapper<DataAliasDO> buildQueryWrapper(DataAliasQueryDTO dto) {
// return dataAliasDAO.wrapper()
// .eq(DataAliasDO::getId, dto.getId())
// .eq(DataAliasDO::getUserId, dto.getUserId())
// .eq(DataAliasDO::getRelId, dto.getRelId())
// .eq(DataAliasDO::getType, dto.getType())
// .eq(DataAliasDO::getAlias, dto.getAlias());
// }
//
// }
package com.orion.ops.module.infra.api.impl;
import com.orion.ops.framework.common.utils.Valid;
import com.orion.ops.module.infra.api.DataAliasApi;
import com.orion.ops.module.infra.entity.dto.data.DataAliasUpdateDTO;
import com.orion.ops.module.infra.entity.request.data.DataAliasUpdateRequest;
import com.orion.ops.module.infra.enums.DataAliasTypeEnum;
import com.orion.ops.module.infra.service.DataAliasService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Future;
/**
* 数据别名 对外服务实现类
*
* @author Jiahang Li
* @version 1.0.0
* @since 2023-12-18 17:37
*/
@Slf4j
@Service
public class DataAliasApiImpl implements DataAliasApi {
@Resource
private DataAliasService dataAliasService;
@Override
public Integer updateDataAlias(DataAliasUpdateDTO dto, DataAliasTypeEnum type) {
Valid.valid(dto);
DataAliasUpdateRequest update = DataAliasUpdateRequest.builder()
.userId(dto.getUserId())
.type(type.name())
.relId(dto.getRelId())
.alias(dto.getAlias())
.build();
return dataAliasService.updateDataAlias(update);
}
@Override
public String getDataAlias(Long userId, DataAliasTypeEnum type, Long relId) {
Valid.allNotNull(userId, relId);
return dataAliasService.getDataAlias(userId, type.name(), relId);
}
@Override
public Map<Long, String> getDataAlias(Long userId, DataAliasTypeEnum type) {
Valid.notNull(userId);
return dataAliasService.getDataAlias(userId, type.name());
}
@Override
public Future<Map<Long, String>> getDataAliasAsync(Long userId, DataAliasTypeEnum type) {
Valid.notNull(userId);
return CompletableFuture.completedFuture(dataAliasService.getDataAlias(userId, type.name()));
}
@Override
public Integer deleteByRelId(DataAliasTypeEnum type, Long relId) {
Valid.notNull(relId);
return dataAliasService.deleteByRelId(type.name(), relId);
}
}

View File

@@ -1,37 +0,0 @@
package com.orion.ops.module.infra.convert;
import com.orion.ops.module.infra.entity.domain.DataAliasDO;
import com.orion.ops.module.infra.entity.dto.data.DataAliasDTO;
import com.orion.ops.module.infra.entity.dto.data.DataAliasQueryDTO;
import com.orion.ops.module.infra.entity.dto.data.DataAliasUpdateDTO;
import com.orion.ops.module.infra.entity.request.data.DataAliasUpdateRequest;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import java.util.List;
/**
* 数据别名 对外服务对象转换器
*
* @author Jiahang Li
* @version 1.0.0
* @since 2023-12-18 17:37
*/
@Mapper
public interface DataAliasProviderConvert {
DataAliasProviderConvert MAPPER = Mappers.getMapper(DataAliasProviderConvert.class);
DataAliasDO to(DataAliasDTO dto);
DataAliasDTO to(DataAliasDO domain);
DataAliasDO to(DataAliasQueryDTO domain);
DataAliasDO to(DataAliasUpdateDTO update);
DataAliasUpdateRequest toRequest(DataAliasUpdateDTO request);
List<DataAliasDTO> toList(List<DataAliasDO> list);
}

View File

@@ -1,5 +1,6 @@
package com.orion.ops.module.infra.dao;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.orion.ops.framework.mybatis.core.mapper.IMapper;
import com.orion.ops.module.infra.entity.domain.DataAliasDO;
import org.apache.ibatis.annotations.Mapper;
@@ -14,4 +15,16 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface DataAliasDAO extends IMapper<DataAliasDO> {
/**
* 通过 userId 删除
*
* @param userId userId
* @return effect
*/
default int deleteByUserId(Long userId) {
LambdaQueryWrapper<DataAliasDO> wrapper = this.lambda()
.eq(DataAliasDO::getUserId, userId);
return this.delete(wrapper);
}
}

View File

@@ -1,34 +0,0 @@
package com.orion.ops.module.infra.define.operator;
import com.orion.ops.framework.biz.operator.log.core.annotation.Module;
import com.orion.ops.framework.biz.operator.log.core.factory.InitializingOperatorTypes;
import com.orion.ops.framework.biz.operator.log.core.model.OperatorType;
import static com.orion.ops.framework.biz.operator.log.core.enums.OperatorRiskLevel.*;
/**
* 数据别名 操作日志类型
*
* @author Jiahang Li
* @version 1.0.0
* @since 2023-12-18 17:37
*/
@Module("infra:data-alias")
public class DataAliasOperatorType extends InitializingOperatorTypes {
public static final String CREATE = "data-alias:create";
public static final String UPDATE = "data-alias:update";
public static final String DELETE = "data-alias:delete";
@Override
public OperatorType[] types() {
return new OperatorType[]{
new OperatorType(L, CREATE, "创建数据别名"),
new OperatorType(M, UPDATE, "更新数据别名"),
new OperatorType(H, DELETE, "删除数据别名"),
};
}
}

View File

@@ -40,7 +40,6 @@ public class DataAliasUpdateRequest implements Serializable {
@Schema(description = "数据类型")
private String type;
@NotBlank
@Size(max = 32)
@Schema(description = "别名")
private String alias;

View File

@@ -46,7 +46,7 @@ public interface DataAliasService {
* @param userId userId
* @return effect
*/
Integer deleteDataAliasByUserId(Long userId);
Integer deleteByUserId(Long userId);
/**
* 删除数据别名
@@ -55,6 +55,6 @@ public interface DataAliasService {
* @param relId relId
* @return effect
*/
Integer deleteDataAliasByRelId(String type, Long relId);
Integer deleteByRelId(String type, Long relId);
}

View File

@@ -1,5 +1,6 @@
package com.orion.ops.module.infra.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.orion.lang.function.Functions;
import com.orion.lang.utils.collect.Maps;
import com.orion.ops.framework.redis.core.utils.RedisMaps;
@@ -14,6 +15,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -31,18 +33,6 @@ public class DataAliasServiceImpl implements DataAliasService {
@Resource
private DataAliasDAO dataAliasDAO;
// @Override
// public Integer deleteDataAlias(DataAliasQueryRequest request) {
// log.info("DataAliasService.deleteDataAlias request: {}", JSON.toJSONString(request));
// // 条件
// LambdaQueryWrapper<DataAliasDO> wrapper = this.buildQueryWrapper(request);
// // 删除
// int effect = dataAliasDAO.delete(wrapper);
// log.info("DataAliasService.deleteDataAlias effect: {}", effect);
// // 删除缓存
// RedisMaps.delete(DataAliasCacheKeyDefine.DATA_ALIAS);
// return effect;
// }
@Override
public Integer updateDataAlias(DataAliasUpdateRequest request) {
@@ -77,7 +67,7 @@ public class DataAliasServiceImpl implements DataAliasService {
@Override
public String getDataAlias(Long userId, String type, Long relId) {
return null;
return this.getDataAlias(userId, type).get(relId);
}
@Override
@@ -98,7 +88,6 @@ public class DataAliasServiceImpl implements DataAliasService {
DataAliasDO::getAlias,
Functions.right())
);
// 设置屏障 防止穿透
CacheBarriers.MAP.check(entities);
// 设置缓存
@@ -111,13 +100,36 @@ public class DataAliasServiceImpl implements DataAliasService {
}
@Override
public Integer deleteDataAliasByUserId(Long userId) {
return null;
public Integer deleteByUserId(Long userId) {
// 删除
int effect = dataAliasDAO.deleteByUserId(userId);
// 删除缓存
RedisMaps.scanKeysDelete(DataAliasCacheKeyDefine.DATA_ALIAS.format(userId, "*"));
return effect;
}
@Override
public Integer deleteDataAliasByRelId(String type, Long relId) {
return null;
public Integer deleteByRelId(String type, Long relId) {
LambdaQueryWrapper<DataAliasDO> wrapper = dataAliasDAO.lambda()
.eq(DataAliasDO::getType, type)
.eq(DataAliasDO::getRelId, relId);
// 查询
List<Long> userIdList = dataAliasDAO.selectList(wrapper)
.stream()
.map(DataAliasDO::getUserId)
.distinct()
.collect(Collectors.toList());
if (userIdList.isEmpty()) {
return 0;
}
// 删除
int effect = dataAliasDAO.delete(wrapper);
// 删除缓存
List<String> keys = userIdList.stream()
.map(s -> DataAliasCacheKeyDefine.DATA_ALIAS.format(s, type))
.collect(Collectors.toList());
RedisMaps.delete(keys);
return effect;
}
}

View File

@@ -69,6 +69,9 @@ public class SystemUserServiceImpl implements SystemUserService {
@Resource
private DataPermissionService dataPermissionService;
@Resource
private DataAliasService dataAliasService;
@Override
public Long createSystemUser(SystemUserCreateRequest request) {
// 转换
@@ -246,6 +249,8 @@ public class SystemUserServiceImpl implements SystemUserService {
preferenceService.deletePreferenceByUserId(id);
// 删除用户数据权限
dataPermissionService.deleteByUserId(id);
// 删除用户数据别名
dataAliasService.deleteByUserId(id);
}
@Override