diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteRevenueConfigService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteRevenueConfigService.java index b3c6d28..1ca8583 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteRevenueConfigService.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteRevenueConfigService.java @@ -112,7 +112,7 @@ public interface RemoteRevenueConfigService * @param source * @return */ - @PostMapping("/registration/innerupdateRegist") + @PostMapping("/registration/innerUpdateRegist") public R innerUpdateRegist(@RequestBody RmResourceRegistrationRemote rmResourceRegistrationRemote, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteRocketMqService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteRocketMqService.java index e60e620..796af36 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteRocketMqService.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteRocketMqService.java @@ -86,4 +86,13 @@ public interface RemoteRocketMqService { */ @PostMapping("/monitorPolicy/updatePolicyMsgInner") public R updatePolicyMsgInner(@RequestBody RmMonitorPolicyRemote rmMonitorPolicyRemote, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + /** + * 下发优先级为0的策略 + * @param clientId + * @param source + * @return + */ + @GetMapping("/monitorPolicy/issueDefaultPolicyByClientId") + public R issueDefaultPolicyByClientId(String clientId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/RouteMsg.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/RouteMsg.java new file mode 100644 index 0000000..f5a8845 --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/RouteMsg.java @@ -0,0 +1,12 @@ +package com.ruoyi.system.api.domain; + +import lombok.Data; + +@Data +public class RouteMsg { + /** 网卡名称 */ + private String name; + /** 网关地址 */ + private String gateway; + +} diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteRocketMqFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteRocketMqFallbackFactory.java index 98b59bb..7185800 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteRocketMqFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteRocketMqFallbackFactory.java @@ -72,6 +72,11 @@ public class RemoteRocketMqFallbackFactory implements FallbackFactory updatePolicyMsgInner(RmMonitorPolicyRemote rmMonitorPolicyRemote, String source) { return R.fail(throwable.getMessage()); } + + @Override + public R issueDefaultPolicyByClientId(String clientId, String source) { + return R.fail(throwable.getMessage()); + } }; } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/RmResourceRegistrationController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/RmResourceRegistrationController.java index ff44334..669e204 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/RmResourceRegistrationController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/RmResourceRegistrationController.java @@ -209,7 +209,7 @@ public class RmResourceRegistrationController extends BaseController @PostMapping("/bindBusinessPubulicIp") public AjaxResult bindBusinessPubulicIp(@RequestBody RmResourceRegistration rmResourceRegistration) { - int rows = rmResourceRegistrationService.bindBusinessPubulicIp(rmResourceRegistration); + int rows = rmResourceRegistrationService.bindBusinessPublicIp(rmResourceRegistration); return toAjax(rows); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/RmEpsTopologyManagement.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/RmEpsTopologyManagement.java index 4be09db..f543cc9 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/RmEpsTopologyManagement.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/RmEpsTopologyManagement.java @@ -28,6 +28,8 @@ public class RmEpsTopologyManagement extends BaseEntity /** 交换机硬件SN */ @Excel(name = "交换机硬件SN") private String switchSn; + /** 交换机clientId */ + private String clientId; /** 接口名称 */ @Excel(name = "接口名称") diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/RspVo.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/RspVo.java index 6b0eb69..fea3243 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/RspVo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/RspVo.java @@ -7,9 +7,11 @@ import java.time.Instant; @Data public class RspVo { /** 状态码,0、失败;1、成功*/ - private int resCode; + private Integer resCode; /** 描述 */ private String resMag; + /** 路由 */ + private String addRoute; /** 时间戳 */ private long timestamp = Instant.now().getEpochSecond(); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/IRmResourceRegistrationService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/IRmResourceRegistrationService.java index f6e58c5..0f4bce5 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/IRmResourceRegistrationService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/IRmResourceRegistrationService.java @@ -112,5 +112,5 @@ public interface IRmResourceRegistrationService * @param rmResourceRegistration * @return */ - int bindBusinessPubulicIp(RmResourceRegistration rmResourceRegistration); + int bindBusinessPublicIp(RmResourceRegistration rmResourceRegistration); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RmResourceRegistrationServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RmResourceRegistrationServiceImpl.java index 31436d9..178bfab 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RmResourceRegistrationServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RmResourceRegistrationServiceImpl.java @@ -9,10 +9,7 @@ import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.system.api.RemoteRocketMqService; -import com.ruoyi.system.api.domain.NetworkInfo; -import com.ruoyi.system.api.domain.RmNetworkInterfaceRemote; -import com.ruoyi.system.api.domain.RmRegisterMsgRemote; -import com.ruoyi.system.api.domain.RmResourceRegistrationRemote; +import com.ruoyi.system.api.domain.*; import com.ruoyi.system.domain.*; import com.ruoyi.system.domain.vo.MessageVo; import com.ruoyi.system.domain.vo.ResourceVo; @@ -25,10 +22,7 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -530,6 +524,24 @@ public class RmResourceRegistrationServiceImpl implements IRmResourceRegistratio content.append("流量网口设置为").append(networkInfo.getName()); recordAddData.setChangeContent(content.toString()); epsMethodChangeRecordMapper.insertEpsMethodChangeRecord(recordAddData); + // 设置路由信息 + RouteMsg routeMsg = new RouteMsg(); + routeMsg.setName(networkInfo.getName()); + routeMsg.setGateway(networkInfo.getGateway()); + // 构建注册应答信息 + MessageVo messageVo = new MessageVo(); + messageVo.setClientId(registerMsg.getClientId()); + messageVo.setDataType(MsgEnum.注册应答.getValue()); + RspVo rspVo = new RspVo(); + rspVo.setResCode(1); + rspVo.setResMag("注册成功"); + rspVo.setAddRoute(JSONObject.toJSONString(routeMsg)); + messageVo.setData(JSONObject.toJSONString(rspVo)); + remoteRocketMqService.sendAsyncProducerMessage( + "tr_agent_down", "", "regist_rsp", JSONObject.toJSONString(messageVo), SecurityConstants.INNER + ); + // 第一次注册 + return 2; }else{ insertData.setClientId(registerMsg.getClientId()); insertData.setHardwareSn(registerMsg.getSn()); @@ -539,32 +551,8 @@ public class RmResourceRegistrationServiceImpl implements IRmResourceRegistratio insertData.setCreateTime(createTime); rmResourceRegistrationMapper.insertRmResourceRegistration(insertData); } - // 构建注册应答信息 - MessageVo messageVo = new MessageVo(); - messageVo.setClientId(registerMsg.getClientId()); - messageVo.setDataType(MsgEnum.注册应答.getValue()); - RspVo rspVo = new RspVo(); - rspVo.setResCode(1); - rspVo.setResMag("注册成功"); - messageVo.setData(JSONObject.toJSONString(rspVo)); - remoteRocketMqService.sendAsyncProducerMessage( - "tr_agent_down", "", "", JSONObject.toJSONString(messageVo), SecurityConstants.INNER - ); - // 第一次注册 - return 2; }catch (Exception e){ log.error("注册服务器失败:{}",e.getMessage()); - // 构建注册应答信息 - MessageVo messageVo = new MessageVo(); - messageVo.setClientId(registerMsg.getClientId()); - messageVo.setDataType(MsgEnum.注册应答.getValue()); - RspVo rspVo = new RspVo(); - rspVo.setResCode(1); - rspVo.setResMag("平台错误信息:" + e.getMessage()); - messageVo.setData(JSONObject.toJSONString(rspVo)); - remoteRocketMqService.sendAsyncProducerMessage( - "tr_agent_down", "", "", JSONObject.toJSONString(messageVo), SecurityConstants.INNER - ); return 0; } } @@ -601,34 +589,78 @@ public class RmResourceRegistrationServiceImpl implements IRmResourceRegistratio } @Override - public int bindBusinessPubulicIp(RmResourceRegistration rmResourceRegistration) { - List bindMsgMap = rmResourceRegistration.getBindNetworkMsg(); - for (Map map : bindMsgMap) { - // id - Long id = (Long) map.get("id"); - String status = map.get("status").toString(); - String interfaceName = map.get("interfaceName").toString(); - // 绑定ip - RmNetworkInterfaceRemote rmNetworkInterfaceRemote = new RmNetworkInterfaceRemote(); - rmNetworkInterfaceRemote.setId(id); - rmNetworkInterfaceRemote.setBindIp(status); - remoteRocketMqService.bindPublicIp(rmNetworkInterfaceRemote, SecurityConstants.INNER); - // 添加业务变更记录 - EpsMethodChangeRecord recordAddData = new EpsMethodChangeRecord(); - recordAddData.setClientId(rmResourceRegistration.getClientId()); - recordAddData.setTrafficPort(interfaceName); - recordAddData.setUpdateTime(DateUtils.getNowDate()); - recordAddData.setUpdateBy(SecurityUtils.getUsername()); - recordAddData.setCreatBy(SecurityUtils.getUsername()); - StringBuilder content = new StringBuilder(); - content.append("流量网口设置为").append(interfaceName); - recordAddData.setChangeContent(content.toString()); - epsMethodChangeRecordMapper.insertEpsMethodChangeRecord(recordAddData); + public int bindBusinessPublicIp(RmResourceRegistration rmResourceRegistration) { + // 参数校验 + if (rmResourceRegistration == null || StringUtils.isEmpty(rmResourceRegistration.getClientId())) { + throw new IllegalArgumentException("参数不合法"); } - // 修改多公网IP状态为已绑定 + + String clientId = rmResourceRegistration.getClientId(); + String username = SecurityUtils.getUsername(); + Date now = DateUtils.getNowDate(); + + // 1. 处理IP绑定和记录 + rmResourceRegistration.getBindNetworkMsg().forEach(map -> { + // 绑定IP + RmNetworkInterfaceRemote network = new RmNetworkInterfaceRemote(); + network.setId((Long) map.get("id")); + network.setBindIp(map.get("status").toString()); + remoteRocketMqService.bindPublicIp(network, SecurityConstants.INNER); + + // 添加变更记录 + EpsMethodChangeRecord record = new EpsMethodChangeRecord(); + record.setClientId(clientId); + record.setTrafficPort(map.get("interfaceName").toString()); + record.setUpdateTime(now); + record.setUpdateBy(username); + record.setCreatBy(username); + record.setChangeContent("流量网口设置为" + map.get("interfaceName")); + epsMethodChangeRecordMapper.insertEpsMethodChangeRecord(record); + }); + + // 2. 更新注册状态 RmResourceRegistration updateData = new RmResourceRegistration(); updateData.setId(rmResourceRegistration.getId()); updateData.setMultiPublicIpStatus("1"); + + // 处理未注册情况 + RmResourceRegistration isRegist = rmResourceRegistrationMapper.selectRmResourceRegistrationById(rmResourceRegistration.getId()); + if (isRegist != null && "0".equals(isRegist.getRegistrationStatus())) { + RmNetworkInterfaceRemote queryParam = new RmNetworkInterfaceRemote(); + queryParam.setClientId(clientId); + + Optional.ofNullable(remoteRocketMqService.getNetworkInterfaceList(queryParam, SecurityConstants.INNER)) + .map(R::getData) + .flatMap(list -> list.stream() + .filter(ni -> "1".equals(ni.getBindIp()) || "3".equals(ni.getBindIp())) + .findFirst()) + .ifPresent(network -> { + updateData.setRegistrationStatus("1"); + + // 发送注册响应 + RouteMsg routeMsg = new RouteMsg(); + routeMsg.setName(network.getInterfaceName()); + routeMsg.setGateway(network.getGateway()); + + MessageVo messageVo = new MessageVo(); + messageVo.setClientId(clientId); + messageVo.setDataType(MsgEnum.注册应答.getValue()); + + RspVo rspVo = new RspVo(); + rspVo.setResCode(1); + rspVo.setResMag("注册成功"); + rspVo.setAddRoute(JSONObject.toJSONString(routeMsg)); + + messageVo.setData(JSONObject.toJSONString(rspVo)); + + remoteRocketMqService.sendAsyncProducerMessage( + "tr_agent_down", "", "regist_rsp", JSONObject.toJSONString(messageVo), SecurityConstants.INNER + ); + // 注册成功,下发优先级为0的策略 + remoteRocketMqService.issueDefaultPolicyByClientId(clientId, SecurityConstants.INNER); + }); + } + rmResourceRegistrationMapper.updateRmResourceRegistration(updateData); return 1; } diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RmEpsTopologyManagementMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RmEpsTopologyManagementMapper.xml index 48b3881..3f297bc 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RmEpsTopologyManagementMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RmEpsTopologyManagementMapper.xml @@ -7,6 +7,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -26,7 +27,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select id, switch_name, switch_sn, interface_name, connected_device_type, server_name, server_sn, server_port, create_time, update_time, creator_id, creator_name, updater_id, updater_name, switch_ip_address, peer_switch_name, peer_switch_interface, server_client_id from rm_eps_topology_management + select id, switch_name, client_id, switch_sn, interface_name, connected_device_type, server_name, server_sn, server_port, create_time, update_time, creator_id, creator_name, updater_id, updater_name, switch_ip_address, peer_switch_name, peer_switch_interface, server_client_id from rm_eps_topology_management @@ -60,6 +62,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" insert into rm_eps_topology_management switch_name, + client_id, switch_sn, interface_name, connected_device_type, @@ -79,6 +82,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{switchName}, + #{clientId}, #{switchSn}, #{interfaceName}, #{connectedDeviceType}, @@ -102,6 +106,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update rm_eps_topology_management switch_name = #{switchName}, + client_id = #{clientId}, switch_sn = #{switchSn}, interface_name = #{interfaceName}, connected_device_type = #{connectedDeviceType}, diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmMonitorPolicyController.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmMonitorPolicyController.java index 9cd219e..decdcf5 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmMonitorPolicyController.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmMonitorPolicyController.java @@ -187,5 +187,15 @@ public class RmMonitorPolicyController extends BaseController int rows = rmMonitorPolicyService.updatePolicyMsgInner(rmMonitorPolicy); return R.ok(rows); } + /** + * 修改资源监控策略 + */ + @GetMapping("/issueDefaultPolicyByClientId") + @InnerAuth + public R issueDefaultPolicyByClientId(String clientId) + { + int rows = rmMonitorPolicyService.issueDefaultPolicyByClientId(clientId); + return R.ok(rows); + } } diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmDeploymentPolicy.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmDeploymentPolicy.java index bd46284..feac5c7 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmDeploymentPolicy.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmDeploymentPolicy.java @@ -6,6 +6,7 @@ import com.ruoyi.common.core.web.domain.BaseEntity; import lombok.Data; import java.util.Date; +import java.util.List; /** * 服务器脚本策略对象 rm_deployment_policy @@ -89,4 +90,16 @@ public class RmDeploymentPolicy extends BaseEntity private String scriptPath; /** 业务脚本参数 */ private String defaultParams; + /** 不在线数量 */ + private Integer offlineNum; + /** 执行成功数量 */ + private Integer sucessNum; + /** 执行失败数量 */ + private Integer failNum; + /** 不在线服务器clientId集合 */ + private List offlineClientIds; + /** 执行成功clientId集合 */ + private List sucessClientIds; + /** 执行失败clientIdji和 */ + private List failClientIds; } diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmNetworkInterface.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmNetworkInterface.java index d326d86..62cdddf 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmNetworkInterface.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmNetworkInterface.java @@ -59,5 +59,7 @@ public class RmNetworkInterface extends BaseEntity private String gateway; /** 绑定ip 1业务IP,2管理ip */ private String bindIp; + /** 是否为新信息 */ + private String newFlag; } diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmResourceRemote.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmResourceRemote.java index dfca93b..abe0cd0 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmResourceRemote.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmResourceRemote.java @@ -55,4 +55,10 @@ public class RmResourceRemote extends BaseEntity private String connectionMethod; /** 脚本执行结果 */ private String commandResult; + /** 客户端id */ + private String clientId; + /** 执行结果标识(0 失败 1成功) */ + private Integer resultFlag; + /** 脚本id */ + private Long scriptId; } diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/vo/ServerScriptPolicyVo.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/vo/ServerScriptPolicyVo.java index 89ebc05..d7fa479 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/vo/ServerScriptPolicyVo.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/vo/ServerScriptPolicyVo.java @@ -4,6 +4,8 @@ import lombok.Data; @Data public class ServerScriptPolicyVo { + /** 服务器脚本策略id */ + private String scriptId; /** 策略名称 */ private String policyName; /** 外网Http(s)地址 */ diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/handler/MessageHandler.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/handler/MessageHandler.java index 9365688..67939dd 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/handler/MessageHandler.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/handler/MessageHandler.java @@ -90,12 +90,12 @@ public class MessageHandler { */ @PostConstruct public void init() { -// registerHandler(MsgEnum.执行脚本策略应答.getValue(), this::handleScriptRspMessage); + registerHandler(MsgEnum.执行脚本策略应答.getValue(), this::handleScriptRspMessage); // registerHandler(MsgEnum.Agent版本更新应答.getValue(), this::handleAgentUpdateRspMessage); // 其他类型消息可以单独注册处理器 registerHandler(MsgEnum.注册.getValue(), this::handleRegisterMessage); -// registerHandler(MsgEnum.获取最新策略.getValue(), this::handleNewPolicyMessage); + registerHandler(MsgEnum.获取最新策略.getValue(), this::handleNewPolicyMessage); // registerHandler(MsgEnum.CPU上报.getValue(), this::handleCpuMessage); // registerHandler(MsgEnum.磁盘上报.getValue(), this::handleDiskMessage); // registerHandler(MsgEnum.容器上报.getValue(), this::handleDockerMessage); @@ -116,7 +116,7 @@ public class MessageHandler { RegisterMsgVo registerMsgVo = interfaces.get(0); String clientId = registerMsgVo.getClientId(); // 如果未下发监控策略,下发 - rmMonitorPolicyService.issuePolicyMsgByClientId(clientId); +// rmMonitorPolicyService.issuePolicyMsgByClientId(clientId); // 如果未下发服务器脚本策略,下发 rmDeploymentPolicyService.issueDeployPolicyMsgByClientId(clientId); } @@ -654,19 +654,15 @@ public class MessageHandler { Date createTime = new Date(millis / 1000 * 1000); // 去除毫秒 // 查询资源信息 RmResourceRegistrationRemote queryParam = new RmResourceRegistrationRemote(); - queryParam.setHardwareSn(message.getClientId()); + queryParam.setClientId(message.getClientId()); R resourceMsg = remoteRevenueConfigService.getListByHardwareSn(queryParam, SecurityConstants.INNER); RmResourceRegistrationRemote resourceMsgData = resourceMsg.getData(); if(rsp.getResCode() == 1){ if(rsp.getResult() != null){ // 构建脚本执行结果实体类 RmResourceRemote insertData = new RmResourceRemote(); - insertData.setHardwareSn(message.getClientId()); - insertData.setResourceName(resourceMsgData.getResourceName()); - insertData.setExternalIp(resourceMsgData.getIpAddress()); - insertData.setManagementPort(22); - insertData.setConnectionMethod("1"); - insertData.setResourceType(resourceMsgData.getResourceType()); + insertData.setClientId(message.getClientId()); + insertData.setResultFlag(1); insertData.setDescription(rsp.getResult()); insertData.setCreateTime(createTime); // 执行插入sql @@ -674,6 +670,16 @@ public class MessageHandler { log.info("脚本执行结果入库成功:{}",rsp); } }else{ + // 构建脚本执行结果实体类 + RmResourceRemote insertData = new RmResourceRemote(); + insertData.setClientId(message.getClientId()); + insertData.setResultFlag(0); + if(rsp.getResult() != null){ + insertData.setDescription(rsp.getResult()); + } + insertData.setCreateTime(createTime); + // 执行插入sql + rmResourceRemoteService.insertRmResourceRemote(insertData); log.error("脚本执行失败:{}", rsp); } } diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/InitialSystemOtherCollectDataServiceImpl.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/InitialSystemOtherCollectDataServiceImpl.java index dbd5656..887ef68 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/InitialSystemOtherCollectDataServiceImpl.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/InitialSystemOtherCollectDataServiceImpl.java @@ -110,9 +110,16 @@ public class InitialSystemOtherCollectDataServiceImpl implements IInitialSystemO */ @Override public Map getMonitorMsg(InitialSystemOtherCollectData initialSystemOtherCollectData) { - Map map = initialSystemOtherCollectDataMapper.getMonitorMsg(initialSystemOtherCollectData); + Map map = initialSystemOtherCollectDataMapper.getMonitorMsg(initialSystemOtherCollectData); + // 如果返回null,初始化一个空的Map + if (map == null) { + map = new HashMap<>(); + } // 获取cpu数量 InitialCpuInfo cpuInfo = initialCpuInfoMapper.getCpuInfoByClientId(initialSystemOtherCollectData.getClientId()); + if (cpuInfo == null) { + cpuInfo = new InitialCpuInfo(); + } map.put("systemCpuNum", cpuInfo.getNum()); return map; } diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmDeploymentPolicyServiceImpl.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmDeploymentPolicyServiceImpl.java index b7c09af..a5a0185 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmDeploymentPolicyServiceImpl.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmDeploymentPolicyServiceImpl.java @@ -8,11 +8,13 @@ import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.rocketmq.domain.DeviceMessage; import com.ruoyi.rocketmq.domain.RmDeploymentPolicy; +import com.ruoyi.rocketmq.domain.RmResourceRemote; import com.ruoyi.rocketmq.domain.vo.PolicyTypeVo; import com.ruoyi.rocketmq.domain.vo.PolicyVo; import com.ruoyi.rocketmq.domain.vo.ScriptPolicyVo; import com.ruoyi.rocketmq.domain.vo.ServerScriptPolicyVo; import com.ruoyi.rocketmq.mapper.RmDeploymentPolicyMapper; +import com.ruoyi.rocketmq.mapper.RmResourceRemoteMapper; import com.ruoyi.rocketmq.model.ProducerMode; import com.ruoyi.rocketmq.producer.MessageProducer; import com.ruoyi.rocketmq.service.IRmDeploymentPolicyService; @@ -45,6 +47,8 @@ public class RmDeploymentPolicyServiceImpl implements IRmDeploymentPolicyService private DataProcessUtil dataProcessUtil; @Autowired private ProducerMode producerMode; + @Autowired + private RmResourceRemoteMapper rmResourceRemoteMapper; /** * 查询服务器脚本策略 @@ -74,6 +78,30 @@ public class RmDeploymentPolicyServiceImpl implements IRmDeploymentPolicyService // 包含设备名称赋值 deploymentPolicyList.forEach(policy -> { getIncludeNameById(policy); + // 不在线数量赋值 + String deviceMsg = policy.getDeployDevice(); + if (deviceMsg != null) { + List offOnlineList = new ArrayList<>(); + List successList = new ArrayList<>(); + List failList = new ArrayList<>(); + for (String clientId : deviceMsg.split("\n")) { + RmResourceRemote query = new RmResourceRemote(); + query.setScriptId(policy.getId()); + query.setClientId(clientId); + List resultList = rmResourceRemoteMapper.selectRmResourceRemoteList(query); + if (resultList.isEmpty()) { + offOnlineList.add(clientId); + continue; + } + resultList.forEach(resourceRemote -> { + if (resourceRemote.getResultFlag() == 0) { + failList.add(clientId); + } else if (resourceRemote.getResultFlag() == 1) { + successList.add(clientId); + } + }); + } + } }); return deploymentPolicyList; @@ -279,6 +307,7 @@ public class RmDeploymentPolicyServiceImpl implements IRmDeploymentPolicyService for (RmDeploymentPolicy policy : policyList) { // 构建并发送脚本配置 ServerScriptPolicyVo scriptPolicyVo = new ServerScriptPolicyVo(); + scriptPolicyVo.setScriptId(policy.getId().toString()); scriptPolicyVo.setPolicyName(policy.getPolicyName()); scriptPolicyVo.setFileUrl(policy.getScriptPath()); scriptPolicyVo.setCommandParams(policy.getDefaultParams()); diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/snmp/DynamicOidCollector.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/snmp/DynamicOidCollector.java index efe4ca1..956f7d7 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/snmp/DynamicOidCollector.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/snmp/DynamicOidCollector.java @@ -101,7 +101,8 @@ public class DynamicOidCollector { // 判断是否需要索引处理 boolean needIndex = needIndexProcessing(oidParams, deviceType); // 获取过滤条件 - List filterValues = switchVo.getFilterByType(deviceType); + String filterType = deviceType + "OID"; + List filterValues = switchVo.getFilterByType(filterType); log.info("采集交换机 {} 的 {} 设备信息,筛选条件: {}", switchVo.getIp(), deviceType, filterValues); @@ -156,7 +157,9 @@ public class DynamicOidCollector { "1.3.6.1.2.1.1.4.0", // sysContact "1.3.6.1.2.1.1.5.0", // sysName "1.3.6.1.2.1.1.6.0", // sysLocation - "1.3.6.1.4.1.2011.5.25.183.1.4.0" // hwStackSystemMac + "1.3.6.1.4.1.2011.5.25.183.1.4.0", // hwStackSystemMac + "1.3.6.1.4.1.2011.6.157.1.3.0", // hwAveragePower + "1.3.6.1.4.1.2011.6.157.1.6.0" // hwCurrentPower )); // 检查所有配置的OID diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/snmp/scheduler/MultiSwitchCollectionScheduler.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/snmp/scheduler/MultiSwitchCollectionScheduler.java index 5da8e58..7ce530b 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/snmp/scheduler/MultiSwitchCollectionScheduler.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/snmp/scheduler/MultiSwitchCollectionScheduler.java @@ -156,7 +156,6 @@ public class MultiSwitchCollectionScheduler { // OID配置(复制所有OID Map) resultMap.setNetOID(new LinkedHashMap<>(switchVo.getNetOID())); - resultMap.setEntityOID(new LinkedHashMap<>(switchVo.getEntityOID())); resultMap.setPwrOID(new LinkedHashMap<>(switchVo.getPwrOID())); resultMap.setFanOID(new LinkedHashMap<>(switchVo.getFanOID())); resultMap.setMpuOID(new LinkedHashMap<>(switchVo.getMpuOID())); diff --git a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmDeploymentPolicyMapper.xml b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmDeploymentPolicyMapper.xml index ef2fca5..94d338e 100644 --- a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmDeploymentPolicyMapper.xml +++ b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmDeploymentPolicyMapper.xml @@ -157,7 +157,7 @@ and policy_status = #{policyStatus} - FIND_IN_SET(#{deployDevice}, REPLACE(deploy_device, '\n', ',')) > 0 + and FIND_IN_SET(#{deployDevice}, REPLACE(deploy_device, '\n', ',')) > 0 diff --git a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmNetworkInterfaceMapper.xml b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmNetworkInterfaceMapper.xml index 1f6597e..af53102 100644 --- a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmNetworkInterfaceMapper.xml +++ b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmNetworkInterfaceMapper.xml @@ -21,10 +21,11 @@ + - select id, client_id, isp, province, city, public_ip, interface_name, mac_address, interface_type, ipv4_address, gateway, create_time, update_time, create_by, update_by, bind_ip from rm_network_interface + select id, client_id, isp, province, city, public_ip, interface_name, mac_address, interface_type, ipv4_address, gateway, create_time, update_time, create_by, update_by, bind_ip, new_flag from rm_network_interface @@ -67,6 +69,7 @@ create_by, update_by, bind_ip, + new_flag, #{clientId}, @@ -84,6 +87,7 @@ #{createBy}, #{updateBy}, #{bindIp}, + #{newFlag}, @@ -105,9 +109,21 @@ create_by = #{createBy}, update_by = #{updateBy}, bind_ip = #{bindIp}, + new_flag = #{newFlag}, where id = #{id} + + + delete from rm_network_interface where id = #{id} + + + + delete from rm_network_interface where id in + + #{id} + + update rm_network_interface @@ -125,18 +141,8 @@ create_by = #{createBy}, update_by = #{updateBy}, bind_ip = #{bindIp}, + new_flag = #{newFlag}, where mac_address = #{macAddress} - - - delete from rm_network_interface where id = #{id} - - - - delete from rm_network_interface where id in - - #{id} - - \ No newline at end of file diff --git a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmResourceRemoteMapper.xml b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmResourceRemoteMapper.xml index ca1baf7..00d5354 100644 --- a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmResourceRemoteMapper.xml +++ b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmResourceRemoteMapper.xml @@ -1,9 +1,9 @@ + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + @@ -19,15 +19,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + - select id, hardware_sn, resource_type, resource_name, description, internal_ip, external_ip, management_port, online_status, connection_method, create_time, update_time, create_by, update_by from rm_resource_remote + select id, hardware_sn, resource_type, resource_name, description, internal_ip, external_ip, management_port, online_status, connection_method, create_time, update_time, create_by, update_by, client_id, result_flag, script_id from rm_resource_remote - + - insert IGNORE into rm_resource_remote + insert into rm_resource_remote hardware_sn, resource_type, @@ -61,7 +67,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_time, create_by, update_by, - + client_id, + result_flag, + script_id, + #{hardwareSn}, #{resourceType}, @@ -76,7 +85,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{updateTime}, #{createBy}, #{updateBy}, - + #{clientId}, + #{resultFlag}, + #{scriptId}, + @@ -95,6 +107,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_time = #{updateTime}, create_by = #{createBy}, update_by = #{updateBy}, + client_id = #{clientId}, + result_flag = #{resultFlag}, + script_id = #{scriptId}, where id = #{id} @@ -104,7 +119,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - delete from rm_resource_remote where id in + delete from rm_resource_remote where id in #{id}