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 0a0c7ce..417a909 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 @@ -76,11 +76,10 @@ public class RmMonitorPolicyController extends BaseController public AjaxResult add(@RequestBody RmMonitorPolicy rmMonitorPolicy) { int rows = rmMonitorPolicyService.addRmMonitorPolicy(rmMonitorPolicy); - if(rows>0){ - return toAjax(rows); - }else{ + if(rows == -1){ return AjaxResult.error("资源监控策略新增失败,该资源组已绑定其他策略"); } + return toAjax(rows); } /** @@ -103,5 +102,14 @@ public class RmMonitorPolicyController extends BaseController { return toAjax(rmMonitorPolicyService.issuePolicy(id)); } - + /** + * 删除监控模板 + */ + @RequiresPermissions("rocketmq:policy:remove") + @Log(title = "资源监控策略", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) + { + return toAjax(rmMonitorPolicyService.deleteRmMonitorPolicyByIds(ids)); + } } diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmResourceRemoteController.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmResourceRemoteController.java new file mode 100644 index 0000000..4f89f13 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmResourceRemoteController.java @@ -0,0 +1,36 @@ +package com.ruoyi.rocketmq.controller; + +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.security.annotation.RequiresPermissions; +import com.ruoyi.rocketmq.domain.RmResourceRemote; +import com.ruoyi.rocketmq.service.IRmResourceRemoteService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * 资源远程管理Controller + * + * @author gyt + * @date 2025-09-15 + */ +@RestController +@RequestMapping("/remote") +public class RmResourceRemoteController extends BaseController +{ + @Autowired + private IRmResourceRemoteService rmResourceRemoteService; + + + /** + * 获取资源远程管理详细信息 + */ + @RequiresPermissions("rocketmq:remote:query") + @PostMapping(value = "/getScriptResultBySn") + public AjaxResult getScriptResultBySn(@RequestBody RmResourceRemote rmResourceRemote) + { + return success(rmResourceRemoteService.getScriptResultBySn(rmResourceRemote)); + } + + +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmMonitorPolicy.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmMonitorPolicy.java index beb2698..5239730 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmMonitorPolicy.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmMonitorPolicy.java @@ -24,8 +24,10 @@ public class RmMonitorPolicy extends BaseEntity private Long id; /** 模板ID */ - @Excel(name = "模板ID") private Long templateId; + /** 模板名称 */ + @Excel(name = "关联监控模板") + private String templateName; /** 资源组ID */ @Excel(name = "资源组ID") 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 new file mode 100644 index 0000000..dfca93b --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmResourceRemote.java @@ -0,0 +1,58 @@ +package com.ruoyi.rocketmq.domain; + +import com.ruoyi.common.core.annotation.Excel; +import com.ruoyi.common.core.web.domain.BaseEntity; +import lombok.Data; + +/** + * 资源远程管理对象 rm_resource_remote + * + * @author gyt + * @date 2025-09-15 + */ +@Data +public class RmResourceRemote extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 资源ID */ + private Long id; + + /** 硬件SN码 */ + @Excel(name = "硬件SN码") + private String hardwareSn; + + /** 资源类型 */ + @Excel(name = "资源类型") + private String resourceType; + + /** 资源名称 */ + @Excel(name = "资源名称") + private String resourceName; + + /** 资源描述 */ + @Excel(name = "资源描述") + private String description; + + /** 内网IP地址 */ + @Excel(name = "内网IP地址") + private String internalIp; + + /** 外网IP地址 */ + @Excel(name = "外网IP地址") + private String externalIp; + + /** 管理端口号 */ + @Excel(name = "管理端口号") + private Integer managementPort; + + /** 在线状态:0-离线,1-在线 */ + @Excel(name = "在线状态:0-离线,1-在线") + private String onlineStatus; + + /** 连接方式(SSH/Telnet/RDP等) */ + @Excel(name = "连接方式", readConverterExp = "S=SH/Telnet/RDP等") + private String connectionMethod; + /** 脚本执行结果 */ + private String commandResult; +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/mapper/RmResourceRemoteMapper.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/mapper/RmResourceRemoteMapper.java new file mode 100644 index 0000000..fc955c7 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/mapper/RmResourceRemoteMapper.java @@ -0,0 +1,61 @@ +package com.ruoyi.rocketmq.mapper; + +import java.util.List; +import com.ruoyi.rocketmq.domain.RmResourceRemote; + +/** + * 资源远程管理Mapper接口 + * + * @author gyt + * @date 2025-09-15 + */ +public interface RmResourceRemoteMapper +{ + /** + * 查询资源远程管理 + * + * @param id 资源远程管理主键 + * @return 资源远程管理 + */ + public RmResourceRemote selectRmResourceRemoteById(Long id); + + /** + * 查询资源远程管理列表 + * + * @param rmResourceRemote 资源远程管理 + * @return 资源远程管理集合 + */ + public List selectRmResourceRemoteList(RmResourceRemote rmResourceRemote); + + /** + * 新增资源远程管理 + * + * @param rmResourceRemote 资源远程管理 + * @return 结果 + */ + public int insertRmResourceRemote(RmResourceRemote rmResourceRemote); + + /** + * 修改资源远程管理 + * + * @param rmResourceRemote 资源远程管理 + * @return 结果 + */ + public int updateRmResourceRemote(RmResourceRemote rmResourceRemote); + + /** + * 删除资源远程管理 + * + * @param id 资源远程管理主键 + * @return 结果 + */ + public int deleteRmResourceRemoteById(Long id); + + /** + * 批量删除资源远程管理 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteRmResourceRemoteByIds(Long[] ids); +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmResourceRemoteService.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmResourceRemoteService.java new file mode 100644 index 0000000..ff32468 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmResourceRemoteService.java @@ -0,0 +1,65 @@ +package com.ruoyi.rocketmq.service; + +import com.ruoyi.rocketmq.domain.RmResourceRemote; + +import java.util.List; +import java.util.Map; + +/** + * 资源远程管理Service接口 + * + * @author gyt + * @date 2025-09-15 + */ +public interface IRmResourceRemoteService +{ + /** + * 查询资源远程管理 + * + * @param id 资源远程管理主键 + * @return 资源远程管理 + */ + public RmResourceRemote selectRmResourceRemoteById(Long id); + + /** + * 查询资源远程管理列表 + * + * @param rmResourceRemote 资源远程管理 + * @return 资源远程管理集合 + */ + public List selectRmResourceRemoteList(RmResourceRemote rmResourceRemote); + + /** + * 新增资源远程管理 + * + * @param rmResourceRemote 资源远程管理 + * @return 结果 + */ + public int insertRmResourceRemote(RmResourceRemote rmResourceRemote); + + /** + * 修改资源远程管理 + * + * @param rmResourceRemote 资源远程管理 + * @return 结果 + */ + public int updateRmResourceRemote(RmResourceRemote rmResourceRemote); + + /** + * 批量删除资源远程管理 + * + * @param ids 需要删除的资源远程管理主键集合 + * @return 结果 + */ + public int deleteRmResourceRemoteByIds(Long[] ids); + + /** + * 删除资源远程管理信息 + * + * @param id 资源远程管理主键 + * @return 结果 + */ + public int deleteRmResourceRemoteById(Long id); + + Map getScriptResultBySn(RmResourceRemote rmResourceRemote); +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmMonitorPolicyServiceImpl.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmMonitorPolicyServiceImpl.java index de18324..2785225 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmMonitorPolicyServiceImpl.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmMonitorPolicyServiceImpl.java @@ -78,7 +78,16 @@ public class RmMonitorPolicyServiceImpl implements IRmMonitorPolicyService @Override public List selectRmMonitorPolicyList(RmMonitorPolicy rmMonitorPolicy) { - return rmMonitorPolicyMapper.selectRmMonitorPolicyList(rmMonitorPolicy); + List list = rmMonitorPolicyMapper.selectRmMonitorPolicyList(rmMonitorPolicy); + for (RmMonitorPolicy monitorPolicy : list) { + // 资源组名称 + monitorPolicy.setResourceGroupName(dataProcessUtil.getResourceGroupNameById(monitorPolicy.getResourceGroupId())); + // 模板名称 + Long templateId = monitorPolicy.getTemplateId(); + RmMonitorTemplate rmMonitorTemplate = rmMonitorTemplateMapper.selectRmMonitorTemplateById(templateId); + monitorPolicy.setTemplateName(rmMonitorTemplate.getTemplateName()); + } + return list; } /** diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmResourceRemoteServiceImpl.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmResourceRemoteServiceImpl.java new file mode 100644 index 0000000..931a619 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmResourceRemoteServiceImpl.java @@ -0,0 +1,136 @@ +package com.ruoyi.rocketmq.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.ruoyi.common.core.constant.SecurityConstants; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.utils.DateUtils; +import com.ruoyi.rocketmq.domain.RmResourceRemote; +import com.ruoyi.rocketmq.mapper.RmResourceRemoteMapper; +import com.ruoyi.rocketmq.service.IRmResourceRemoteService; +import com.ruoyi.system.api.RemoteRevenueConfigService; +import com.ruoyi.system.api.domain.RmResourceRegistrationRemote; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; + +/** + * 资源远程管理Service业务层处理 + * + * @author gyt + * @date 2025-09-15 + */ +@Service +public class RmResourceRemoteServiceImpl implements IRmResourceRemoteService +{ + @Autowired + private RmResourceRemoteMapper rmResourceRemoteMapper; + @Autowired + private RemoteRevenueConfigService remoteRevenueConfigService; + + /** + * 查询资源远程管理 + * + * @param id 资源远程管理主键 + * @return 资源远程管理 + */ + @Override + public RmResourceRemote selectRmResourceRemoteById(Long id) + { + return rmResourceRemoteMapper.selectRmResourceRemoteById(id); + } + + /** + * 查询资源远程管理列表 + * + * @param rmResourceRemote 资源远程管理 + * @return 资源远程管理 + */ + @Override + public List selectRmResourceRemoteList(RmResourceRemote rmResourceRemote) + { + return rmResourceRemoteMapper.selectRmResourceRemoteList(rmResourceRemote); + } + + /** + * 新增资源远程管理 + * + * @param rmResourceRemote 资源远程管理 + * @return 结果 + */ + @Override + public int insertRmResourceRemote(RmResourceRemote rmResourceRemote) + { + return rmResourceRemoteMapper.insertRmResourceRemote(rmResourceRemote); + } + + /** + * 修改资源远程管理 + * + * @param rmResourceRemote 资源远程管理 + * @return 结果 + */ + @Override + public int updateRmResourceRemote(RmResourceRemote rmResourceRemote) + { + rmResourceRemote.setUpdateTime(DateUtils.getNowDate()); + return rmResourceRemoteMapper.updateRmResourceRemote(rmResourceRemote); + } + + /** + * 批量删除资源远程管理 + * + * @param ids 需要删除的资源远程管理主键 + * @return 结果 + */ + @Override + public int deleteRmResourceRemoteByIds(Long[] ids) + { + return rmResourceRemoteMapper.deleteRmResourceRemoteByIds(ids); + } + + /** + * 删除资源远程管理信息 + * + * @param id 资源远程管理主键 + * @return 结果 + */ + @Override + public int deleteRmResourceRemoteById(Long id) + { + return rmResourceRemoteMapper.deleteRmResourceRemoteById(id); + } + + @Override + public Map getScriptResultBySn(RmResourceRemote rmResourceRemote) { + // 构建返回结果 + Map resultMap = new HashMap<>(); + // 资源详情 + RmResourceRegistrationRemote queryParam = new RmResourceRegistrationRemote(); + queryParam.setHardwareSn(rmResourceRemote.getHardwareSn()); + R registrationRemote = remoteRevenueConfigService.getListByHardwareSn(queryParam, SecurityConstants.INNER); + RmResourceRegistrationRemote resourceMsg = registrationRemote.getData(); + resultMap.put("resourceMsg", resourceMsg); + // 脚本执行结果构建 + List> scriptList = new ArrayList<>(); + List reslutList = rmResourceRemoteMapper.selectRmResourceRemoteList(rmResourceRemote); + for (RmResourceRemote resourceRemote : reslutList) { + // 脚本执行返回结果 + JSONObject jsonObject = JSONObject.parseObject(resourceRemote.getDescription()); + String command = jsonObject.getString("command"); + String resOut = jsonObject.getString("resOut"); + String sucOrFail = (!"".equals(resOut) && !"脚本执行失败".equals(resOut)) ? "执行成功":"执行失败"; + StringBuilder resultSb = new StringBuilder(); + resultSb.append("【").append(resourceRemote.getResourceName()).append("】脚本执行命令:") + .append(command).append(sucOrFail).append(",\n执行结果如下:\n").append(resOut); + Map map = new HashMap<>(); + Date createTime = resourceRemote.getCreateTime(); + String createTimeStr = DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", createTime); + map.put("createTime", createTimeStr); + map.put("content", resultSb); + scriptList.add(map); + } + resultMap.put("scriptResult", scriptList); + return resultMap; + } +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/utils/DataProcessUtil.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/utils/DataProcessUtil.java index b4b6037..f5c08c5 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/utils/DataProcessUtil.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/utils/DataProcessUtil.java @@ -80,6 +80,7 @@ public class DataProcessUtil { linuxData.put("docker", filterItemsByDataType(linuxItems, "DOCKER")); result.put("linux", linuxData); + result.put("resourceType", "linux"); } } @@ -101,6 +102,7 @@ public class DataProcessUtil { switchData.put("switchFan", filterItemsByDataType(switchItems, "FAN")); result.put("switch", switchData); + result.put("resourceType", "switch"); } } /** diff --git a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmResourceRemoteMapper.xml b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmResourceRemoteMapper.xml new file mode 100644 index 0000000..ca1baf7 --- /dev/null +++ b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmResourceRemoteMapper.xml @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + insert IGNORE into rm_resource_remote + + 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, + + + #{hardwareSn}, + #{resourceType}, + #{resourceName}, + #{description}, + #{internalIp}, + #{externalIp}, + #{managementPort}, + #{onlineStatus}, + #{connectionMethod}, + #{createTime}, + #{updateTime}, + #{createBy}, + #{updateBy}, + + + + + update rm_resource_remote + + hardware_sn = #{hardwareSn}, + resource_type = #{resourceType}, + resource_name = #{resourceName}, + description = #{description}, + internal_ip = #{internalIp}, + external_ip = #{externalIp}, + management_port = #{managementPort}, + online_status = #{onlineStatus}, + connection_method = #{connectionMethod}, + create_time = #{createTime}, + update_time = #{updateTime}, + create_by = #{createBy}, + update_by = #{updateBy}, + + where id = #{id} + + + + delete from rm_resource_remote where id = #{id} + + + + delete from rm_resource_remote where id in + + #{id} + + + \ No newline at end of file