refactor: 重构数据额外配置.
This commit is contained in:
@@ -0,0 +1,56 @@
|
|||||||
|
package com.orion.ops.framework.common.handler.data;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.orion.ops.framework.common.handler.data.model.GenericsDataModel;
|
||||||
|
import com.orion.ops.framework.common.handler.data.strategy.MapDataStrategy;
|
||||||
|
import com.orion.spring.SpringHolder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 标准数据定义
|
||||||
|
*
|
||||||
|
* @author Jiahang Li
|
||||||
|
* @version 1.0.0
|
||||||
|
* @since 2023/12/21 0:07
|
||||||
|
*/
|
||||||
|
public interface GenericsDataDefinition {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取数据模型类型
|
||||||
|
*
|
||||||
|
* @return class
|
||||||
|
*/
|
||||||
|
Class<? extends GenericsDataModel> getType();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取数据处理策略
|
||||||
|
*
|
||||||
|
* @return class
|
||||||
|
*/
|
||||||
|
Class<? extends MapDataStrategy<? extends GenericsDataModel>> getStrategy();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取数据模型策略处理器
|
||||||
|
*
|
||||||
|
* @param <Model> Model
|
||||||
|
* @param <Strategy> Strategy
|
||||||
|
* @return StrategyBean
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
default <Model extends GenericsDataModel, Strategy extends MapDataStrategy<Model>> Strategy getStrategyBean() {
|
||||||
|
return (Strategy) SpringHolder.getBean(this.getStrategy());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 反序列化对象
|
||||||
|
*
|
||||||
|
* @param json json
|
||||||
|
* @param <Model> Model
|
||||||
|
* @return object
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
default <Model extends GenericsDataModel> Model parse(String json) {
|
||||||
|
return (Model) JSON.parseObject(json, this.getType());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -9,43 +9,60 @@ import com.orion.ops.framework.common.handler.data.model.GenericsDataModel;
|
|||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
* @since 2023/12/20 22:09
|
* @since 2023/12/20 22:09
|
||||||
*/
|
*/
|
||||||
public interface GenericsDataStrategy<Config extends GenericsDataModel, View> {
|
public interface GenericsDataStrategy<Model extends GenericsDataModel, View> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取默认值
|
* 获取默认值
|
||||||
*
|
*
|
||||||
* @return 默认值
|
* @return 默认值
|
||||||
*/
|
*/
|
||||||
Config getDefault();
|
Model getDefault();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新填充
|
* 更新填充
|
||||||
*
|
*
|
||||||
* @param before 修改前配置
|
* @param beforeModel 修改前的配置
|
||||||
* @param after 修改后配置
|
* @param afterModel 修改后的配置
|
||||||
*/
|
*/
|
||||||
void updateFill(Config before, Config after);
|
void updateFill(Model beforeModel, Model afterModel);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 预校验参数
|
* 预校验参数
|
||||||
*
|
*
|
||||||
* @param config config
|
* @param model model
|
||||||
*/
|
*/
|
||||||
void preValidConfig(Config config);
|
void preValid(Model model);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 校验参数
|
* 校验参数
|
||||||
*
|
*
|
||||||
* @param config config
|
* @param model model
|
||||||
*/
|
*/
|
||||||
void validConfig(Config config);
|
void valid(Model model);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行完整验证链
|
||||||
|
* <p>
|
||||||
|
* preValid > updateFill > preValid
|
||||||
|
*
|
||||||
|
* @param beforeModel beforeModel
|
||||||
|
* @param afterModel afterModel
|
||||||
|
*/
|
||||||
|
default void doValidChain(Model beforeModel, Model afterModel) {
|
||||||
|
// 预校验参数
|
||||||
|
this.preValid(afterModel);
|
||||||
|
// 更新填充
|
||||||
|
this.updateFill(beforeModel, afterModel);
|
||||||
|
// 校验参数
|
||||||
|
this.valid(afterModel);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 转为视图配置
|
* 转为视图配置
|
||||||
*
|
*
|
||||||
* @param config config
|
* @param model model
|
||||||
* @return 视图配置
|
* @return 视图配置
|
||||||
*/
|
*/
|
||||||
View toView(String config);
|
View toView(String model);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.orion.ops.framework.common.handler.data.strategy;
|
package com.orion.ops.framework.common.handler.data.strategy;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.orion.ops.framework.common.handler.data.model.GenericsDataModel;
|
import com.orion.ops.framework.common.handler.data.model.GenericsDataModel;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -11,6 +12,11 @@ import java.util.Map;
|
|||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
* @since 2023/12/20 22:11
|
* @since 2023/12/20 22:11
|
||||||
*/
|
*/
|
||||||
public interface MapDataStrategy<Config extends GenericsDataModel> extends GenericsDataStrategy<Config, Map<String, Object>> {
|
public interface MapDataStrategy<Model extends GenericsDataModel> extends GenericsDataStrategy<Model, Map<String, Object>> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
default Map<String, Object> toView(String model) {
|
||||||
|
return JSONObject.parseObject(model);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,4 +8,31 @@ Authorization: {{token}}
|
|||||||
"name": "alias"
|
"name": "alias"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
### 获取主机拓展信息
|
||||||
|
GET {{baseUrl}}/asset/host-extra/get?hostId=1&item=ssh
|
||||||
|
Authorization: {{token}}
|
||||||
|
|
||||||
|
### 获取多个主机拓展信息
|
||||||
|
POST {{baseUrl}}/asset/host-extra/list
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: {{token}}
|
||||||
|
|
||||||
|
{
|
||||||
|
"hostId": 1,
|
||||||
|
"items": [
|
||||||
|
"ssh"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
### 修改主机拓展信息
|
||||||
|
PUT {{baseUrl}}/asset/host-extra/update
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: {{token}}
|
||||||
|
|
||||||
|
{
|
||||||
|
"hostId": 1,
|
||||||
|
"item": "ssh",
|
||||||
|
"extra": "{\"authType\":\"DEFAULT\"}"
|
||||||
|
}
|
||||||
|
|
||||||
###
|
###
|
||||||
|
|||||||
@@ -1,18 +1,21 @@
|
|||||||
package com.orion.ops.module.asset.controller;
|
package com.orion.ops.module.asset.controller;
|
||||||
|
|
||||||
|
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.framework.web.core.annotation.RestWrapper;
|
||||||
import com.orion.ops.module.asset.entity.request.host.HostAliasUpdateRequest;
|
import com.orion.ops.module.asset.entity.request.host.HostAliasUpdateRequest;
|
||||||
|
import com.orion.ops.module.asset.entity.request.host.HostExtraQueryRequest;
|
||||||
|
import com.orion.ops.module.asset.entity.request.host.HostExtraUpdateRequest;
|
||||||
import com.orion.ops.module.asset.service.HostExtraService;
|
import com.orion.ops.module.asset.service.HostExtraService;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.PutMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 主机拓展信息 api
|
* 主机拓展信息 api
|
||||||
@@ -39,5 +42,27 @@ public class HostExtraController {
|
|||||||
return hostExtraService.updateHostAlias(request);
|
return hostExtraService.updateHostAlias(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@IgnoreLog(IgnoreLogMode.RET)
|
||||||
|
@GetMapping("/get")
|
||||||
|
@Operation(summary = "获取主机拓展信息")
|
||||||
|
@Parameter(name = "hostId", description = "hostId", required = true)
|
||||||
|
@Parameter(name = "item", description = "item", required = true)
|
||||||
|
public Map<String, Object> getHostExtra(@RequestParam("hostId") Long hostId, @RequestParam("item") String item) {
|
||||||
|
return hostExtraService.getHostExtra(hostId, item);
|
||||||
|
}
|
||||||
|
|
||||||
|
@IgnoreLog(IgnoreLogMode.RET)
|
||||||
|
@PostMapping("/list")
|
||||||
|
@Operation(summary = "获取多个主机拓展信息")
|
||||||
|
public Map<String, Map<String, Object>> getHostExtraList(@Validated @RequestBody HostExtraQueryRequest request) {
|
||||||
|
return hostExtraService.getHostExtraList(request);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/update")
|
||||||
|
@Operation(summary = "修改主机拓展信息")
|
||||||
|
public Integer updateHostExtra(@Validated @RequestBody HostExtraUpdateRequest request) {
|
||||||
|
return hostExtraService.updateHostExtra(request);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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.NotEmpty;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主机拓展信息查询请求
|
||||||
|
*
|
||||||
|
* @author Jiahang Li
|
||||||
|
* @version 1.0.0
|
||||||
|
* @since 2023/12/20 21:36
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Schema(name = "HostExtraQueryRequest", description = "主机拓展信息查询请求")
|
||||||
|
public class HostExtraQueryRequest {
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Schema(description = "主机id")
|
||||||
|
private Long hostId;
|
||||||
|
|
||||||
|
@NotEmpty
|
||||||
|
@Schema(description = "配置项")
|
||||||
|
private List<String> items;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
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.NotBlank;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主机拓展信息更新请求
|
||||||
|
*
|
||||||
|
* @author Jiahang Li
|
||||||
|
* @version 1.0.0
|
||||||
|
* @since 2023/12/20 21:36
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Schema(name = "HostExtraUpdateRequest", description = "主机拓展信息更新请求")
|
||||||
|
public class HostExtraUpdateRequest {
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Schema(description = "主机id")
|
||||||
|
private Long hostId;
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Schema(description = "配置项")
|
||||||
|
private String item;
|
||||||
|
|
||||||
|
@NotBlank
|
||||||
|
@Schema(description = "拓展信息")
|
||||||
|
private String extra;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
package com.orion.ops.module.asset.enums;
|
package com.orion.ops.module.asset.enums;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 主机验证类型
|
* 主机验证类型 - ssh
|
||||||
*
|
*
|
||||||
* @author Jiahang Li
|
* @author Jiahang Li
|
||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
* @since 2023/9/21 19:01
|
* @since 2023/9/21 19:01
|
||||||
*/
|
*/
|
||||||
public enum HostAuthTypeEnum {
|
public enum HostConfigSshAuthTypeEnum {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 密码验证
|
* 密码验证
|
||||||
@@ -26,11 +26,11 @@ public enum HostAuthTypeEnum {
|
|||||||
|
|
||||||
;
|
;
|
||||||
|
|
||||||
public static HostAuthTypeEnum of(String type) {
|
public static HostConfigSshAuthTypeEnum of(String type) {
|
||||||
if (type == null) {
|
if (type == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
for (HostAuthTypeEnum value : values()) {
|
for (HostConfigSshAuthTypeEnum value : values()) {
|
||||||
if (value.name().equals(type)) {
|
if (value.name().equals(type)) {
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
package com.orion.ops.module.asset.enums;
|
package com.orion.ops.module.asset.enums;
|
||||||
|
|
||||||
import com.orion.ops.framework.common.enums.EnableStatus;
|
import com.orion.ops.framework.common.enums.EnableStatus;
|
||||||
|
import com.orion.ops.framework.common.handler.data.GenericsDataDefinition;
|
||||||
import com.orion.ops.framework.common.handler.data.model.GenericsDataModel;
|
import com.orion.ops.framework.common.handler.data.model.GenericsDataModel;
|
||||||
import com.orion.ops.framework.common.handler.data.strategy.MapDataStrategy;
|
import com.orion.ops.framework.common.handler.data.strategy.MapDataStrategy;
|
||||||
import com.orion.ops.module.asset.handler.host.config.model.HostSshConfigModel;
|
import com.orion.ops.module.asset.handler.host.config.model.HostSshConfigModel;
|
||||||
import com.orion.ops.module.asset.handler.host.config.strategy.HostSshConfigStrategy;
|
import com.orion.ops.module.asset.handler.host.config.strategy.HostSshConfigStrategy;
|
||||||
import com.orion.spring.SpringHolder;
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
@@ -16,8 +16,9 @@ import lombok.Getter;
|
|||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
* @since 2023/9/11 14:37
|
* @since 2023/9/11 14:37
|
||||||
*/
|
*/
|
||||||
|
@Getter
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public enum HostConfigTypeEnum {
|
public enum HostConfigTypeEnum implements GenericsDataDefinition {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SSH 配置
|
* SSH 配置
|
||||||
@@ -26,12 +27,10 @@ public enum HostConfigTypeEnum {
|
|||||||
|
|
||||||
;
|
;
|
||||||
|
|
||||||
@Getter
|
|
||||||
private final Class<? extends GenericsDataModel> type;
|
private final Class<? extends GenericsDataModel> type;
|
||||||
|
|
||||||
private final Class<? extends MapDataStrategy<? extends GenericsDataModel>> strategy;
|
private final Class<? extends MapDataStrategy<? extends GenericsDataModel>> strategy;
|
||||||
|
|
||||||
@Getter
|
|
||||||
private final Integer defaultStatus;
|
private final Integer defaultStatus;
|
||||||
|
|
||||||
public static HostConfigTypeEnum of(String type) {
|
public static HostConfigTypeEnum of(String type) {
|
||||||
@@ -46,9 +45,4 @@ public enum HostConfigTypeEnum {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public <Config extends GenericsDataModel, T extends MapDataStrategy<Config>> T getStrategy() {
|
|
||||||
return (T) SpringHolder.getBean(strategy);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
package com.orion.ops.module.asset.enums;
|
||||||
|
|
||||||
|
import com.orion.ops.framework.common.handler.data.GenericsDataDefinition;
|
||||||
|
import com.orion.ops.framework.common.handler.data.model.GenericsDataModel;
|
||||||
|
import com.orion.ops.framework.common.handler.data.strategy.MapDataStrategy;
|
||||||
|
import com.orion.ops.module.asset.handler.host.extra.model.HostSshExtraModel;
|
||||||
|
import com.orion.ops.module.asset.handler.host.extra.strategy.HostSshExtraStrategy;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主机额外配置项枚举
|
||||||
|
*
|
||||||
|
* @author Jiahang Li
|
||||||
|
* @version 1.0.0
|
||||||
|
* @since 2023/12/20 22:48
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
public enum HostExtraItemEnum implements GenericsDataDefinition {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SSH 额外配置
|
||||||
|
*/
|
||||||
|
SSH("ssh", HostSshExtraModel.class, HostSshExtraStrategy.class),
|
||||||
|
|
||||||
|
;
|
||||||
|
|
||||||
|
private final String item;
|
||||||
|
|
||||||
|
private final Class<? extends GenericsDataModel> type;
|
||||||
|
|
||||||
|
private final Class<? extends MapDataStrategy<? extends GenericsDataModel>> strategy;
|
||||||
|
|
||||||
|
public static HostExtraItemEnum of(String type) {
|
||||||
|
if (type == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
for (HostExtraItemEnum value : values()) {
|
||||||
|
if (value.item.equals(type)) {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
package com.orion.ops.module.asset.enums;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主机认证类型
|
||||||
|
*
|
||||||
|
* @author Jiahang Li
|
||||||
|
* @version 1.0.0
|
||||||
|
* @since 2023/12/20 21:41
|
||||||
|
*/
|
||||||
|
public enum HostExtraSshAuthTypeEnum {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 默认验证方式
|
||||||
|
*/
|
||||||
|
DEFAULT,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 秘钥验证
|
||||||
|
*/
|
||||||
|
KEY,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 身份验证
|
||||||
|
*/
|
||||||
|
IDENTITY,
|
||||||
|
|
||||||
|
;
|
||||||
|
|
||||||
|
public static HostExtraSshAuthTypeEnum of(String type) {
|
||||||
|
if (type == null) {
|
||||||
|
return DEFAULT;
|
||||||
|
}
|
||||||
|
for (HostExtraSshAuthTypeEnum value : values()) {
|
||||||
|
if (value.name().equals(type)) {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return DEFAULT;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -12,7 +12,7 @@ import com.orion.ops.framework.common.security.PasswordModifier;
|
|||||||
import com.orion.ops.framework.common.utils.Valid;
|
import com.orion.ops.framework.common.utils.Valid;
|
||||||
import com.orion.ops.module.asset.dao.HostIdentityDAO;
|
import com.orion.ops.module.asset.dao.HostIdentityDAO;
|
||||||
import com.orion.ops.module.asset.dao.HostKeyDAO;
|
import com.orion.ops.module.asset.dao.HostKeyDAO;
|
||||||
import com.orion.ops.module.asset.enums.HostAuthTypeEnum;
|
import com.orion.ops.module.asset.enums.HostConfigSshAuthTypeEnum;
|
||||||
import com.orion.ops.module.asset.handler.host.config.model.HostSshConfigModel;
|
import com.orion.ops.module.asset.handler.host.config.model.HostSshConfigModel;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@@ -44,6 +44,7 @@ public class HostSshConfigStrategy implements MapDataStrategy<HostSshConfigModel
|
|||||||
return HostSshConfigModel.builder()
|
return HostSshConfigModel.builder()
|
||||||
.port(SSH_PORT)
|
.port(SSH_PORT)
|
||||||
.username(USERNAME)
|
.username(USERNAME)
|
||||||
|
.authType(HostConfigSshAuthTypeEnum.PASSWORD.name())
|
||||||
.charset(Const.UTF_8)
|
.charset(Const.UTF_8)
|
||||||
.connectTimeout(Const.MS_S_10)
|
.connectTimeout(Const.MS_S_10)
|
||||||
.fileNameCharset(Const.UTF_8)
|
.fileNameCharset(Const.UTF_8)
|
||||||
@@ -52,37 +53,37 @@ public class HostSshConfigStrategy implements MapDataStrategy<HostSshConfigModel
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void preValidConfig(HostSshConfigModel config) {
|
public void preValid(HostSshConfigModel model) {
|
||||||
// 验证认证类型
|
// 验证认证类型
|
||||||
Valid.valid(HostAuthTypeEnum::of, config.getAuthType());
|
Valid.valid(HostConfigSshAuthTypeEnum::of, model.getAuthType());
|
||||||
// 验证编码格式
|
// 验证编码格式
|
||||||
this.validCharset(config.getCharset());
|
this.validCharset(model.getCharset());
|
||||||
this.validCharset(config.getFileNameCharset());
|
this.validCharset(model.getFileNameCharset());
|
||||||
this.validCharset(config.getFileContentCharset());
|
this.validCharset(model.getFileContentCharset());
|
||||||
// 检查主机秘钥是否存在
|
// 检查主机秘钥是否存在
|
||||||
Long keyId = config.getKeyId();
|
Long keyId = model.getKeyId();
|
||||||
if (keyId != null) {
|
if (keyId != null) {
|
||||||
Valid.notNull(hostKeyDAO.selectById(keyId), ErrorMessage.KEY_ABSENT);
|
Valid.notNull(hostKeyDAO.selectById(keyId), ErrorMessage.KEY_ABSENT);
|
||||||
}
|
}
|
||||||
// 检查主机身份是否存在
|
// 检查主机身份是否存在
|
||||||
Long identityId = config.getIdentityId();
|
Long identityId = model.getIdentityId();
|
||||||
if (identityId != null) {
|
if (identityId != null) {
|
||||||
Valid.notNull(hostIdentityDAO.selectById(identityId), ErrorMessage.IDENTITY_ABSENT);
|
Valid.notNull(hostIdentityDAO.selectById(identityId), ErrorMessage.IDENTITY_ABSENT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void validConfig(HostSshConfigModel config) {
|
public void valid(HostSshConfigModel model) {
|
||||||
// 验证填充后的参数
|
// 验证填充后的参数
|
||||||
Valid.valid(config);
|
Valid.valid(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateFill(HostSshConfigModel before, HostSshConfigModel after) {
|
public void updateFill(HostSshConfigModel beforeModel, HostSshConfigModel afterModel) {
|
||||||
// 加密密码
|
// 加密密码
|
||||||
this.checkEncryptPassword(before, after);
|
this.checkEncryptPassword(beforeModel, afterModel);
|
||||||
after.setHasPassword(null);
|
afterModel.setHasPassword(null);
|
||||||
after.setUseNewPassword(null);
|
afterModel.setUseNewPassword(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -104,7 +105,7 @@ public class HostSshConfigStrategy implements MapDataStrategy<HostSshConfigModel
|
|||||||
*/
|
*/
|
||||||
private void checkEncryptPassword(HostSshConfigModel before, HostSshConfigModel after) {
|
private void checkEncryptPassword(HostSshConfigModel before, HostSshConfigModel after) {
|
||||||
// 非密码认证则直接赋值
|
// 非密码认证则直接赋值
|
||||||
if (!HostAuthTypeEnum.PASSWORD.name().equals(after.getAuthType())) {
|
if (!HostConfigSshAuthTypeEnum.PASSWORD.name().equals(after.getAuthType())) {
|
||||||
after.setPassword(before.getPassword());
|
after.setPassword(before.getPassword());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
package com.orion.ops.module.asset.handler.host.extra.model;
|
||||||
|
|
||||||
|
import com.orion.ops.framework.common.handler.data.model.GenericsDataModel;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主机拓展信息 - ssh 模型
|
||||||
|
*
|
||||||
|
* @author Jiahang Li
|
||||||
|
* @version 1.0.0
|
||||||
|
* @since 2023/12/20 21:36
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Schema(name = "HostExtraSshModel", description = "主机拓展信息 - ssh 模型")
|
||||||
|
public class HostSshExtraModel implements GenericsDataModel {
|
||||||
|
|
||||||
|
@Schema(description = "认证方式")
|
||||||
|
private String authType;
|
||||||
|
|
||||||
|
@Schema(description = "认证方式")
|
||||||
|
private String username;
|
||||||
|
|
||||||
|
@Schema(description = "主机秘钥")
|
||||||
|
private Long keyId;
|
||||||
|
|
||||||
|
@Schema(description = "主机身份")
|
||||||
|
private Long identityId;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
package com.orion.ops.module.asset.handler.host.extra.strategy;
|
||||||
|
|
||||||
|
import com.orion.ops.framework.common.handler.data.strategy.MapDataStrategy;
|
||||||
|
import com.orion.ops.module.asset.enums.HostExtraSshAuthTypeEnum;
|
||||||
|
import com.orion.ops.module.asset.handler.host.extra.model.HostSshExtraModel;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主机拓展信息 - ssh 模型处理策略
|
||||||
|
*
|
||||||
|
* @author Jiahang Li
|
||||||
|
* @version 1.0.0
|
||||||
|
* @since 2023/12/20 22:17
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
public class HostSshExtraStrategy implements MapDataStrategy<HostSshExtraModel> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HostSshExtraModel getDefault() {
|
||||||
|
return HostSshExtraModel.builder()
|
||||||
|
.authType(HostExtraSshAuthTypeEnum.DEFAULT.name())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateFill(HostSshExtraModel beforeModel, HostSshExtraModel afterModel) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void preValid(HostSshExtraModel model) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void valid(HostSshExtraModel model) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
package com.orion.ops.module.asset.service;
|
package com.orion.ops.module.asset.service;
|
||||||
|
|
||||||
import com.orion.ops.module.asset.entity.request.host.HostAliasUpdateRequest;
|
import com.orion.ops.module.asset.entity.request.host.HostAliasUpdateRequest;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import com.orion.ops.module.asset.entity.request.host.HostExtraQueryRequest;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import com.orion.ops.module.asset.entity.request.host.HostExtraUpdateRequest;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 主机拓展信息 服务
|
* 主机拓展信息 服务
|
||||||
@@ -19,6 +21,45 @@ public interface HostExtraService {
|
|||||||
* @param request request
|
* @param request request
|
||||||
* @return effect
|
* @return effect
|
||||||
*/
|
*/
|
||||||
Integer updateHostAlias(@Validated @RequestBody HostAliasUpdateRequest request);
|
Integer updateHostAlias(HostAliasUpdateRequest request);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取主机额外配置
|
||||||
|
*
|
||||||
|
* @param hostId hostId
|
||||||
|
* @param item item
|
||||||
|
* @return extra
|
||||||
|
*/
|
||||||
|
Map<String, Object> getHostExtra(Long hostId, String item);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取多个主机拓展信息
|
||||||
|
*
|
||||||
|
* @param request request
|
||||||
|
* @return type:extra
|
||||||
|
*/
|
||||||
|
Map<String, Map<String, Object>> getHostExtraList(HostExtraQueryRequest request);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改主机拓展信息
|
||||||
|
*
|
||||||
|
* @param request request
|
||||||
|
* @return effect
|
||||||
|
*/
|
||||||
|
Integer updateHostExtra(HostExtraUpdateRequest request);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除主机秘钥回调
|
||||||
|
*
|
||||||
|
* @param id id
|
||||||
|
*/
|
||||||
|
void deleteHostKeyCallback(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除主机身份回调
|
||||||
|
*
|
||||||
|
* @param id id
|
||||||
|
*/
|
||||||
|
void deleteHostIdentityCallback(Long id);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,6 +44,8 @@ public class HostConfigServiceImpl implements HostConfigService {
|
|||||||
@Resource
|
@Resource
|
||||||
private HostConfigDAO hostConfigDAO;
|
private HostConfigDAO hostConfigDAO;
|
||||||
|
|
||||||
|
// FIXME 动态初始化
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public HostConfigVO getHostConfig(Long hostId, String type) {
|
public HostConfigVO getHostConfig(Long hostId, String type) {
|
||||||
HostConfigTypeEnum configType = Valid.valid(HostConfigTypeEnum::of, type);
|
HostConfigTypeEnum configType = Valid.valid(HostConfigTypeEnum::of, type);
|
||||||
@@ -53,7 +55,7 @@ public class HostConfigServiceImpl implements HostConfigService {
|
|||||||
// 转换
|
// 转换
|
||||||
HostConfigVO vo = HostConfigConvert.MAPPER.to(config);
|
HostConfigVO vo = HostConfigConvert.MAPPER.to(config);
|
||||||
// 获取配置
|
// 获取配置
|
||||||
Map<String, Object> configMap = configType.getStrategy().toView(config.getConfig());
|
Map<String, Object> configMap = configType.getStrategyBean().toView(config.getConfig());
|
||||||
vo.setConfig(configMap);
|
vo.setConfig(configMap);
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
@@ -82,7 +84,7 @@ public class HostConfigServiceImpl implements HostConfigService {
|
|||||||
HostConfigVO vo = HostConfigConvert.MAPPER.to(s);
|
HostConfigVO vo = HostConfigConvert.MAPPER.to(s);
|
||||||
// 获取配置
|
// 获取配置
|
||||||
Map<String, Object> config = HostConfigTypeEnum.of(s.getType())
|
Map<String, Object> config = HostConfigTypeEnum.of(s.getType())
|
||||||
.getStrategy()
|
.getStrategyBean()
|
||||||
.toView(s.getConfig());
|
.toView(s.getConfig());
|
||||||
vo.setConfig(config);
|
vo.setConfig(config);
|
||||||
return vo;
|
return vo;
|
||||||
@@ -96,7 +98,7 @@ public class HostConfigServiceImpl implements HostConfigService {
|
|||||||
HostConfigDO record = hostConfigDAO.selectById(id);
|
HostConfigDO record = hostConfigDAO.selectById(id);
|
||||||
Valid.notNull(record, ErrorMessage.CONFIG_ABSENT);
|
Valid.notNull(record, ErrorMessage.CONFIG_ABSENT);
|
||||||
HostConfigTypeEnum type = Valid.valid(HostConfigTypeEnum::of, record.getType());
|
HostConfigTypeEnum type = Valid.valid(HostConfigTypeEnum::of, record.getType());
|
||||||
GenericsDataModel config = JSON.parseObject(request.getConfig(), type.getType());
|
GenericsDataModel newConfig = type.parse(request.getConfig());
|
||||||
// 查询主机
|
// 查询主机
|
||||||
HostDO host = hostDAO.selectById(record.getHostId());
|
HostDO host = hostDAO.selectById(record.getHostId());
|
||||||
Valid.notNull(host, ErrorMessage.HOST_ABSENT);
|
Valid.notNull(host, ErrorMessage.HOST_ABSENT);
|
||||||
@@ -106,19 +108,15 @@ public class HostConfigServiceImpl implements HostConfigService {
|
|||||||
OperatorLogs.add(OperatorLogs.TYPE, type.name());
|
OperatorLogs.add(OperatorLogs.TYPE, type.name());
|
||||||
// 检查版本
|
// 检查版本
|
||||||
Valid.eq(record.getVersion(), request.getVersion(), ErrorMessage.DATA_MODIFIED);
|
Valid.eq(record.getVersion(), request.getVersion(), ErrorMessage.DATA_MODIFIED);
|
||||||
MapDataStrategy<GenericsDataModel> strategy = type.getStrategy();
|
MapDataStrategy<GenericsDataModel> strategy = type.getStrategyBean();
|
||||||
// 预校验参数
|
GenericsDataModel beforeConfig = type.parse(record.getConfig());
|
||||||
strategy.preValidConfig(config);
|
// 更新前校验
|
||||||
// 更新填充
|
strategy.doValidChain(beforeConfig, newConfig);
|
||||||
GenericsDataModel beforeConfig = JSON.parseObject(record.getConfig(), type.getType());
|
|
||||||
strategy.updateFill(beforeConfig, config);
|
|
||||||
// 检查参数
|
|
||||||
strategy.validConfig(config);
|
|
||||||
// 修改配置
|
// 修改配置
|
||||||
HostConfigDO update = new HostConfigDO();
|
HostConfigDO update = new HostConfigDO();
|
||||||
update.setId(id);
|
update.setId(id);
|
||||||
update.setVersion(request.getVersion());
|
update.setVersion(request.getVersion());
|
||||||
update.setConfig(config.serial());
|
update.setConfig(newConfig.serial());
|
||||||
int effect = hostConfigDAO.updateById(update);
|
int effect = hostConfigDAO.updateById(update);
|
||||||
Valid.version(effect);
|
Valid.version(effect);
|
||||||
return update.getVersion();
|
return update.getVersion();
|
||||||
@@ -158,7 +156,7 @@ public class HostConfigServiceImpl implements HostConfigService {
|
|||||||
insert.setHostId(hostId);
|
insert.setHostId(hostId);
|
||||||
insert.setType(s.name());
|
insert.setType(s.name());
|
||||||
insert.setStatus(s.getDefaultStatus());
|
insert.setStatus(s.getDefaultStatus());
|
||||||
insert.setConfig(s.getStrategy().getDefault().serial());
|
insert.setConfig(s.getStrategyBean().getDefault().serial());
|
||||||
insert.setVersion(Const.DEFAULT_VERSION);
|
insert.setVersion(Const.DEFAULT_VERSION);
|
||||||
return insert;
|
return insert;
|
||||||
}).collect(Collectors.toList());
|
}).collect(Collectors.toList());
|
||||||
|
|||||||
@@ -1,14 +1,30 @@
|
|||||||
package com.orion.ops.module.asset.service.impl;
|
package com.orion.ops.module.asset.service.impl;
|
||||||
|
|
||||||
|
import com.orion.lang.function.Functions;
|
||||||
|
import com.orion.lang.utils.collect.Maps;
|
||||||
|
import com.orion.ops.framework.common.constant.ErrorMessage;
|
||||||
|
import com.orion.ops.framework.common.handler.data.model.GenericsDataModel;
|
||||||
|
import com.orion.ops.framework.common.handler.data.strategy.MapDataStrategy;
|
||||||
|
import com.orion.ops.framework.common.utils.Valid;
|
||||||
import com.orion.ops.framework.security.core.utils.SecurityUtils;
|
import com.orion.ops.framework.security.core.utils.SecurityUtils;
|
||||||
import com.orion.ops.module.asset.entity.request.host.HostAliasUpdateRequest;
|
import com.orion.ops.module.asset.entity.request.host.HostAliasUpdateRequest;
|
||||||
|
import com.orion.ops.module.asset.entity.request.host.HostExtraQueryRequest;
|
||||||
|
import com.orion.ops.module.asset.entity.request.host.HostExtraUpdateRequest;
|
||||||
|
import com.orion.ops.module.asset.enums.HostExtraItemEnum;
|
||||||
import com.orion.ops.module.asset.service.HostExtraService;
|
import com.orion.ops.module.asset.service.HostExtraService;
|
||||||
import com.orion.ops.module.infra.api.DataAliasApi;
|
import com.orion.ops.module.infra.api.DataAliasApi;
|
||||||
|
import com.orion.ops.module.infra.api.DataExtraApi;
|
||||||
import com.orion.ops.module.infra.entity.dto.data.DataAliasUpdateDTO;
|
import com.orion.ops.module.infra.entity.dto.data.DataAliasUpdateDTO;
|
||||||
|
import com.orion.ops.module.infra.entity.dto.data.DataExtraDTO;
|
||||||
|
import com.orion.ops.module.infra.entity.dto.data.DataExtraQueryDTO;
|
||||||
|
import com.orion.ops.module.infra.entity.dto.data.DataExtraSetDTO;
|
||||||
import com.orion.ops.module.infra.enums.DataExtraTypeEnum;
|
import com.orion.ops.module.infra.enums.DataExtraTypeEnum;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 主机拓展信息 服务实现类
|
* 主机拓展信息 服务实现类
|
||||||
@@ -23,6 +39,9 @@ public class HostExtraServiceImpl implements HostExtraService {
|
|||||||
@Resource
|
@Resource
|
||||||
private DataAliasApi dataAliasApi;
|
private DataAliasApi dataAliasApi;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private DataExtraApi dataExtraApi;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer updateHostAlias(HostAliasUpdateRequest request) {
|
public Integer updateHostAlias(HostAliasUpdateRequest request) {
|
||||||
DataAliasUpdateDTO update = DataAliasUpdateDTO.builder()
|
DataAliasUpdateDTO update = DataAliasUpdateDTO.builder()
|
||||||
@@ -33,4 +52,112 @@ public class HostExtraServiceImpl implements HostExtraService {
|
|||||||
return dataAliasApi.updateDataAlias(update, DataExtraTypeEnum.HOST);
|
return dataAliasApi.updateDataAlias(update, DataExtraTypeEnum.HOST);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<String, Object> getHostExtra(Long hostId, String item) {
|
||||||
|
HostExtraItemEnum extraItem = Valid.valid(HostExtraItemEnum::of, item);
|
||||||
|
// 查询配置项
|
||||||
|
Long userId = SecurityUtils.getLoginUserId();
|
||||||
|
DataExtraQueryDTO query = DataExtraQueryDTO.builder()
|
||||||
|
.userId(userId)
|
||||||
|
.relId(hostId)
|
||||||
|
.item(item)
|
||||||
|
.build();
|
||||||
|
String extraValue = dataExtraApi.getExtraValue(query, DataExtraTypeEnum.HOST);
|
||||||
|
// 检查初始化并转为视图
|
||||||
|
return this.checkItemAndToView(extraItem, extraValue, userId, hostId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<String, Map<String, Object>> getHostExtraList(HostExtraQueryRequest request) {
|
||||||
|
Long hostId = request.getHostId();
|
||||||
|
List<String> items = request.getItems();
|
||||||
|
List<HostExtraItemEnum> extraItems = items.stream()
|
||||||
|
.map(s -> Valid.valid(HostExtraItemEnum::of, s))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
// 查询配置项
|
||||||
|
Long userId = SecurityUtils.getLoginUserId();
|
||||||
|
DataExtraQueryDTO query = DataExtraQueryDTO.builder()
|
||||||
|
.userId(userId)
|
||||||
|
.relId(hostId)
|
||||||
|
.items(items)
|
||||||
|
.build();
|
||||||
|
Map<String, String> extraValues = dataExtraApi.getExtraItems(query, DataExtraTypeEnum.HOST)
|
||||||
|
.stream()
|
||||||
|
.collect(Collectors.toMap(
|
||||||
|
DataExtraDTO::getItem,
|
||||||
|
DataExtraDTO::getValue,
|
||||||
|
Functions.right())
|
||||||
|
);
|
||||||
|
// 检查初始化
|
||||||
|
Map<String, Map<String, Object>> result = Maps.newMap();
|
||||||
|
for (HostExtraItemEnum extraItem : extraItems) {
|
||||||
|
String item = extraItem.getItem();
|
||||||
|
// 检查初始化并转为视图
|
||||||
|
Map<String, Object> extraValue = this.checkItemAndToView(extraItem, extraValues.get(item), userId, hostId);
|
||||||
|
result.put(item, extraValue);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer updateHostExtra(HostExtraUpdateRequest request) {
|
||||||
|
String item = request.getItem();
|
||||||
|
Long hostId = request.getHostId();
|
||||||
|
Long userId = SecurityUtils.getLoginUserId();
|
||||||
|
HostExtraItemEnum extraItem = Valid.valid(HostExtraItemEnum::of, item);
|
||||||
|
MapDataStrategy<GenericsDataModel> strategy = extraItem.getStrategyBean();
|
||||||
|
// 查询原始配置
|
||||||
|
DataExtraQueryDTO query = DataExtraQueryDTO.builder()
|
||||||
|
.userId(userId)
|
||||||
|
.relId(hostId)
|
||||||
|
.item(item)
|
||||||
|
.build();
|
||||||
|
DataExtraDTO beforeExtraItem = dataExtraApi.getExtraItem(query, DataExtraTypeEnum.HOST);
|
||||||
|
Valid.notNull(beforeExtraItem, ErrorMessage.CONFIG_ABSENT);
|
||||||
|
GenericsDataModel newExtra = extraItem.parse(request.getExtra());
|
||||||
|
GenericsDataModel beforeExtra = extraItem.parse(beforeExtraItem.getValue());
|
||||||
|
// 更新验证
|
||||||
|
strategy.doValidChain(beforeExtra, newExtra);
|
||||||
|
// 更新配置
|
||||||
|
return dataExtraApi.updateExtraValue(beforeExtraItem.getId(), newExtra.serial());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteHostKeyCallback(Long id) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteHostIdentityCallback(Long id) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检查配置项并且转为视图 (不存在则初始化默认值)
|
||||||
|
*
|
||||||
|
* @param extraItem extraItem
|
||||||
|
* @param extraValue extraValue
|
||||||
|
* @param userId userId
|
||||||
|
* @param hostId hostId
|
||||||
|
* @return viewMap
|
||||||
|
*/
|
||||||
|
private Map<String, Object> checkItemAndToView(HostExtraItemEnum extraItem, String extraValue, Long userId, Long hostId) {
|
||||||
|
String item = extraItem.getItem();
|
||||||
|
MapDataStrategy<GenericsDataModel> strategy = extraItem.getStrategyBean();
|
||||||
|
if (extraValue == null) {
|
||||||
|
// 初始化默认数据
|
||||||
|
extraValue = strategy.getDefault().serial();
|
||||||
|
// 插入默认值
|
||||||
|
DataExtraSetDTO set = DataExtraSetDTO.builder()
|
||||||
|
.userId(userId)
|
||||||
|
.relId(hostId)
|
||||||
|
.item(item)
|
||||||
|
.value(extraValue)
|
||||||
|
.build();
|
||||||
|
dataExtraApi.addExtraItem(set, DataExtraTypeEnum.HOST);
|
||||||
|
}
|
||||||
|
return strategy.toView(extraValue);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package com.orion.ops.module.infra.api;
|
|||||||
|
|
||||||
import com.orion.ops.module.infra.entity.dto.data.DataExtraDTO;
|
import com.orion.ops.module.infra.entity.dto.data.DataExtraDTO;
|
||||||
import com.orion.ops.module.infra.entity.dto.data.DataExtraQueryDTO;
|
import com.orion.ops.module.infra.entity.dto.data.DataExtraQueryDTO;
|
||||||
import com.orion.ops.module.infra.entity.dto.data.DataExtraUpdateDTO;
|
import com.orion.ops.module.infra.entity.dto.data.DataExtraSetDTO;
|
||||||
import com.orion.ops.module.infra.enums.DataExtraTypeEnum;
|
import com.orion.ops.module.infra.enums.DataExtraTypeEnum;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -18,20 +18,38 @@ import java.util.Map;
|
|||||||
public interface DataExtraApi {
|
public interface DataExtraApi {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新数据拓展信息
|
* 更新数据拓展信息 不存在则新增
|
||||||
*
|
*
|
||||||
* @param type type
|
* @param type type
|
||||||
* @param dto dto
|
* @param dto dto
|
||||||
* @return effect
|
* @return effect
|
||||||
*/
|
*/
|
||||||
Integer updateExtraItem(DataExtraUpdateDTO dto, DataExtraTypeEnum type);
|
Integer setExtraItem(DataExtraSetDTO dto, DataExtraTypeEnum type);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增数据拓展信息
|
||||||
|
*
|
||||||
|
* @param dto dto
|
||||||
|
* @param type type
|
||||||
|
* @return id
|
||||||
|
*/
|
||||||
|
Long addExtraItem(DataExtraSetDTO dto, DataExtraTypeEnum type);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新数据拓展信息
|
||||||
|
*
|
||||||
|
* @param id id
|
||||||
|
* @param value value
|
||||||
|
* @return effect
|
||||||
|
*/
|
||||||
|
Integer updateExtraValue(Long id, String value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量更新数据拓展信息
|
* 批量更新数据拓展信息
|
||||||
*
|
*
|
||||||
* @param map map
|
* @param map map
|
||||||
*/
|
*/
|
||||||
void batchUpdate(Map<Long, Object> map);
|
void batchUpdateExtraValue(Map<Long, String> map);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询额外配置项
|
* 查询额外配置项
|
||||||
@@ -40,7 +58,7 @@ public interface DataExtraApi {
|
|||||||
* @param dto dto
|
* @param dto dto
|
||||||
* @return item
|
* @return item
|
||||||
*/
|
*/
|
||||||
String getExtraItem(DataExtraQueryDTO dto, DataExtraTypeEnum type);
|
String getExtraValue(DataExtraQueryDTO dto, DataExtraTypeEnum type);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询额外配置项
|
* 查询额外配置项
|
||||||
@@ -49,7 +67,7 @@ public interface DataExtraApi {
|
|||||||
* @param type type
|
* @param type type
|
||||||
* @return item
|
* @return item
|
||||||
*/
|
*/
|
||||||
Map<Long, String> getExtraItemList(DataExtraQueryDTO dto, DataExtraTypeEnum type);
|
Map<Long, String> getExtraItemValues(DataExtraQueryDTO dto, DataExtraTypeEnum type);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询额外配置
|
* 查询额外配置
|
||||||
@@ -58,7 +76,16 @@ public interface DataExtraApi {
|
|||||||
* @param type type
|
* @param type type
|
||||||
* @return effect
|
* @return effect
|
||||||
*/
|
*/
|
||||||
List<DataExtraDTO> getExtraList(DataExtraQueryDTO dto, DataExtraTypeEnum type);
|
DataExtraDTO getExtraItem(DataExtraQueryDTO dto, DataExtraTypeEnum type);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询额外配置
|
||||||
|
*
|
||||||
|
* @param dto dto
|
||||||
|
* @param type type
|
||||||
|
* @return effect
|
||||||
|
*/
|
||||||
|
List<DataExtraDTO> getExtraItems(DataExtraQueryDTO dto, DataExtraTypeEnum type);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过 relId 删除
|
* 通过 relId 删除
|
||||||
|
|||||||
@@ -36,10 +36,10 @@ public class DataExtraDTO implements Serializable {
|
|||||||
@Schema(description = "数据类型")
|
@Schema(description = "数据类型")
|
||||||
private String type;
|
private String type;
|
||||||
|
|
||||||
@Schema(description = "拓展项")
|
@Schema(description = "配置项")
|
||||||
private String item;
|
private String item;
|
||||||
|
|
||||||
@Schema(description = "拓展值")
|
@Schema(description = "配置值")
|
||||||
private String value;
|
private String value;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ import java.io.Serializable;
|
|||||||
@Builder
|
@Builder
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Schema(name = "DataExtraUpdateDTO", description = "数据拓展信息 更新请求业务对象")
|
@Schema(name = "DataExtraSetDTO", description = "数据拓展信息 更新请求业务对象")
|
||||||
public class DataExtraUpdateDTO implements Serializable {
|
public class DataExtraSetDTO implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
@@ -37,11 +37,11 @@ public class DataExtraUpdateDTO implements Serializable {
|
|||||||
|
|
||||||
@NotBlank
|
@NotBlank
|
||||||
@Size(max = 32)
|
@Size(max = 32)
|
||||||
@Schema(description = "拓展项")
|
@Schema(description = "配置项")
|
||||||
private String item;
|
private String item;
|
||||||
|
|
||||||
@NotBlank
|
@NotBlank
|
||||||
@Schema(description = "拓展值")
|
@Schema(description = "配置值")
|
||||||
private String value;
|
private String value;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -3,11 +3,12 @@ package com.orion.ops.module.infra.api.impl;
|
|||||||
import com.orion.ops.framework.common.utils.Valid;
|
import com.orion.ops.framework.common.utils.Valid;
|
||||||
import com.orion.ops.module.infra.api.DataExtraApi;
|
import com.orion.ops.module.infra.api.DataExtraApi;
|
||||||
import com.orion.ops.module.infra.convert.DataExtraProviderConvert;
|
import com.orion.ops.module.infra.convert.DataExtraProviderConvert;
|
||||||
|
import com.orion.ops.module.infra.entity.domain.DataExtraDO;
|
||||||
import com.orion.ops.module.infra.entity.dto.data.DataExtraDTO;
|
import com.orion.ops.module.infra.entity.dto.data.DataExtraDTO;
|
||||||
import com.orion.ops.module.infra.entity.dto.data.DataExtraQueryDTO;
|
import com.orion.ops.module.infra.entity.dto.data.DataExtraQueryDTO;
|
||||||
import com.orion.ops.module.infra.entity.dto.data.DataExtraUpdateDTO;
|
import com.orion.ops.module.infra.entity.dto.data.DataExtraSetDTO;
|
||||||
import com.orion.ops.module.infra.entity.request.data.DataExtraQueryRequest;
|
import com.orion.ops.module.infra.entity.request.data.DataExtraQueryRequest;
|
||||||
import com.orion.ops.module.infra.entity.request.data.DataExtraUpdateRequest;
|
import com.orion.ops.module.infra.entity.request.data.DataExtraSetRequest;
|
||||||
import com.orion.ops.module.infra.enums.DataExtraTypeEnum;
|
import com.orion.ops.module.infra.enums.DataExtraTypeEnum;
|
||||||
import com.orion.ops.module.infra.service.DataExtraService;
|
import com.orion.ops.module.infra.service.DataExtraService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -33,42 +34,65 @@ public class DataExtraApiImpl implements DataExtraApi {
|
|||||||
private DataExtraService dataExtraService;
|
private DataExtraService dataExtraService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer updateExtraItem(DataExtraUpdateDTO dto, DataExtraTypeEnum type) {
|
public Integer setExtraItem(DataExtraSetDTO dto, DataExtraTypeEnum type) {
|
||||||
Valid.valid(dto);
|
Valid.valid(dto);
|
||||||
// 更新
|
// 更新
|
||||||
DataExtraUpdateRequest request = DataExtraProviderConvert.MAPPER.to(dto);
|
DataExtraSetRequest request = DataExtraProviderConvert.MAPPER.to(dto);
|
||||||
request.setType(type.name());
|
request.setType(type.name());
|
||||||
return dataExtraService.updateExtraItem(request);
|
return dataExtraService.setExtraItem(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void batchUpdate(Map<Long, Object> map) {
|
public Long addExtraItem(DataExtraSetDTO dto, DataExtraTypeEnum type) {
|
||||||
dataExtraService.batchUpdate(map);
|
Valid.valid(dto);
|
||||||
|
// 更新
|
||||||
|
DataExtraSetRequest request = DataExtraProviderConvert.MAPPER.to(dto);
|
||||||
|
request.setType(type.name());
|
||||||
|
return dataExtraService.addExtraItem(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getExtraItem(DataExtraQueryDTO dto, DataExtraTypeEnum type) {
|
public Integer updateExtraValue(Long id, String value) {
|
||||||
|
return dataExtraService.updateExtraValue(id, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void batchUpdateExtraValue(Map<Long, String> map) {
|
||||||
|
dataExtraService.batchUpdateExtraValue(map);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getExtraValue(DataExtraQueryDTO dto, DataExtraTypeEnum type) {
|
||||||
Valid.allNotNull(dto.getUserId(), dto.getRelId(), dto.getItem());
|
Valid.allNotNull(dto.getUserId(), dto.getRelId(), dto.getItem());
|
||||||
// 查询
|
// 查询
|
||||||
DataExtraQueryRequest request = DataExtraProviderConvert.MAPPER.to(dto);
|
DataExtraQueryRequest request = DataExtraProviderConvert.MAPPER.to(dto);
|
||||||
request.setType(type.name());
|
request.setType(type.name());
|
||||||
return dataExtraService.getExtraItem(request);
|
return dataExtraService.getExtraItemValue(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<Long, String> getExtraItemList(DataExtraQueryDTO dto, DataExtraTypeEnum type) {
|
public Map<Long, String> getExtraItemValues(DataExtraQueryDTO dto, DataExtraTypeEnum type) {
|
||||||
Valid.allNotNull(dto.getUserId(), dto.getRelIdList(), dto.getItem());
|
Valid.allNotNull(dto.getUserId(), dto.getRelIdList(), dto.getItem());
|
||||||
// 查询
|
// 查询
|
||||||
DataExtraQueryRequest request = DataExtraProviderConvert.MAPPER.to(dto);
|
DataExtraQueryRequest request = DataExtraProviderConvert.MAPPER.to(dto);
|
||||||
request.setType(type.name());
|
request.setType(type.name());
|
||||||
return dataExtraService.getExtraItemList(request);
|
return dataExtraService.getExtraItemValues(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<DataExtraDTO> getExtraList(DataExtraQueryDTO dto, DataExtraTypeEnum type) {
|
public DataExtraDTO getExtraItem(DataExtraQueryDTO dto, DataExtraTypeEnum type) {
|
||||||
|
Valid.allNotNull(dto.getUserId(), dto.getRelId(), dto.getItem());
|
||||||
DataExtraQueryRequest request = DataExtraProviderConvert.MAPPER.to(dto);
|
DataExtraQueryRequest request = DataExtraProviderConvert.MAPPER.to(dto);
|
||||||
request.setType(type.name());
|
request.setType(type.name());
|
||||||
return dataExtraService.getExtraList(request)
|
DataExtraDO extraItem = dataExtraService.getExtraItem(request);
|
||||||
|
return DataExtraProviderConvert.MAPPER.to(extraItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<DataExtraDTO> getExtraItems(DataExtraQueryDTO dto, DataExtraTypeEnum type) {
|
||||||
|
DataExtraQueryRequest request = DataExtraProviderConvert.MAPPER.to(dto);
|
||||||
|
request.setType(type.name());
|
||||||
|
return dataExtraService.getExtraItems(request)
|
||||||
.stream()
|
.stream()
|
||||||
.map(DataExtraProviderConvert.MAPPER::to)
|
.map(DataExtraProviderConvert.MAPPER::to)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ package com.orion.ops.module.infra.convert;
|
|||||||
import com.orion.ops.module.infra.entity.domain.DataExtraDO;
|
import com.orion.ops.module.infra.entity.domain.DataExtraDO;
|
||||||
import com.orion.ops.module.infra.entity.dto.data.DataExtraDTO;
|
import com.orion.ops.module.infra.entity.dto.data.DataExtraDTO;
|
||||||
import com.orion.ops.module.infra.entity.dto.data.DataExtraQueryDTO;
|
import com.orion.ops.module.infra.entity.dto.data.DataExtraQueryDTO;
|
||||||
import com.orion.ops.module.infra.entity.dto.data.DataExtraUpdateDTO;
|
import com.orion.ops.module.infra.entity.dto.data.DataExtraSetDTO;
|
||||||
import com.orion.ops.module.infra.entity.request.data.DataExtraQueryRequest;
|
import com.orion.ops.module.infra.entity.request.data.DataExtraQueryRequest;
|
||||||
import com.orion.ops.module.infra.entity.request.data.DataExtraUpdateRequest;
|
import com.orion.ops.module.infra.entity.request.data.DataExtraSetRequest;
|
||||||
import org.mapstruct.Mapper;
|
import org.mapstruct.Mapper;
|
||||||
import org.mapstruct.factory.Mappers;
|
import org.mapstruct.factory.Mappers;
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ public interface DataExtraProviderConvert {
|
|||||||
|
|
||||||
DataExtraQueryRequest to(DataExtraQueryDTO query);
|
DataExtraQueryRequest to(DataExtraQueryDTO query);
|
||||||
|
|
||||||
DataExtraUpdateRequest to(DataExtraUpdateDTO update);
|
DataExtraSetRequest to(DataExtraSetDTO update);
|
||||||
|
|
||||||
DataExtraDTO to(DataExtraDO domain);
|
DataExtraDTO to(DataExtraDO domain);
|
||||||
|
|
||||||
|
|||||||
@@ -42,11 +42,11 @@ public class DataExtraDO extends BaseDO {
|
|||||||
@TableField("type")
|
@TableField("type")
|
||||||
private String type;
|
private String type;
|
||||||
|
|
||||||
@Schema(description = "拓展项")
|
@Schema(description = "配置项")
|
||||||
@TableField("item")
|
@TableField("item")
|
||||||
private String item;
|
private String item;
|
||||||
|
|
||||||
@Schema(description = "拓展值")
|
@Schema(description = "配置值")
|
||||||
@TableField("value")
|
@TableField("value")
|
||||||
private String value;
|
private String value;
|
||||||
|
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ import java.io.Serializable;
|
|||||||
@Builder
|
@Builder
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Schema(name = "DataExtraUpdateRequest", description = "数据拓展信息 更新请求对象")
|
@Schema(name = "DataExtraSetRequest", description = "数据拓展信息 更新请求对象")
|
||||||
public class DataExtraUpdateRequest implements Serializable {
|
public class DataExtraSetRequest implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
@@ -42,11 +42,11 @@ public class DataExtraUpdateRequest implements Serializable {
|
|||||||
|
|
||||||
@NotBlank
|
@NotBlank
|
||||||
@Size(max = 32)
|
@Size(max = 32)
|
||||||
@Schema(description = "拓展项")
|
@Schema(description = "配置项")
|
||||||
private String item;
|
private String item;
|
||||||
|
|
||||||
@NotBlank
|
@NotBlank
|
||||||
@Schema(description = "拓展值")
|
@Schema(description = "配置值")
|
||||||
private Object value;
|
private String value;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -2,7 +2,7 @@ package com.orion.ops.module.infra.service;
|
|||||||
|
|
||||||
import com.orion.ops.module.infra.entity.domain.DataExtraDO;
|
import com.orion.ops.module.infra.entity.domain.DataExtraDO;
|
||||||
import com.orion.ops.module.infra.entity.request.data.DataExtraQueryRequest;
|
import com.orion.ops.module.infra.entity.request.data.DataExtraQueryRequest;
|
||||||
import com.orion.ops.module.infra.entity.request.data.DataExtraUpdateRequest;
|
import com.orion.ops.module.infra.entity.request.data.DataExtraSetRequest;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -17,19 +17,36 @@ import java.util.Map;
|
|||||||
public interface DataExtraService {
|
public interface DataExtraService {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新数据拓展信息
|
* 更新数据拓展信息 不存在则新增
|
||||||
*
|
*
|
||||||
* @param request request
|
* @param request request
|
||||||
* @return effect
|
* @return effect
|
||||||
*/
|
*/
|
||||||
Integer updateExtraItem(DataExtraUpdateRequest request);
|
Integer setExtraItem(DataExtraSetRequest request);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增数据拓展信息
|
||||||
|
*
|
||||||
|
* @param request request
|
||||||
|
* @return id
|
||||||
|
*/
|
||||||
|
Long addExtraItem(DataExtraSetRequest request);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新数据拓展信息
|
||||||
|
*
|
||||||
|
* @param id id
|
||||||
|
* @param value value
|
||||||
|
* @return effect
|
||||||
|
*/
|
||||||
|
Integer updateExtraValue(Long id, String value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量更新数据拓展信息
|
* 批量更新数据拓展信息
|
||||||
*
|
*
|
||||||
* @param map map
|
* @param map map
|
||||||
*/
|
*/
|
||||||
void batchUpdate(Map<Long, Object> map);
|
void batchUpdateExtraValue(Map<Long, String> map);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询额外配置项
|
* 查询额外配置项
|
||||||
@@ -37,7 +54,7 @@ public interface DataExtraService {
|
|||||||
* @param request request
|
* @param request request
|
||||||
* @return item
|
* @return item
|
||||||
*/
|
*/
|
||||||
String getExtraItem(DataExtraQueryRequest request);
|
String getExtraItemValue(DataExtraQueryRequest request);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询额外配置项
|
* 查询额外配置项
|
||||||
@@ -45,7 +62,7 @@ public interface DataExtraService {
|
|||||||
* @param request request
|
* @param request request
|
||||||
* @return item
|
* @return item
|
||||||
*/
|
*/
|
||||||
Map<Long, String> getExtraItemList(DataExtraQueryRequest request);
|
Map<Long, String> getExtraItemValues(DataExtraQueryRequest request);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询额外配置
|
* 查询额外配置
|
||||||
@@ -53,7 +70,15 @@ public interface DataExtraService {
|
|||||||
* @param request request
|
* @param request request
|
||||||
* @return rows
|
* @return rows
|
||||||
*/
|
*/
|
||||||
List<DataExtraDO> getExtraList(DataExtraQueryRequest request);
|
DataExtraDO getExtraItem(DataExtraQueryRequest request);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询额外配置
|
||||||
|
*
|
||||||
|
* @param request request
|
||||||
|
* @return rows
|
||||||
|
*/
|
||||||
|
List<DataExtraDO> getExtraItems(DataExtraQueryRequest request);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过 userId 删除
|
* 通过 userId 删除
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import com.orion.ops.module.infra.constant.DataExtraItems;
|
|||||||
import com.orion.ops.module.infra.define.cache.DataExtraCacheKeyDefine;
|
import com.orion.ops.module.infra.define.cache.DataExtraCacheKeyDefine;
|
||||||
import com.orion.ops.module.infra.entity.request.data.DataAliasUpdateRequest;
|
import com.orion.ops.module.infra.entity.request.data.DataAliasUpdateRequest;
|
||||||
import com.orion.ops.module.infra.entity.request.data.DataExtraQueryRequest;
|
import com.orion.ops.module.infra.entity.request.data.DataExtraQueryRequest;
|
||||||
import com.orion.ops.module.infra.entity.request.data.DataExtraUpdateRequest;
|
import com.orion.ops.module.infra.entity.request.data.DataExtraSetRequest;
|
||||||
import com.orion.ops.module.infra.service.DataAliasService;
|
import com.orion.ops.module.infra.service.DataAliasService;
|
||||||
import com.orion.ops.module.infra.service.DataExtraService;
|
import com.orion.ops.module.infra.service.DataExtraService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -37,13 +37,13 @@ public class DataAliasServiceImpl implements DataAliasService {
|
|||||||
Long userId = request.getUserId();
|
Long userId = request.getUserId();
|
||||||
String type = request.getType();
|
String type = request.getType();
|
||||||
// 更新
|
// 更新
|
||||||
DataExtraUpdateRequest update = new DataExtraUpdateRequest();
|
DataExtraSetRequest update = new DataExtraSetRequest();
|
||||||
update.setUserId(userId);
|
update.setUserId(userId);
|
||||||
update.setRelId(request.getRelId());
|
update.setRelId(request.getRelId());
|
||||||
update.setType(type);
|
update.setType(type);
|
||||||
update.setItem(DataExtraItems.ALIAS);
|
update.setItem(DataExtraItems.ALIAS);
|
||||||
update.setValue(Refs.json(request.getAlias()));
|
update.setValue(Refs.json(request.getAlias()));
|
||||||
Integer effect = dataExtraService.updateExtraItem(update);
|
Integer effect = dataExtraService.setExtraItem(update);
|
||||||
// 删除缓存
|
// 删除缓存
|
||||||
RedisMaps.delete(DataExtraCacheKeyDefine.DATA_ALIAS.format(userId, type));
|
RedisMaps.delete(DataExtraCacheKeyDefine.DATA_ALIAS.format(userId, type));
|
||||||
return effect;
|
return effect;
|
||||||
@@ -66,7 +66,7 @@ public class DataAliasServiceImpl implements DataAliasService {
|
|||||||
.type(type)
|
.type(type)
|
||||||
.item(DataExtraItems.ALIAS)
|
.item(DataExtraItems.ALIAS)
|
||||||
.build();
|
.build();
|
||||||
Map<Long, String> extras = dataExtraService.getExtraItemList(request);
|
Map<Long, String> extras = dataExtraService.getExtraItemValues(request);
|
||||||
entities = Maps.map(extras, String::valueOf, Refs::unrefToString);
|
entities = Maps.map(extras, String::valueOf, Refs::unrefToString);
|
||||||
// 设置屏障 防止穿透
|
// 设置屏障 防止穿透
|
||||||
CacheBarriers.MAP.check(entities);
|
CacheBarriers.MAP.check(entities);
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
package com.orion.ops.module.infra.service.impl;
|
package com.orion.ops.module.infra.service.impl;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.orion.lang.function.Functions;
|
import com.orion.lang.function.Functions;
|
||||||
import com.orion.lang.utils.collect.Maps;
|
import com.orion.lang.utils.collect.Maps;
|
||||||
|
import com.orion.ops.framework.common.constant.Const;
|
||||||
import com.orion.ops.module.infra.dao.DataExtraDAO;
|
import com.orion.ops.module.infra.dao.DataExtraDAO;
|
||||||
import com.orion.ops.module.infra.entity.domain.DataExtraDO;
|
import com.orion.ops.module.infra.entity.domain.DataExtraDO;
|
||||||
import com.orion.ops.module.infra.entity.request.data.DataExtraQueryRequest;
|
import com.orion.ops.module.infra.entity.request.data.DataExtraQueryRequest;
|
||||||
import com.orion.ops.module.infra.entity.request.data.DataExtraUpdateRequest;
|
import com.orion.ops.module.infra.entity.request.data.DataExtraSetRequest;
|
||||||
import com.orion.ops.module.infra.service.DataExtraService;
|
import com.orion.ops.module.infra.service.DataExtraService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@@ -32,41 +32,49 @@ public class DataExtraServiceImpl implements DataExtraService {
|
|||||||
private DataExtraDAO dataExtraDAO;
|
private DataExtraDAO dataExtraDAO;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer updateExtraItem(DataExtraUpdateRequest request) {
|
public Integer setExtraItem(DataExtraSetRequest request) {
|
||||||
Long userId = request.getUserId();
|
|
||||||
Long relId = request.getRelId();
|
|
||||||
String type = request.getType();
|
|
||||||
String item = request.getItem();
|
|
||||||
Object value = request.getValue();
|
|
||||||
// 查询配置是否存在
|
// 查询配置是否存在
|
||||||
DataExtraDO extraItem = dataExtraDAO.of()
|
DataExtraDO extraItem = dataExtraDAO.of()
|
||||||
.createWrapper()
|
.createWrapper()
|
||||||
.eq(DataExtraDO::getUserId, userId)
|
.eq(DataExtraDO::getUserId, request.getUserId())
|
||||||
.eq(DataExtraDO::getRelId, relId)
|
.eq(DataExtraDO::getRelId, request.getRelId())
|
||||||
.eq(DataExtraDO::getType, type)
|
.eq(DataExtraDO::getType, request.getType())
|
||||||
.eq(DataExtraDO::getItem, item)
|
.eq(DataExtraDO::getItem, request.getItem())
|
||||||
.then()
|
.then()
|
||||||
.getOne();
|
.getOne();
|
||||||
if (extraItem == null) {
|
if (extraItem == null) {
|
||||||
// 插入
|
// 插入
|
||||||
DataExtraDO insert = new DataExtraDO();
|
this.addExtraItem(request);
|
||||||
insert.setUserId(userId);
|
return Const.N_1;
|
||||||
insert.setRelId(relId);
|
|
||||||
insert.setType(type);
|
|
||||||
insert.setItem(item);
|
|
||||||
insert.setValue(JSON.toJSONString(value));
|
|
||||||
return dataExtraDAO.insert(insert);
|
|
||||||
} else {
|
} else {
|
||||||
// 修改
|
// 修改
|
||||||
DataExtraDO update = new DataExtraDO();
|
return this.updateExtraValue(extraItem.getId(), request.getValue());
|
||||||
update.setId(extraItem.getId());
|
|
||||||
update.setValue(JSON.toJSONString(value));
|
|
||||||
return dataExtraDAO.updateById(update);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void batchUpdate(Map<Long, Object> map) {
|
public Long addExtraItem(DataExtraSetRequest request) {
|
||||||
|
// 插入
|
||||||
|
DataExtraDO insert = new DataExtraDO();
|
||||||
|
insert.setUserId(request.getUserId());
|
||||||
|
insert.setRelId(request.getRelId());
|
||||||
|
insert.setType(request.getType());
|
||||||
|
insert.setItem(request.getItem());
|
||||||
|
insert.setValue(request.getValue());
|
||||||
|
dataExtraDAO.insert(insert);
|
||||||
|
return insert.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer updateExtraValue(Long id, String value) {
|
||||||
|
DataExtraDO update = new DataExtraDO();
|
||||||
|
update.setId(id);
|
||||||
|
update.setValue(value);
|
||||||
|
return dataExtraDAO.updateById(update);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void batchUpdateExtraValue(Map<Long, String> map) {
|
||||||
if (Maps.isEmpty(map)) {
|
if (Maps.isEmpty(map)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -76,14 +84,14 @@ public class DataExtraServiceImpl implements DataExtraService {
|
|||||||
.map(s -> {
|
.map(s -> {
|
||||||
DataExtraDO extra = new DataExtraDO();
|
DataExtraDO extra = new DataExtraDO();
|
||||||
extra.setId(s.getKey());
|
extra.setId(s.getKey());
|
||||||
extra.setValue(JSON.toJSONString(s.getValue()));
|
extra.setValue(s.getValue());
|
||||||
return extra;
|
return extra;
|
||||||
}).collect(Collectors.toList());
|
}).collect(Collectors.toList());
|
||||||
dataExtraDAO.updateBatch(list);
|
dataExtraDAO.updateBatch(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getExtraItem(DataExtraQueryRequest request) {
|
public String getExtraItemValue(DataExtraQueryRequest request) {
|
||||||
return dataExtraDAO.of()
|
return dataExtraDAO.of()
|
||||||
.wrapper(this.buildWrapper(request))
|
.wrapper(this.buildWrapper(request))
|
||||||
.optionalOne()
|
.optionalOne()
|
||||||
@@ -92,7 +100,7 @@ public class DataExtraServiceImpl implements DataExtraService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<Long, String> getExtraItemList(DataExtraQueryRequest request) {
|
public Map<Long, String> getExtraItemValues(DataExtraQueryRequest request) {
|
||||||
return dataExtraDAO.of()
|
return dataExtraDAO.of()
|
||||||
.wrapper(this.buildWrapper(request))
|
.wrapper(this.buildWrapper(request))
|
||||||
.stream()
|
.stream()
|
||||||
@@ -103,7 +111,14 @@ public class DataExtraServiceImpl implements DataExtraService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<DataExtraDO> getExtraList(DataExtraQueryRequest request) {
|
public DataExtraDO getExtraItem(DataExtraQueryRequest request) {
|
||||||
|
return dataExtraDAO.of()
|
||||||
|
.wrapper(this.buildWrapper(request))
|
||||||
|
.getOne();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<DataExtraDO> getExtraItems(DataExtraQueryRequest request) {
|
||||||
return dataExtraDAO.of()
|
return dataExtraDAO.of()
|
||||||
.wrapper(this.buildWrapper(request))
|
.wrapper(this.buildWrapper(request))
|
||||||
.list();
|
.list();
|
||||||
|
|||||||
@@ -78,8 +78,8 @@ CREATE TABLE `data_extra`
|
|||||||
`user_id` bigint(0) NULL DEFAULT NULL COMMENT '用户id',
|
`user_id` bigint(0) NULL DEFAULT NULL COMMENT '用户id',
|
||||||
`rel_id` bigint(0) NULL DEFAULT NULL COMMENT '数据id',
|
`rel_id` bigint(0) NULL DEFAULT NULL COMMENT '数据id',
|
||||||
`type` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '数据类型',
|
`type` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '数据类型',
|
||||||
`item` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '拓展项',
|
`item` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '配置项',
|
||||||
`value` json NULL COMMENT '拓展值',
|
`value` json NULL COMMENT '配置值',
|
||||||
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
`update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '修改时间',
|
`update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '修改时间',
|
||||||
`creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '创建人',
|
`creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '创建人',
|
||||||
|
|||||||
Reference in New Issue
Block a user