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 a35bc31..807722a 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 @@ -106,5 +106,13 @@ public interface RemoteRevenueConfigService */ @PostMapping("/registration/innerAddRegist") public R innerAddRegist(@RequestBody RmRegisterMsgRemote rmRegisterMsgRemote, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + /** + * 添加节点标识 + * @param rmResourceRegistrationRemote + * @param source + * @return + */ + @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 dfe854a..e60e620 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 @@ -54,6 +54,14 @@ public interface RemoteRocketMqService { @PostMapping("/networkInterface/getNetworkInterfaceList") public R> getNetworkInterfaceList(@RequestBody RmNetworkInterfaceRemote rmNetworkInterfaceRemote, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + /** + * 获取网卡接口列表 + * @param rmNetworkInterfaceRemote + * @param source + * @return + */ + @PostMapping("/networkInterface/bindPublicIp") + public R bindPublicIp(@RequestBody RmNetworkInterfaceRemote rmNetworkInterfaceRemote, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); /** * 下发策略 * @param id diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/RmRegisterMsgRemote.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/RmRegisterMsgRemote.java index 9203345..1ee2678 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/RmRegisterMsgRemote.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/RmRegisterMsgRemote.java @@ -1,11 +1,13 @@ package com.ruoyi.system.api.domain; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import java.util.List; @Data +@JsonIgnoreProperties(ignoreUnknown = true) public class RmRegisterMsgRemote { @JsonProperty("clientId") private String clientId; diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteRevenueConfigFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteRevenueConfigFallbackFactory.java index 47cea24..d810eae 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteRevenueConfigFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteRevenueConfigFallbackFactory.java @@ -59,22 +59,27 @@ public class RemoteRevenueConfigFallbackFactory implements FallbackFactory getRegistrationList(RmResourceRegistrationRemote rmResourceRegistrationRemote, String source) { - return R.fail("获取资源注册列表信息失败" + throwable.getMessage()); + return R.fail("获取资源注册列表信息失败:" + throwable.getMessage()); } @Override public R getListByHardwareSn(RmResourceRegistrationRemote rmResourceRegistrationRemote, String source) { - return R.fail("根据SN获取资源注册列表信息失败" + throwable.getMessage()); + return R.fail("根据SN获取资源注册列表信息失败:" + throwable.getMessage()); } @Override public R> getSwitchNameByClientId(RmSwitchManagementRemote rmSwitchManagementRemote, String source) { - return R.fail("根据clientId获取交换机信息失败" + throwable.getMessage()); + return R.fail("根据clientId获取交换机信息失败:" + throwable.getMessage()); } @Override public R innerAddRegist(RmRegisterMsgRemote rmRegisterMsgRemote, String source) { - return R.fail("自动注册失败" + throwable.getMessage()); + return R.fail("自动注册失败:" + throwable.getMessage()); + } + + @Override + public R innerupdateRegist(RmResourceRegistrationRemote rmResourceRegistrationRemote, String source) { + return R.fail("修改服务器注册信息失败:" + throwable.getMessage()); } }; } 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 b3bb93a..98b59bb 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 @@ -53,6 +53,11 @@ public class RemoteRocketMqFallbackFactory implements FallbackFactory bindPublicIp(RmNetworkInterfaceRemote rmNetworkInterfaceRemote, String source) { + return R.fail(throwable.getMessage()); + } + @Override public R innerIssueSwitchPolicy(Long id, 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 3da5805..ff44334 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 @@ -11,6 +11,7 @@ import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.security.annotation.InnerAuth; import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.system.api.domain.RmRegisterMsgRemote; +import com.ruoyi.system.api.domain.RmResourceRegistrationRemote; import com.ruoyi.system.domain.RmResourceRegistration; import com.ruoyi.system.service.IRmResourceRegistrationService; import org.springframework.beans.factory.annotation.Autowired; @@ -189,5 +190,27 @@ public class RmResourceRegistrationController extends BaseController int rows = rmResourceRegistrationService.innerAddRegist(rmResourceRegistration); return R.ok(rows); } + /** + * 添加节点标识 + * @param rmResourceRegistration mq接收的消息 + * @return + */ + @PostMapping("/innerUpdateRegist") + @InnerAuth + public R innerUpdateRegist(@RequestBody RmResourceRegistrationRemote rmResourceRegistration) + { + int rows = rmResourceRegistrationService.innerUpdateRegist(rmResourceRegistration); + return R.ok(rows); + } + /** + * 选择公网业务IP + */ + @RequiresPermissions("system:registration:update") + @PostMapping("/bindBusinessPubulicIp") + public AjaxResult bindBusinessPubulicIp(@RequestBody RmResourceRegistration rmResourceRegistration) + { + int rows = rmResourceRegistrationService.bindBusinessPubulicIp(rmResourceRegistration); + return toAjax(rows); + } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/RmResourceRegistration.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/RmResourceRegistration.java index b20aaee..6b9c6df 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/RmResourceRegistration.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/RmResourceRegistration.java @@ -4,6 +4,9 @@ import com.ruoyi.common.core.annotation.Excel; import com.ruoyi.common.core.web.domain.BaseEntity; import lombok.Data; +import java.util.List; +import java.util.Map; + /** * 资源注册对象 rm_resource_registration * @@ -173,4 +176,6 @@ public class RmResourceRegistration extends BaseEntity * 心跳周期(单位:秒) */ private Integer heartbeatInterval; + /** 需要绑定的网卡信息 */ + private List bindNetworkMsg; } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/RmSwitchManagement.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/RmSwitchManagement.java index b31dc7c..8fd035b 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/RmSwitchManagement.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/RmSwitchManagement.java @@ -85,5 +85,7 @@ public class RmSwitchManagement extends BaseEntity private List switchInterfaceInfoList; /** 自动生成客户端id(uuid) */ private String clientId; + /** 查询条件 */ + private String queryName; } 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 d42d78c..f6e58c5 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 @@ -3,6 +3,7 @@ package com.ruoyi.system.service; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.system.api.domain.RmRegisterMsgRemote; +import com.ruoyi.system.api.domain.RmResourceRegistrationRemote; import com.ruoyi.system.domain.RmResourceRegistration; import java.util.List; @@ -98,4 +99,18 @@ public interface IRmResourceRegistrationService * @return */ int innerAddRegist(RmRegisterMsgRemote rmResourceRegistration); + + /** + * 添加节点标识 + * @param rmResourceRegistration + * @return + */ + int innerUpdateRegist(RmResourceRegistrationRemote rmResourceRegistration); + + /** + * 选择公网业务IP + * @param rmResourceRegistration + * @return + */ + int bindBusinessPubulicIp(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 ef66db9..7c69a58 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 @@ -5,11 +5,14 @@ import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.enums.MsgEnum; import com.ruoyi.common.core.utils.DateUtils; +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.domain.EpsNodeBandwidth; import com.ruoyi.system.domain.EpsServerRevenueConfig; import com.ruoyi.system.domain.RmEpsTopologyManagement; @@ -427,5 +430,53 @@ public class RmResourceRegistrationServiceImpl implements IRmResourceRegistratio return 1; } + /** + * 添加节点标识 + * @param rmResourceRegistration + * @return + */ + @Override + public int innerUpdateRegist(RmResourceRegistrationRemote rmResourceRegistration) { + // 查询此数据是否存在 + RmResourceRegistration queryParam = new RmResourceRegistration(); + queryParam.setClientId(rmResourceRegistration.getClientId()); + RmResourceRegistration exits = rmResourceRegistrationMapper.selectRegistMsgByClientId(queryParam); + if(exits != null){ + // 如果逻辑节点为空或者有变化 设置新节点 + if(exits.getLogicalNodeId() == null || + !StringUtils.equals(rmResourceRegistration.getLogicalNodeId(),exits.getLogicalNodeId())){ + // 如果服务器已注册 增加节点标识 + RmResourceRegistration updateData = new RmResourceRegistration(); + updateData.setId(exits.getId()); + updateData.setLogicalNodeId(rmResourceRegistration.getLogicalNodeId()); + rmResourceRegistrationMapper.updateRmResourceRegistration(updateData); + log.info("设备:{},逻辑节点增加成功",rmResourceRegistration.getClientId()); + return 1; + } + } + return 0; + } + + @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(); + // 绑定ip + RmNetworkInterfaceRemote rmNetworkInterfaceRemote = new RmNetworkInterfaceRemote(); + rmNetworkInterfaceRemote.setId(id); + rmNetworkInterfaceRemote.setBindIp(status); + remoteRocketMqService.bindPublicIp(rmNetworkInterfaceRemote, SecurityConstants.INNER); + } + // 修改多公网IP状态为已绑定 + RmResourceRegistration updateData = new RmResourceRegistration(); + updateData.setId(rmResourceRegistration.getId()); + updateData.setMultiPublicIpStatus("1"); + rmResourceRegistrationMapper.updateRmResourceRegistration(updateData); + return 1; + } + } diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RmSwitchManagementMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RmSwitchManagementMapper.xml index c3545e1..44943f8 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RmSwitchManagementMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RmSwitchManagementMapper.xml @@ -55,6 +55,9 @@ and switch_user = #{switchUser} and switch_password = #{switchPassword} and client_id = #{clientId} + + and (snmp_address = #{snmpAddress} or switch_name like concat('%', #{switchName}, '%')) + diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmAgentManagementController.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmAgentManagementController.java index 90971d7..a600447 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmAgentManagementController.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmAgentManagementController.java @@ -73,4 +73,27 @@ public class RmAgentManagementController extends BaseController { return toAjax(rmAgentManagementService.updateRmAgentManagement(rmAgentManagement)); } + + /** + * 手动立即更新 + * @param id + * @return + */ + @RequiresPermissions("rocketmq:management:edit") + @GetMapping("/updateAgentNow") + public AjaxResult updateAgentNow(Long id){ + rmAgentManagementService.updateAgentNow(id); + return success(); + } + + /** + * 配置更新策略 + */ + @RequiresPermissions("rocketmq:management:add") + @Log(title = "Agent管理", businessType = BusinessType.INSERT) + @PostMapping("/addUpdatePolicy") + public AjaxResult addUpdatePolicy(@RequestBody RmAgentManagement rmAgentManagement) + { + return toAjax(rmAgentManagementService.addUpdatePolicy(rmAgentManagement)); + } } diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmFileInfoController.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmFileInfoController.java new file mode 100644 index 0000000..7e05485 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmFileInfoController.java @@ -0,0 +1,105 @@ +package com.ruoyi.rocketmq.controller; + +import java.util.List; +import java.io.IOException; +import javax.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.ruoyi.common.log.annotation.Log; +import com.ruoyi.common.log.enums.BusinessType; +import com.ruoyi.common.security.annotation.RequiresPermissions; +import com.ruoyi.rocketmq.domain.RmFileInfo; +import com.ruoyi.rocketmq.service.IRmFileInfoService; +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.core.utils.poi.ExcelUtil; +import com.ruoyi.common.core.web.page.TableDataInfo; + +/** + * 文件信息Controller + * + * @author gyt + * @date 2025-09-15 + */ +@RestController +@RequestMapping("/info") +public class RmFileInfoController extends BaseController +{ + @Autowired + private IRmFileInfoService rmFileInfoService; + + /** + * 查询文件信息列表 + */ + @RequiresPermissions("rocketmq:info:list") + @GetMapping("/list") + public TableDataInfo list(RmFileInfo rmFileInfo) + { + startPage(); + List list = rmFileInfoService.selectRmFileInfoList(rmFileInfo); + return getDataTable(list); + } + + /** + * 导出文件信息列表 + */ + @RequiresPermissions("rocketmq:info:export") + @Log(title = "文件信息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, RmFileInfo rmFileInfo) + { + List list = rmFileInfoService.selectRmFileInfoList(rmFileInfo); + ExcelUtil util = new ExcelUtil(RmFileInfo.class); + util.exportExcel(response, list, "文件信息数据"); + } + + /** + * 获取文件信息详细信息 + */ + @RequiresPermissions("rocketmq:info:query") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return success(rmFileInfoService.selectRmFileInfoById(id)); + } + + /** + * 新增文件信息 + */ + @RequiresPermissions("rocketmq:info:add") + @Log(title = "文件信息", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody RmFileInfo rmFileInfo) + { + return toAjax(rmFileInfoService.insertRmFileInfo(rmFileInfo)); + } + + /** + * 修改文件信息 + */ + @RequiresPermissions("rocketmq:info:edit") + @Log(title = "文件信息", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody RmFileInfo rmFileInfo) + { + return toAjax(rmFileInfoService.updateRmFileInfo(rmFileInfo)); + } + + /** + * 删除文件信息 + */ + @RequiresPermissions("rocketmq:info:remove") + @Log(title = "文件信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) + { + return toAjax(rmFileInfoService.deleteRmFileInfoByIds(ids)); + } +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmNetworkInterfaceController.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmNetworkInterfaceController.java index ea038ff..a64a33b 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmNetworkInterfaceController.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmNetworkInterfaceController.java @@ -4,7 +4,6 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.poi.ExcelUtil; import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.domain.AjaxResult; -import com.ruoyi.common.core.web.page.TableDataInfo; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.security.annotation.InnerAuth; @@ -34,12 +33,11 @@ public class RmNetworkInterfaceController extends BaseController * 查询客户端网络接口信息列表 */ @RequiresPermissions("rocketmq:networkInterface:list") - @GetMapping("/list") - public TableDataInfo list(RmNetworkInterface rmNetworkInterface) + @PostMapping("/list") + public AjaxResult list(RmNetworkInterface rmNetworkInterface) { - startPage(); List list = rmNetworkInterfaceService.selectRmNetworkInterfaceList(rmNetworkInterface); - return getDataTable(list); + return success(list); } /** @@ -107,4 +105,15 @@ public class RmNetworkInterfaceController extends BaseController List list = rmNetworkInterfaceService.selectRmNetworkInterfaceList(rmNetworkInterface); return R.ok(list); } + /** + * 远程调用修改客户端网络接口信息 + */ + @InnerAuth + @PostMapping("/bindPublicIp") + public R bindPublicIp(@RequestBody RmNetworkInterface rmNetworkInterface) + { + int rows = rmNetworkInterfaceService.bindPublicIp(rmNetworkInterface); + return R.ok(rows); + } + } diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmPolicyDeviceDetailsController.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmPolicyDeviceDetailsController.java new file mode 100644 index 0000000..cbf096c --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmPolicyDeviceDetailsController.java @@ -0,0 +1,105 @@ +package com.ruoyi.rocketmq.controller; + +import java.util.List; +import java.io.IOException; +import javax.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.ruoyi.common.log.annotation.Log; +import com.ruoyi.common.log.enums.BusinessType; +import com.ruoyi.common.security.annotation.RequiresPermissions; +import com.ruoyi.rocketmq.domain.RmPolicyDeviceDetails; +import com.ruoyi.rocketmq.service.IRmPolicyDeviceDetailsService; +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.core.utils.poi.ExcelUtil; +import com.ruoyi.common.core.web.page.TableDataInfo; + +/** + * 客户端策略关联Controller + * + * @author gyt + * @date 2025-10-22 + */ +@RestController +@RequestMapping("/policyDeviceDetails") +public class RmPolicyDeviceDetailsController extends BaseController +{ + @Autowired + private IRmPolicyDeviceDetailsService rmPolicyDeviceDetailsService; + + /** + * 查询客户端策略关联列表 + */ + @RequiresPermissions("rocketmq:policyDeviceDetails:list") + @GetMapping("/list") + public TableDataInfo list(RmPolicyDeviceDetails rmPolicyDeviceDetails) + { + startPage(); + List list = rmPolicyDeviceDetailsService.selectRmPolicyDeviceDetailsList(rmPolicyDeviceDetails); + return getDataTable(list); + } + + /** + * 导出客户端策略关联列表 + */ + @RequiresPermissions("rocketmq:policyDeviceDetails:export") + @Log(title = "客户端策略关联", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, RmPolicyDeviceDetails rmPolicyDeviceDetails) + { + List list = rmPolicyDeviceDetailsService.selectRmPolicyDeviceDetailsList(rmPolicyDeviceDetails); + ExcelUtil util = new ExcelUtil(RmPolicyDeviceDetails.class); + util.exportExcel(response, list, "客户端策略关联数据"); + } + + /** + * 获取客户端策略关联详细信息 + */ + @RequiresPermissions("rocketmq:policyDeviceDetails:query") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return success(rmPolicyDeviceDetailsService.selectRmPolicyDeviceDetailsById(id)); + } + + /** + * 新增客户端策略关联 + */ + @RequiresPermissions("rocketmq:policyDeviceDetails:add") + @Log(title = "客户端策略关联", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody RmPolicyDeviceDetails rmPolicyDeviceDetails) + { + return toAjax(rmPolicyDeviceDetailsService.insertRmPolicyDeviceDetails(rmPolicyDeviceDetails)); + } + + /** + * 修改客户端策略关联 + */ + @RequiresPermissions("rocketmq:policyDeviceDetails:edit") + @Log(title = "客户端策略关联", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody RmPolicyDeviceDetails rmPolicyDeviceDetails) + { + return toAjax(rmPolicyDeviceDetailsService.updateRmPolicyDeviceDetails(rmPolicyDeviceDetails)); + } + + /** + * 删除客户端策略关联 + */ + @RequiresPermissions("rocketmq:policyDeviceDetails:remove") + @Log(title = "客户端策略关联", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) + { + return toAjax(rmPolicyDeviceDetailsService.deleteRmPolicyDeviceDetailsByIds(ids)); + } +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/InitialHeartbeatListen.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/InitialHeartbeatListen.java index 58cd910..b920aee 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/InitialHeartbeatListen.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/InitialHeartbeatListen.java @@ -1,5 +1,6 @@ package com.ruoyi.rocketmq.domain; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.ruoyi.common.core.annotation.Excel; import com.ruoyi.common.core.web.domain.BaseEntity; import lombok.Data; @@ -11,12 +12,17 @@ import lombok.Data; * @date 2025-09-08 */ @Data +@JsonIgnoreProperties(ignoreUnknown = true) public class InitialHeartbeatListen extends BaseEntity { private static final long serialVersionUID = 1L; /** 客户端ID */ private String clientId; + /** 节点 */ + private String logicalNode; + /** sn */ + private String sn; /** 强度值 */ @Excel(name = "强度值") diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmAgentManagement.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmAgentManagement.java index b2532fa..1e2365a 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmAgentManagement.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmAgentManagement.java @@ -74,5 +74,11 @@ public class RmAgentManagement extends BaseEntity private String includeNames; /** 查询条件名称 */ private String queryName; + /** 文件MD5 */ + private String fileMd5; + /** 客户端id */ + private String clientId; + /** 部署设备 */ + private String deployDevice; } 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 a35b44a..bd46284 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 @@ -81,4 +81,12 @@ public class RmDeploymentPolicy extends BaseEntity private String resourceGroupName; /** 资源组置空 */ private Boolean resourceGroupIdNull; + /** 部署设备 */ + private String deployDevice; + /** 业务脚本名称 */ + private String scriptName; + /** 业务脚本文件地址 */ + private String scriptPath; + /** 业务脚本参数 */ + private String defaultParams; } diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmFileInfo.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmFileInfo.java new file mode 100644 index 0000000..dab6272 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmFileInfo.java @@ -0,0 +1,131 @@ +package com.ruoyi.rocketmq.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.core.annotation.Excel; +import com.ruoyi.common.core.web.domain.BaseEntity; + +/** + * 文件信息对象 rm_file_info + * + * @author gyt + * @date 2025-09-15 + */ +public class RmFileInfo extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 文件ID */ + private Long id; + + /** 文件名称 */ + @Excel(name = "文件名称") + private String name; + + /** 文件类型(如:jpg、pdf、exe等) */ + @Excel(name = "文件类型", readConverterExp = "如=:jpg、pdf、exe等") + private String type; + + /** 文件描述 */ + @Excel(name = "文件描述") + private String description; + + /** 文件大小(KB) */ + @Excel(name = "文件大小", readConverterExp = "K=B") + private Long fileSize; + + /** 文件MD5值 */ + @Excel(name = "文件MD5值") + private String md5; + + /** 文件存储路径 */ + @Excel(name = "文件存储路径") + private String path; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + + public void setName(String name) + { + this.name = name; + } + + public String getName() + { + return name; + } + + public void setType(String type) + { + this.type = type; + } + + public String getType() + { + return type; + } + + public void setDescription(String description) + { + this.description = description; + } + + public String getDescription() + { + return description; + } + + public void setFileSize(Long fileSize) + { + this.fileSize = fileSize; + } + + public Long getFileSize() + { + return fileSize; + } + + public void setMd5(String md5) + { + this.md5 = md5; + } + + public String getMd5() + { + return md5; + } + + public void setPath(String path) + { + this.path = path; + } + + public String getPath() + { + return path; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("name", getName()) + .append("type", getType()) + .append("description", getDescription()) + .append("fileSize", getFileSize()) + .append("md5", getMd5()) + .append("path", getPath()) + .append("createTime", getCreateTime()) + .append("updateTime", getUpdateTime()) + .append("createBy", getCreateBy()) + .append("updateBy", getUpdateBy()) + .toString(); + } +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmPolicyDeviceDetails.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmPolicyDeviceDetails.java new file mode 100644 index 0000000..a8da7f5 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmPolicyDeviceDetails.java @@ -0,0 +1,116 @@ +package com.ruoyi.rocketmq.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.core.annotation.Excel; +import com.ruoyi.common.core.web.domain.BaseEntity; + +/** + * 客户端策略关联对象 rm_policy_device_details + * + * @author gyt + * @date 2025-10-22 + */ +public class RmPolicyDeviceDetails extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键ID */ + private Long id; + + /** 客户端ID */ + @Excel(name = "客户端ID") + private String clientId; + + /** 策略ID */ + @Excel(name = "策略ID") + private String policyId; + + /** 脚本ID */ + @Excel(name = "脚本ID") + private String scriptId; + + /** 版本ID */ + @Excel(name = "版本ID") + private String versionId; + + /** 状态(0-未下发,1-已下发) */ + @Excel(name = "状态(0-未下发,1-已下发)") + private String policyStatus; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + + public void setClientId(String clientId) + { + this.clientId = clientId; + } + + public String getClientId() + { + return clientId; + } + + public void setPolicyId(String policyId) + { + this.policyId = policyId; + } + + public String getPolicyId() + { + return policyId; + } + + public void setScriptId(String scriptId) + { + this.scriptId = scriptId; + } + + public String getScriptId() + { + return scriptId; + } + + public void setVersionId(String versionId) + { + this.versionId = versionId; + } + + public String getVersionId() + { + return versionId; + } + + public void setPolicyStatus(String policyStatus) + { + this.policyStatus = policyStatus; + } + + public String getPolicyStatus() + { + return policyStatus; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("clientId", getClientId()) + .append("policyId", getPolicyId()) + .append("scriptId", getScriptId()) + .append("versionId", getVersionId()) + .append("policyStatus", getPolicyStatus()) + .append("createTime", getCreateTime()) + .append("updateTime", getUpdateTime()) + .append("createBy", getCreateBy()) + .append("updateBy", getUpdateBy()) + .toString(); + } +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/vo/AgentUpdateMsgVo.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/vo/AgentUpdateMsgVo.java new file mode 100644 index 0000000..7245f48 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/vo/AgentUpdateMsgVo.java @@ -0,0 +1,15 @@ +package com.ruoyi.rocketmq.domain.vo; + +import lombok.Data; + +@Data +public class AgentUpdateMsgVo { + /**文件地址,外网HTTP(S)地址 */ + private String fileUrl; + /** 文件MD5 */ + private String fileMd5; + /** 执行方式:0、立即执行;1、定时执行; */ + private Integer method; + /** 定时时间,执行方式为1、定时执行时该字段必传 */ + private long policyTime; +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/vo/PolicyTypeVo.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/vo/PolicyTypeVo.java new file mode 100644 index 0000000..952a88d --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/vo/PolicyTypeVo.java @@ -0,0 +1,18 @@ +package com.ruoyi.rocketmq.domain.vo; + +import lombok.Data; + +import java.time.Instant; + +@Data +public class PolicyTypeVo { + + /** 服务器监控策略信息 */ + private String monitors; + /** 服务器脚本策略信息 */ + private String scripts; + /** agent更新信息 */ + private String versions; + /** 时间戳 */ + private Long timestamp = Instant.now().getEpochSecond(); +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/vo/PolicyVo.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/vo/PolicyVo.java new file mode 100644 index 0000000..33c3ac9 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/vo/PolicyVo.java @@ -0,0 +1,14 @@ +package com.ruoyi.rocketmq.domain.vo; + +import lombok.Data; + +import java.time.Instant; +import java.util.List; + +@Data +public class PolicyVo { + /** 更新时间戳 */ + private Long upTime = Instant.now().getEpochSecond(); + /** 更新内容 */ + private List contents; +} 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 new file mode 100644 index 0000000..89ebc05 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/vo/ServerScriptPolicyVo.java @@ -0,0 +1,17 @@ +package com.ruoyi.rocketmq.domain.vo; + +import lombok.Data; + +@Data +public class ServerScriptPolicyVo { + /** 策略名称 */ + private String policyName; + /** 外网Http(s)地址 */ + private String fileUrl; + /** 脚本参数 */ + private String commandParams; + /** 执行方式 */ + private int method; + /** 定时时间 精确到秒的时间戳 */ + private Long policyTime; +} 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 91cd457..8ff80b5 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 @@ -1,7 +1,5 @@ package com.ruoyi.rocketmq.handler; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.enums.MsgEnum; @@ -14,9 +12,11 @@ import com.ruoyi.rocketmq.domain.vo.RspVo; import com.ruoyi.rocketmq.service.*; import com.ruoyi.rocketmq.utils.DataProcessUtil; import com.ruoyi.rocketmq.utils.JsonDataParser; -import com.ruoyi.rocketmq.utils.SwitchJsonDataParser; import com.ruoyi.system.api.RemoteRevenueConfigService; -import com.ruoyi.system.api.domain.*; +import com.ruoyi.system.api.domain.EpsInitialTrafficDataRemote; +import com.ruoyi.system.api.domain.NetworkInfo; +import com.ruoyi.system.api.domain.RmRegisterMsgRemote; +import com.ruoyi.system.api.domain.RmResourceRegistrationRemote; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -29,12 +29,8 @@ import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; -import java.math.BigDecimal; -import java.math.RoundingMode; import java.util.*; import java.util.function.Consumer; -import java.util.function.Function; -import java.util.stream.Collectors; /** * 设备消息处理器 @@ -72,24 +68,8 @@ public class MessageHandler { @Autowired private IInitialMountPointInfoService initialMountPointInfoService; @Autowired - private IInitialSwitchInfoService initialSwitchInfoService; - @Autowired - private IInitialSystemInfoService initialSystemInfoService; - @Autowired - private IInitialSwitchInfoTempService initialSwitchInfoTempService; - @Autowired private IInitialHeartbeatListenLogService initialHeartbeatListenLog; @Autowired - private IInitialSwitchPowerSupplyService initialSwitchPowerSupplyService; - @Autowired - private IInitialSwitchFanInfoService initialSwitchFanInfoService; - @Autowired - private IInitialSwitchMpuInfoService initialSwitchMpuInfoService; - @Autowired - private IInitialSwitchOpticalModuleService initialSwitchOpticalModuleService; - @Autowired - private IInitialSwitchOtherCollectDataService insertInitialSwitchOtherInfo; - @Autowired private IInitialSystemOtherCollectDataService iInitialSystemOtherCollectDataService; @Autowired private IRmResourceRemoteService rmResourceRemoteService; @@ -99,8 +79,10 @@ public class MessageHandler { private DataProcessUtil dataProcessUtil; @Autowired private IRmNetworkInterfaceService rmNetworkInterfaceService; - // 在类中添加 - private static final ObjectMapper objectMapper = new ObjectMapper(); + @Autowired + private IRmMonitorPolicyService rmMonitorPolicyService; + @Autowired + private IRmDeploymentPolicyService rmDeploymentPolicyService; /** @@ -108,14 +90,6 @@ public class MessageHandler { */ @PostConstruct public void init() { - // 所有应答类消息使用同一个处理器 -// registerHandler(MsgEnum.注册应答.getValue(), this::handleResponseMessage); -// registerHandler(MsgEnum.断开应答.getValue(), this::handleResponseMessage); -// registerHandler(MsgEnum.开启系统采集应答.getValue(), this::handleResponseMessage); -// registerHandler(MsgEnum.关闭系统采集应答.getValue(), this::handleResponseMessage); -// registerHandler(MsgEnum.开启交换机采集应答.getValue(), this::handleResponseMessage); -// registerHandler(MsgEnum.关闭交换机采集应答.getValue(), this::handleResponseMessage); -// registerHandler(MsgEnum.告警设置应答.getValue(), this::handleResponseMessage); // registerHandler(MsgEnum.执行脚本策略应答.getValue(), this::handleScriptRspMessage); // registerHandler(MsgEnum.Agent版本更新应答.getValue(), this::handleAgentUpdateRspMessage); @@ -129,9 +103,7 @@ public class MessageHandler { // registerHandler(MsgEnum.网络上报.getValue(), this::handleNetMessage); // registerHandler(MsgEnum.挂载上报.getValue(), this::handleMountPointMessage); // registerHandler(MsgEnum.系统其他上报.getValue(), this::handleOtherSystemMessage); -// registerHandler(MsgEnum.交换机上报.getValue(), this::handleSwitchDataMessage); -// registerHandler(MsgEnum.心跳上报.getValue(), this::handleHeartbeatMessage); -// registerHandler(MsgEnum.多公网IP探测.getValue(), this::handlePublicIpDetectMessage); + registerHandler(MsgEnum.心跳上报.getValue(), this::handleHeartbeatMessage); } /** @@ -141,8 +113,12 @@ public class MessageHandler { private void handleNewPolicyMessage(DeviceMessage deviceMessage) { List interfaces = JsonDataParser.parseJsonData(deviceMessage.getData(), RegisterMsgVo.class); if(!interfaces.isEmpty()) { - // 获取该服务器的策略信息 - + RegisterMsgVo registerMsgVo = interfaces.get(0); + String clientId = registerMsgVo.getClientId(); + // 如果未下发监控策略,下发 + rmMonitorPolicyService.issuePolicyMsgByClientId(clientId); + // 如果未下发服务器脚本策略,下发 + rmDeploymentPolicyService.issueDeployPolicyMsgByClientId(clientId); } } @@ -253,17 +229,6 @@ public class MessageHandler { } } - /** - * 多公网IP探测 - * @param message - */ - private void handlePublicIpDetectMessage(DeviceMessage message) { - List rspVoList = JsonDataParser.parseJsonData(message.getData(), RspVo.class); - //TODO 公网信息入库 - // 查询公网信息 - // 如果公网信息有变化修改公网IP状态为需绑定 - } - /** * agent更新响应 * @param message @@ -448,248 +413,9 @@ public class MessageHandler { throw new RuntimeException("挂载点data数据为空"); } } - /** - * 交换机所有数据入库 - * @param message - */ - private void handleSwitchDataMessage(DeviceMessage message) { - List switchData = JsonDataParser.parseJsonData(message.getData(), CollectDataVo.class); - if(!switchData.isEmpty()){ - CollectDataVo switchDataVo = switchData.get(0); - switch(switchDataVo.getType()){ - case "switchNetCollect": - handleSwitchNetMessage(switchDataVo, message.getClientId()); - break; - case "switchPwrCollect": - handleSwitchPwrMessage(switchDataVo, message.getClientId()); - break; - case "switchModuleCollect": - handleSwitchModuleMessage(switchDataVo, message.getClientId()); - break; - case "switchMpuCollect": - handleSwitchMpuMessage(switchDataVo, message.getClientId()); - break; - case "switchFanCollect": - handleSwitchFanMessage(switchDataVo, message.getClientId()); - break; - default: - handleSwitchOtherMessage(switchDataVo, message.getClientId()); - break; - } - }else{ - throw new RuntimeException("交换机data数据为空"); - } - } - /** - * 电源发现数据 - * @param switchDataVo - */ - private void handleSwitchPwrMessage(CollectDataVo switchDataVo, String clientId){ - List powerSupplyList = SwitchJsonDataParser.parseJsonData(switchDataVo.getValue(), InitialSwitchPowerSupply.class); - if (!powerSupplyList.isEmpty()){ - for (InitialSwitchPowerSupply insertData : powerSupplyList) { - // 时间戳转换 - long timestamp = switchDataVo.getTimestamp(); - long millis = timestamp * 1000; - Date createTime = new Date(millis / 1000 * 1000); // 去除毫秒 - insertData.setClientId(clientId); - insertData.setCreateTime(createTime); - } - initialSwitchPowerSupplyService.insertBatchInitialSwitchPowerSupply(powerSupplyList); - } - } - /** - * 光模块发现数据 - * @param switchDataVo - */ - private void handleSwitchModuleMessage(CollectDataVo switchDataVo, String clientId){ - List moduleList = SwitchJsonDataParser.parseJsonData(switchDataVo.getValue(), InitialSwitchOpticalModule.class); - if (!moduleList.isEmpty()){ - for (InitialSwitchOpticalModule insertData : moduleList) { - // 时间戳转换 - long timestamp = switchDataVo.getTimestamp(); - long millis = timestamp * 1000; - Date createTime = new Date(millis / 1000 * 1000); // 去除毫秒 - insertData.setClientId(clientId); - insertData.setCreateTime(createTime); - } - initialSwitchOpticalModuleService.batchInitialSwitchOpticalModule(moduleList); - } - } - /** - * MPU发现数据 - * @param switchDataVo - */ - private void handleSwitchMpuMessage(CollectDataVo switchDataVo, String clientId){ - List mpuList = SwitchJsonDataParser.parseJsonData(switchDataVo.getValue(), InitialSwitchMpuInfo.class); - if (!mpuList.isEmpty()){ - for (InitialSwitchMpuInfo insertData : mpuList) { - // 时间戳转换 - long timestamp = switchDataVo.getTimestamp(); - long millis = timestamp * 1000; - Date createTime = new Date(millis / 1000 * 1000); // 去除毫秒 - insertData.setClientId(clientId); - insertData.setCreateTime(createTime); - } - initialSwitchMpuInfoService.insertBatchInitialSwitchMpuInfo(mpuList); - } - } - /** - * 风扇发现数据 - * @param switchDataVo - */ - private void handleSwitchFanMessage(CollectDataVo switchDataVo, String clientId){ - List fanList = SwitchJsonDataParser.parseJsonData(switchDataVo.getValue(), InitialSwitchFanInfo.class); - if (!fanList.isEmpty()){ - for (InitialSwitchFanInfo insertData : fanList) { - // 时间戳转换 - long timestamp = switchDataVo.getTimestamp(); - long millis = timestamp * 1000; - Date createTime = new Date(millis / 1000 * 1000); // 去除毫秒 - insertData.setClientId(clientId); - insertData.setCreateTime(createTime); - } - initialSwitchFanInfoService.insertBatchInitialSwitchFanInfo(fanList); - } - } - - /** - * 其他发现数据(默认处理) - * @param switchDataVo - */ - private void handleSwitchOtherMessage(CollectDataVo switchDataVo, String clientId) { - if (switchDataVo != null) { - try { - InitialSwitchOtherCollectData insertData = new InitialSwitchOtherCollectData(); - - // 设置基本信息 - long timestamp = switchDataVo.getTimestamp(); - Date createTime = new Date(timestamp * 1000 / 1000 * 1000); - insertData.setClientId(clientId); - insertData.setCreateTime(createTime); - - String value = switchDataVo.getValue(); - JsonNode jsonNode = objectMapper.readTree(value); - - // 处理数组中的字符串JSON - if (jsonNode.isArray() && jsonNode.size() > 0) { - JsonNode firstElement = jsonNode.get(0); - - if (firstElement.isTextual()) { - // 二次解析JSON字符串 - JsonNode innerJsonNode = objectMapper.readTree(firstElement.asText()); - - if (innerJsonNode.isObject()) { - Iterator> fields = innerJsonNode.fields(); - if (fields.hasNext()) { - Map.Entry entry = fields.next(); - String fieldName = entry.getKey(); - String fieldValue = entry.getValue().asText(); - - insertData.setCollectType(fieldName); - if (!"null".equals(fieldValue)) { - insertData.setCollectValue(fieldValue); - insertInitialSwitchOtherInfo.insertInitialSwitchOtherCollectData(insertData); - } - } - } - } - } - - } catch (Exception e) { - log.error("解析JSON数据失败: {}, value: {}", e.getMessage(), switchDataVo.getValue(), e); - } - } - } - /** - * 交换机网卡信息数据入库 - * @param switchDataVo - */ - private void handleSwitchNetMessage(CollectDataVo switchDataVo, String clientId) { - List switchInfos = SwitchJsonDataParser.parseJsonData(switchDataVo.getValue(), InitialSwitchInfo.class); - if(!switchInfos.isEmpty()){ - // 根据clientId查询交换机ip - RmResourceRegistrationRemote queryParam = new RmResourceRegistrationRemote(); - queryParam.setHardwareSn(clientId); - R registMsgR = remoteRevenueConfigService.getListByHardwareSn(queryParam, SecurityConstants.INNER); - if(registMsgR != null){ - RmResourceRegistrationRemote registMsg = registMsgR.getData(); - } - // 时间戳转换 - long timestamp = switchDataVo.getTimestamp(); - long millis = timestamp * 1000; - Date createTime = new Date(millis / 1000 * 1000); // 去除毫秒 - String timeStr = DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",createTime); - // 查询临时表信息,计算实际流量值 - InitialSwitchInfoTemp temp = new InitialSwitchInfoTemp(); - temp.setClientId(clientId); - List tempList = initialSwitchInfoTempService.selectInitialSwitchInfoTempList(temp); - if(!tempList.isEmpty()){ - // 1. 构建快速查找的Map - Map tempMap = tempList.stream() - .collect(Collectors.toMap( - InitialSwitchInfoTemp::getName, - Function.identity(), - (existing, replacement) -> existing - )); - - // 2. 预计算除数(避免重复创建对象) - BigDecimal divisor = new BigDecimal(300); - - // 3. 计算速度 - switchInfos.forEach(switchInfo -> { - switchInfo.setClientId(clientId); - switchInfo.setCreateTime(createTime); - if(registMsgR != null && registMsgR.getData()!=null && registMsgR.getData().getSnmpCollectAddr()!=null){ - switchInfo.setSwitchIp(registMsgR.getData().getSnmpCollectAddr()); - } - InitialSwitchInfoTemp tempInfo = tempMap.get(switchInfo.getName()); - if (tempInfo != null) { - // 计算inSpeed - if (switchInfo.getInBytes() != null && tempInfo.getInBytes() != null) { - BigDecimal inDiff = switchInfo.getInBytes().subtract(tempInfo.getInBytes()); - // 字节转为bit - BigDecimal inDiffBit = inDiff.multiply(new BigDecimal(8)).setScale(0, RoundingMode.HALF_UP); - switchInfo.setInSpeed(inDiffBit.divide(divisor, 2, RoundingMode.HALF_UP)); - } - - // 计算outSpeed - if (switchInfo.getOutBytes() != null && tempInfo.getOutBytes() != null) { - BigDecimal outDiff = switchInfo.getOutBytes().subtract(tempInfo.getOutBytes()); - // 字节转为bit - BigDecimal outDiffBit = outDiff.multiply(new BigDecimal(8)).setScale(0, RoundingMode.HALF_UP); - switchInfo.setOutSpeed(outDiffBit.divide(divisor, 2, RoundingMode.HALF_UP)); - } - } - }); - }else{ - switchInfos.forEach(switchInfo -> { - switchInfo.setClientId(clientId); - switchInfo.setCreateTime(createTime); - if(registMsgR != null && registMsgR.getData()!=null && registMsgR.getData().getSnmpCollectAddr()!=null){ - switchInfo.setSwitchIp(registMsgR.getData().getSnmpCollectAddr()); - } - }); - } - // 清空临时表对应switch信息 - initialSwitchInfoTempService.truncateSwitchInfoTemp(clientId); - // 临时表 用来计算inSpeed outSeppd - initialSwitchInfoTempService.batchInsertInitialSwitchInfoTemp(switchInfos); - // 初始交换机数据入库 - initialSwitchInfoService.batchInsertInitialSwitchInfo(switchInfos); - // 业务表入库 - InitialSwitchInfoDetailsRemote detailsRemote = new InitialSwitchInfoDetailsRemote(); - detailsRemote.setClientId(clientId); - detailsRemote.setStartTime(timeStr); - detailsRemote.setEndTime(timeStr); - remoteRevenueConfigService.autoSaveSwitchTraffic(detailsRemote, SecurityConstants.INNER); - }else{ - throw new RuntimeException("交换机data数据为空"); - } - } /** * 系统其他信息 @@ -733,7 +459,11 @@ public class MessageHandler { InitialHeartbeatListen heartbeat = heartbeats.get(0); String clientId = message.getClientId(); log.debug("处理心跳消息,客户端ID: {}, 时间: {}", clientId, heartbeat.getTimestamp()); - + // 添加逻辑节点标识 + RmResourceRegistrationRemote updateData = new RmResourceRegistrationRemote(); + updateData.setClientId(message.getClientId()); + updateData.setLogicalNodeId(heartbeat.getLogicalNode()); + remoteRevenueConfigService.innerupdateRegist(updateData, SecurityConstants.INNER); // 使用Redis存储状态 String statusKey = HEARTBEAT_STATUS_PREFIX + clientId; String timeKey = HEARTBEAT_TIME_PREFIX + clientId; diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/mapper/RmDeploymentPolicyMapper.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/mapper/RmDeploymentPolicyMapper.java index d3540f4..e30b706 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/mapper/RmDeploymentPolicyMapper.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/mapper/RmDeploymentPolicyMapper.java @@ -1,8 +1,9 @@ package com.ruoyi.rocketmq.mapper; -import java.util.List; import com.ruoyi.rocketmq.domain.RmDeploymentPolicy; +import java.util.List; + /** * 服务器脚本策略Mapper接口 * @@ -58,4 +59,11 @@ public interface RmDeploymentPolicyMapper * @return 结果 */ public int deleteRmDeploymentPolicyByIds(Long[] ids); + + /** + * 根据clientId查询未下发的服务器脚本策略 + * @param queryParam + * @return + */ + List selectRmDeploymentPolicyByClientId(RmDeploymentPolicy queryParam); } diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/mapper/RmFileInfoMapper.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/mapper/RmFileInfoMapper.java new file mode 100644 index 0000000..ec842e6 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/mapper/RmFileInfoMapper.java @@ -0,0 +1,61 @@ +package com.ruoyi.rocketmq.mapper; + +import java.util.List; +import com.ruoyi.rocketmq.domain.RmFileInfo; + +/** + * 文件信息Mapper接口 + * + * @author gyt + * @date 2025-09-15 + */ +public interface RmFileInfoMapper +{ + /** + * 查询文件信息 + * + * @param id 文件信息主键 + * @return 文件信息 + */ + public RmFileInfo selectRmFileInfoById(Long id); + + /** + * 查询文件信息列表 + * + * @param rmFileInfo 文件信息 + * @return 文件信息集合 + */ + public List selectRmFileInfoList(RmFileInfo rmFileInfo); + + /** + * 新增文件信息 + * + * @param rmFileInfo 文件信息 + * @return 结果 + */ + public int insertRmFileInfo(RmFileInfo rmFileInfo); + + /** + * 修改文件信息 + * + * @param rmFileInfo 文件信息 + * @return 结果 + */ + public int updateRmFileInfo(RmFileInfo rmFileInfo); + + /** + * 删除文件信息 + * + * @param id 文件信息主键 + * @return 结果 + */ + public int deleteRmFileInfoById(Long id); + + /** + * 批量删除文件信息 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteRmFileInfoByIds(Long[] ids); +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/mapper/RmPolicyDeviceDetailsMapper.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/mapper/RmPolicyDeviceDetailsMapper.java new file mode 100644 index 0000000..2a5dce4 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/mapper/RmPolicyDeviceDetailsMapper.java @@ -0,0 +1,61 @@ +package com.ruoyi.rocketmq.mapper; + +import java.util.List; +import com.ruoyi.rocketmq.domain.RmPolicyDeviceDetails; + +/** + * 客户端策略关联Mapper接口 + * + * @author gyt + * @date 2025-10-22 + */ +public interface RmPolicyDeviceDetailsMapper +{ + /** + * 查询客户端策略关联 + * + * @param id 客户端策略关联主键 + * @return 客户端策略关联 + */ + public RmPolicyDeviceDetails selectRmPolicyDeviceDetailsById(Long id); + + /** + * 查询客户端策略关联列表 + * + * @param rmPolicyDeviceDetails 客户端策略关联 + * @return 客户端策略关联集合 + */ + public List selectRmPolicyDeviceDetailsList(RmPolicyDeviceDetails rmPolicyDeviceDetails); + + /** + * 新增客户端策略关联 + * + * @param rmPolicyDeviceDetails 客户端策略关联 + * @return 结果 + */ + public int insertRmPolicyDeviceDetails(RmPolicyDeviceDetails rmPolicyDeviceDetails); + + /** + * 修改客户端策略关联 + * + * @param rmPolicyDeviceDetails 客户端策略关联 + * @return 结果 + */ + public int updateRmPolicyDeviceDetails(RmPolicyDeviceDetails rmPolicyDeviceDetails); + + /** + * 删除客户端策略关联 + * + * @param id 客户端策略关联主键 + * @return 结果 + */ + public int deleteRmPolicyDeviceDetailsById(Long id); + + /** + * 批量删除客户端策略关联 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteRmPolicyDeviceDetailsByIds(Long[] ids); +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmAgentManagementService.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmAgentManagementService.java index 8e19ae0..50e7b0e 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmAgentManagementService.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmAgentManagementService.java @@ -74,4 +74,18 @@ public interface IRmAgentManagementService * @return */ int addRmAgentManagement(RmAgentManagement rmAgentManagement); + + /** + * 手动立即更新agent + * @param id + * @return + */ + int updateAgentNow(Long id); + + /** + * 配置更新策略 + * @param rmAgentManagement + * @return + */ + int addUpdatePolicy(RmAgentManagement rmAgentManagement); } diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmDeploymentPolicyService.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmDeploymentPolicyService.java index 5426738..aafc980 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmDeploymentPolicyService.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmDeploymentPolicyService.java @@ -1,8 +1,9 @@ package com.ruoyi.rocketmq.service; -import java.util.List; import com.ruoyi.rocketmq.domain.RmDeploymentPolicy; +import java.util.List; + /** * 服务器脚本策略Service接口 * @@ -60,4 +61,11 @@ public interface IRmDeploymentPolicyService public int deleteRmDeploymentPolicyById(Long id); int issueDeploymentPolicy(Long id); + + /** + * 根据clientId下发包含此设备未下发的服务器脚本策略 + * @param clientId + * @return + */ + int issueDeployPolicyMsgByClientId(String clientId); } diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmFileInfoService.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmFileInfoService.java new file mode 100644 index 0000000..149be96 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmFileInfoService.java @@ -0,0 +1,61 @@ +package com.ruoyi.rocketmq.service; + +import java.util.List; +import com.ruoyi.rocketmq.domain.RmFileInfo; + +/** + * 文件信息Service接口 + * + * @author gyt + * @date 2025-09-15 + */ +public interface IRmFileInfoService +{ + /** + * 查询文件信息 + * + * @param id 文件信息主键 + * @return 文件信息 + */ + public RmFileInfo selectRmFileInfoById(Long id); + + /** + * 查询文件信息列表 + * + * @param rmFileInfo 文件信息 + * @return 文件信息集合 + */ + public List selectRmFileInfoList(RmFileInfo rmFileInfo); + + /** + * 新增文件信息 + * + * @param rmFileInfo 文件信息 + * @return 结果 + */ + public int insertRmFileInfo(RmFileInfo rmFileInfo); + + /** + * 修改文件信息 + * + * @param rmFileInfo 文件信息 + * @return 结果 + */ + public int updateRmFileInfo(RmFileInfo rmFileInfo); + + /** + * 批量删除文件信息 + * + * @param ids 需要删除的文件信息主键集合 + * @return 结果 + */ + public int deleteRmFileInfoByIds(Long[] ids); + + /** + * 删除文件信息信息 + * + * @param id 文件信息主键 + * @return 结果 + */ + public int deleteRmFileInfoById(Long id); +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmMonitorPolicyService.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmMonitorPolicyService.java index 4f0be18..2a65d24 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmMonitorPolicyService.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmMonitorPolicyService.java @@ -1,7 +1,6 @@ package com.ruoyi.rocketmq.service; import com.ruoyi.rocketmq.domain.RmMonitorPolicy; -import com.ruoyi.rocketmq.domain.vo.CollectVo; import java.util.List; import java.util.Map; @@ -86,9 +85,9 @@ public interface IRmMonitorPolicyService int updatePolicyMsgInner(RmMonitorPolicy rmMonitorPolicy); /** - * + * 检测策略是否下发,如果未下发,进行下发操作 * @param clientId * @return */ - public List getPolicyMsgByClientId(String clientId); + public int issuePolicyMsgByClientId(String clientId); } diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmNetworkInterfaceService.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmNetworkInterfaceService.java index 5b9502a..03fb36f 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmNetworkInterfaceService.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmNetworkInterfaceService.java @@ -66,4 +66,11 @@ public interface IRmNetworkInterfaceService * @return 结果 */ public int deleteRmNetworkInterfaceById(Long id); + + /** + * 绑定公网ip + * @param rmNetworkInterface + * @return + */ + int bindPublicIp(RmNetworkInterface rmNetworkInterface); } diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmPolicyDeviceDetailsService.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmPolicyDeviceDetailsService.java new file mode 100644 index 0000000..437175a --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmPolicyDeviceDetailsService.java @@ -0,0 +1,61 @@ +package com.ruoyi.rocketmq.service; + +import java.util.List; +import com.ruoyi.rocketmq.domain.RmPolicyDeviceDetails; + +/** + * 客户端策略关联Service接口 + * + * @author gyt + * @date 2025-10-22 + */ +public interface IRmPolicyDeviceDetailsService +{ + /** + * 查询客户端策略关联 + * + * @param id 客户端策略关联主键 + * @return 客户端策略关联 + */ + public RmPolicyDeviceDetails selectRmPolicyDeviceDetailsById(Long id); + + /** + * 查询客户端策略关联列表 + * + * @param rmPolicyDeviceDetails 客户端策略关联 + * @return 客户端策略关联集合 + */ + public List selectRmPolicyDeviceDetailsList(RmPolicyDeviceDetails rmPolicyDeviceDetails); + + /** + * 新增客户端策略关联 + * + * @param rmPolicyDeviceDetails 客户端策略关联 + * @return 结果 + */ + public int insertRmPolicyDeviceDetails(RmPolicyDeviceDetails rmPolicyDeviceDetails); + + /** + * 修改客户端策略关联 + * + * @param rmPolicyDeviceDetails 客户端策略关联 + * @return 结果 + */ + public int updateRmPolicyDeviceDetails(RmPolicyDeviceDetails rmPolicyDeviceDetails); + + /** + * 批量删除客户端策略关联 + * + * @param ids 需要删除的客户端策略关联主键集合 + * @return 结果 + */ + public int deleteRmPolicyDeviceDetailsByIds(Long[] ids); + + /** + * 删除客户端策略关联信息 + * + * @param id 客户端策略关联主键 + * @return 结果 + */ + public int deleteRmPolicyDeviceDetailsById(Long id); +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmAgentManagementServiceImpl.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmAgentManagementServiceImpl.java index 51a5689..760b136 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmAgentManagementServiceImpl.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmAgentManagementServiceImpl.java @@ -5,12 +5,13 @@ import com.ruoyi.common.core.enums.MsgEnum; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.rocketmq.domain.DeviceMessage; import com.ruoyi.rocketmq.domain.RmAgentManagement; -import com.ruoyi.rocketmq.domain.vo.AgentUpdateVo; +import com.ruoyi.rocketmq.domain.vo.*; import com.ruoyi.rocketmq.mapper.RmAgentManagementMapper; import com.ruoyi.rocketmq.model.ProducerMode; import com.ruoyi.rocketmq.producer.MessageProducer; import com.ruoyi.rocketmq.service.IRmAgentManagementService; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -132,6 +133,29 @@ public class RmAgentManagementServiceImpl implements IRmAgentManagementService processAgentUpdateData(rmAgentManagement); return 1; } + /** + * 配置更新策略v1.1 + * @param rmAgentManagement + * @return + */ + @Override + public int addUpdatePolicy(RmAgentManagement rmAgentManagement) { + processAgentData(rmAgentManagement); + return 1; + } + + /** + * 手动立即更新 + * @param id + * @return + */ + @Override + public int updateAgentNow(Long id) { + // 根据id查询agent更新信息 + RmAgentManagement rmAgentManagement = rmAgentManagementMapper.selectRmAgentManagementById(id); + processAgentData(rmAgentManagement); + return 1; + } /** * 处理agen更新数据 @@ -187,4 +211,74 @@ public class RmAgentManagementServiceImpl implements IRmAgentManagementService log.error("发送设备配置失败,deviceId: {}", rmAgentManagement.getHardwareSn(), e); } } + /** + * 处理agen更新数据 + * @param rmAgentManagement + */ + public void processAgentData(RmAgentManagement rmAgentManagement){ + String clientIds = rmAgentManagement.getDeployDevice(); + String[] clientIdArr = clientIds.split("\n"); + for (String clientId : clientIdArr) { + // 创建新的对象,避免污染原始数据 + RmAgentManagement currentAgent = new RmAgentManagement(); + // 复制原始对象的属性 + BeanUtils.copyProperties(rmAgentManagement, currentAgent); + // 设置当前循环的 clientId + currentAgent.setClientId(clientId); + currentAgent.setDeployDevice(clientId); + // 查询该资源是否已经配置 + RmAgentManagement agentQueryParam = new RmAgentManagement(); + agentQueryParam.setClientId(clientId); + List agentManagements = rmAgentManagementMapper.selectRmAgentManagementList(agentQueryParam); + if(!agentManagements.isEmpty()){ + // 如果存在,修改 + currentAgent.setLastUpdateTime(DateUtils.getNowDate()); + if("0".equals(rmAgentManagement.getMethod())){ + currentAgent.setScheduledUpdateTime(null); + } + rmAgentManagementMapper.updateRmAgentManagementBySn(currentAgent); + }else{ + // 如果不存在,添加 + currentAgent.setLastUpdateTime(DateUtils.getNowDate()); + if("0".equals(rmAgentManagement.getMethod())){ + currentAgent.setScheduledUpdateTime(null); + } + rmAgentManagementMapper.insertRmAgentManagement(currentAgent); + } + // 构建更新策略 + AgentUpdateMsgVo agentUpdateMsgVo = new AgentUpdateMsgVo(); + agentUpdateMsgVo.setFileUrl(rmAgentManagement.getFileUrl()); + agentUpdateMsgVo.setFileMd5(rmAgentManagement.getFileMd5()); + agentUpdateMsgVo.setMethod(rmAgentManagement.getMethod()); + if(rmAgentManagement.getMethod() == 1){ + Date scheduledUpdateTime = rmAgentManagement.getScheduledUpdateTime(); + long scheduledTime = scheduledUpdateTime.toInstant().getEpochSecond(); + agentUpdateMsgVo.setPolicyTime(scheduledTime); + } + try { + PolicyVo policyVo = new PolicyVo(); + List list = new ArrayList<>(); + list.add(agentUpdateMsgVo); + policyVo.setContents(list); + String policyVoStr = JSONObject.toJSONString(policyVo); + PolicyTypeVo policyTypeVo = new PolicyTypeVo(); + policyTypeVo.setVersions(policyVoStr); + String configJson = JSONObject.toJSONString(policyTypeVo); + DeviceMessage deviceMessage = new DeviceMessage(); + deviceMessage.setClientId(clientId); + deviceMessage.setDataType(MsgEnum.获取最新策略应答.getValue()); + deviceMessage.setData(configJson); + MessageProducer messageProducer = new MessageProducer(); + + messageProducer.sendAsyncProducerMessage( + producerMode.getAgentTopic(), + "", + "", + JSONObject.toJSONString(deviceMessage) + ); + } catch (Exception e) { + log.error("发送设备配置失败,deviceId: {}", rmAgentManagement.getHardwareSn(), e); + } + } + } } 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 9196fb7..b7c09af 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,7 +8,10 @@ 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.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.model.ProducerMode; import com.ruoyi.rocketmq.producer.MessageProducer; @@ -254,4 +257,86 @@ public class RmDeploymentPolicyServiceImpl implements IRmDeploymentPolicyService } } } + + /** + * 根据clientId下发包含此设备未下发的服务器脚本策略 + * @param clientId + * @return + */ + @Override + public int issueDeployPolicyMsgByClientId(String clientId) { + try { + // 根据clientId查询未下发的策略信息 + RmDeploymentPolicy queryParam = new RmDeploymentPolicy(); + queryParam.setDeployDevice(clientId); + queryParam.setPolicyStatus("0"); + // 获取策略详情 + List policyList = rmDeploymentPolicyMapper.selectRmDeploymentPolicyByClientId(queryParam); + if (policyList.isEmpty()) { + log.error("无待下发策略,clientId: {}", clientId); + return 0; + }else{ + for (RmDeploymentPolicy policy : policyList) { + // 构建并发送脚本配置 + ServerScriptPolicyVo scriptPolicyVo = new ServerScriptPolicyVo(); + scriptPolicyVo.setPolicyName(policy.getPolicyName()); + scriptPolicyVo.setFileUrl(policy.getScriptPath()); + scriptPolicyVo.setCommandParams(policy.getDefaultParams()); + scriptPolicyVo.setMethod(policy.getExecutionMethod()); + // 定时执行 + if(policy.getExecutionMethod() == 1){ + Date scheduledTime = policy.getScheduledTime(); + // 转化为时间戳(秒) + long timestampInSecondes = scheduledTime.getTime() / 1000; + scriptPolicyVo.setPolicyTime(timestampInSecondes); + } + String[] clientIdArr = policy.getDeployDevice().split("\n"); + sendDeploymentPolicy(clientIdArr, scriptPolicyVo); + // 更新策略状态为已下发 + RmDeploymentPolicy deploymentPolicy = new RmDeploymentPolicy(); + deploymentPolicy.setId(policy.getId()); + deploymentPolicy.setPolicyStatus("1"); + deploymentPolicy.setDeployTime(DateUtils.getNowDate()); + rmDeploymentPolicyMapper.updateRmDeploymentPolicy(deploymentPolicy); + } + + return 1; + } + } catch (Exception e) { + log.error("下发策略失败,clientId: {}", clientId, e); + return 0; + } + } + /** + * 发送配置到设备 + */ + private void sendDeploymentPolicy(String[] clientIdArr, ServerScriptPolicyVo scriptPolicyVo) { + MessageProducer messageProducer = new MessageProducer(); + + PolicyVo policyVo = new PolicyVo(); + List list = new ArrayList<>(); + list.add(scriptPolicyVo); + policyVo.setContents(list); + String policyVoStr = JSONObject.toJSONString(policyVo); + PolicyTypeVo policyTypeVo = new PolicyTypeVo(); + policyTypeVo.setScripts(policyVoStr); + String configJson = JSONObject.toJSONString(policyTypeVo); + for (String clientId : clientIdArr) { + try { + DeviceMessage message = new DeviceMessage(); + message.setClientId(clientId); + message.setData(configJson); + message.setDataType(MsgEnum.获取最新策略应答.getValue()); + + messageProducer.sendAsyncProducerMessage( + producerMode.getAgentTopic(), + "", + "", + JSONObject.toJSONString(message) + ); + } catch (Exception e) { + log.error("发送设备配置失败,deviceId: {}", clientId, e); + } + } + } } diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmFileInfoServiceImpl.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmFileInfoServiceImpl.java new file mode 100644 index 0000000..e0da6b7 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmFileInfoServiceImpl.java @@ -0,0 +1,96 @@ +package com.ruoyi.rocketmq.service.impl; + +import java.util.List; +import com.ruoyi.common.core.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.ruoyi.rocketmq.mapper.RmFileInfoMapper; +import com.ruoyi.rocketmq.domain.RmFileInfo; +import com.ruoyi.rocketmq.service.IRmFileInfoService; + +/** + * 文件信息Service业务层处理 + * + * @author gyt + * @date 2025-09-15 + */ +@Service +public class RmFileInfoServiceImpl implements IRmFileInfoService +{ + @Autowired + private RmFileInfoMapper rmFileInfoMapper; + + /** + * 查询文件信息 + * + * @param id 文件信息主键 + * @return 文件信息 + */ + @Override + public RmFileInfo selectRmFileInfoById(Long id) + { + return rmFileInfoMapper.selectRmFileInfoById(id); + } + + /** + * 查询文件信息列表 + * + * @param rmFileInfo 文件信息 + * @return 文件信息 + */ + @Override + public List selectRmFileInfoList(RmFileInfo rmFileInfo) + { + return rmFileInfoMapper.selectRmFileInfoList(rmFileInfo); + } + + /** + * 新增文件信息 + * + * @param rmFileInfo 文件信息 + * @return 结果 + */ + @Override + public int insertRmFileInfo(RmFileInfo rmFileInfo) + { + rmFileInfo.setCreateTime(DateUtils.getNowDate()); + return rmFileInfoMapper.insertRmFileInfo(rmFileInfo); + } + + /** + * 修改文件信息 + * + * @param rmFileInfo 文件信息 + * @return 结果 + */ + @Override + public int updateRmFileInfo(RmFileInfo rmFileInfo) + { + rmFileInfo.setUpdateTime(DateUtils.getNowDate()); + return rmFileInfoMapper.updateRmFileInfo(rmFileInfo); + } + + /** + * 批量删除文件信息 + * + * @param ids 需要删除的文件信息主键 + * @return 结果 + */ + @Override + public int deleteRmFileInfoByIds(Long[] ids) + { + return rmFileInfoMapper.deleteRmFileInfoByIds(ids); + } + + /** + * 删除文件信息信息 + * + * @param id 文件信息主键 + * @return 结果 + */ + @Override + public int deleteRmFileInfoById(Long id) + { + return rmFileInfoMapper.deleteRmFileInfoById(id); + } +} 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 483bb14..9000c02 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 @@ -6,10 +6,7 @@ import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.rocketmq.domain.*; -import com.ruoyi.rocketmq.domain.vo.CollectVo; -import com.ruoyi.rocketmq.domain.vo.RegisterSwitchVo; -import com.ruoyi.rocketmq.domain.vo.RmMonitorPolicyVo; -import com.ruoyi.rocketmq.domain.vo.SwitchOidVo; +import com.ruoyi.rocketmq.domain.vo.*; import com.ruoyi.rocketmq.mapper.*; import com.ruoyi.rocketmq.model.ProducerMode; import com.ruoyi.rocketmq.producer.MessageProducer; @@ -500,12 +497,12 @@ public class RmMonitorPolicyServiceImpl implements IRmMonitorPolicyService } } /** - * 根据clientId得到监控策略信息 + * 根据clientId下发监控策略信息 * @param clientId * @return */ @Override - public List getPolicyMsgByClientId(String clientId) { + public int issuePolicyMsgByClientId(String clientId) { try { // 根据clientId查询未下发的策略信息 RmMonitorPolicy queryParam = new RmMonitorPolicy(); @@ -515,8 +512,8 @@ public class RmMonitorPolicyServiceImpl implements IRmMonitorPolicyService queryParam.setResourceType("linux"); RmMonitorPolicy policy = rmMonitorPolicyMapper.selectRmMonitorPolicyByClientId(queryParam); if (policy == null) { - log.error("无待下发策略,clientId: {}", clientId); - return null; + log.warn("无待下发策略,clientId: {}", clientId); + return 0; } // 构建并发送采集配置 @@ -524,10 +521,47 @@ public class RmMonitorPolicyServiceImpl implements IRmMonitorPolicyService List collectVos = buildCollectConfigurations(policyDetails); // 去重 List uniqueList = collectVos.stream().distinct().collect(Collectors.toList()); - return collectVos; + String[] clientIdArr = policy.getDeployDevice().split("\n"); + sendMonitorPolicy(clientIdArr, uniqueList); + // 更新策略状态为已下发 + RmMonitorPolicy policyUpdate = new RmMonitorPolicy(); + policyUpdate.setId(policy.getId()); + policyUpdate.setStatus("1"); + rmMonitorPolicyMapper.updateRmMonitorPolicy(policyUpdate); + return 1; } catch (Exception e) { log.error("下发策略失败,clientId: {}", clientId, e); - return null; + return 0; + } + } + /** + * 发送监控策略到设备 + */ + private void sendMonitorPolicy(String[] clientIdArr, List collectVos) { + MessageProducer messageProducer = new MessageProducer(); + + PolicyVo policyVo = new PolicyVo(); + policyVo.setContents(collectVos); + String policyVoStr = JSONObject.toJSONString(policyVo); + PolicyTypeVo policyTypeVo = new PolicyTypeVo(); + policyTypeVo.setMonitors(policyVoStr); + String configJson = JSONObject.toJSONString(policyTypeVo); + for (String clientId : clientIdArr) { + try { + DeviceMessage message = new DeviceMessage(); + message.setClientId(clientId); + message.setData(configJson); + message.setDataType(MsgEnum.获取最新策略应答.getValue()); + + messageProducer.sendAsyncProducerMessage( + producerMode.getAgentTopic(), + "", + "", + JSONObject.toJSONString(message) + ); + } catch (Exception e) { + log.error("发送设备配置失败,clientId: {}", clientId, e); + } } } private SwitchOidVo buildOids(Map policyDetails) { diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmNetworkInterfaceServiceImpl.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmNetworkInterfaceServiceImpl.java index 9bb610a..d75d0b6 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmNetworkInterfaceServiceImpl.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmNetworkInterfaceServiceImpl.java @@ -100,4 +100,14 @@ public class RmNetworkInterfaceServiceImpl implements IRmNetworkInterfaceService { return rmNetworkInterfaceMapper.deleteRmNetworkInterfaceById(id); } + + /** + * 绑定公网ip + * @param rmNetworkInterface + * @return + */ + @Override + public int bindPublicIp(RmNetworkInterface rmNetworkInterface) { + return rmNetworkInterfaceMapper.updateRmNetworkInterface(rmNetworkInterface); + } } diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmPolicyDeviceDetailsServiceImpl.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmPolicyDeviceDetailsServiceImpl.java new file mode 100644 index 0000000..eac0674 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmPolicyDeviceDetailsServiceImpl.java @@ -0,0 +1,96 @@ +package com.ruoyi.rocketmq.service.impl; + +import java.util.List; +import com.ruoyi.common.core.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.ruoyi.rocketmq.mapper.RmPolicyDeviceDetailsMapper; +import com.ruoyi.rocketmq.domain.RmPolicyDeviceDetails; +import com.ruoyi.rocketmq.service.IRmPolicyDeviceDetailsService; + +/** + * 客户端策略关联Service业务层处理 + * + * @author gyt + * @date 2025-10-22 + */ +@Service +public class RmPolicyDeviceDetailsServiceImpl implements IRmPolicyDeviceDetailsService +{ + @Autowired + private RmPolicyDeviceDetailsMapper rmPolicyDeviceDetailsMapper; + + /** + * 查询客户端策略关联 + * + * @param id 客户端策略关联主键 + * @return 客户端策略关联 + */ + @Override + public RmPolicyDeviceDetails selectRmPolicyDeviceDetailsById(Long id) + { + return rmPolicyDeviceDetailsMapper.selectRmPolicyDeviceDetailsById(id); + } + + /** + * 查询客户端策略关联列表 + * + * @param rmPolicyDeviceDetails 客户端策略关联 + * @return 客户端策略关联 + */ + @Override + public List selectRmPolicyDeviceDetailsList(RmPolicyDeviceDetails rmPolicyDeviceDetails) + { + return rmPolicyDeviceDetailsMapper.selectRmPolicyDeviceDetailsList(rmPolicyDeviceDetails); + } + + /** + * 新增客户端策略关联 + * + * @param rmPolicyDeviceDetails 客户端策略关联 + * @return 结果 + */ + @Override + public int insertRmPolicyDeviceDetails(RmPolicyDeviceDetails rmPolicyDeviceDetails) + { + rmPolicyDeviceDetails.setCreateTime(DateUtils.getNowDate()); + return rmPolicyDeviceDetailsMapper.insertRmPolicyDeviceDetails(rmPolicyDeviceDetails); + } + + /** + * 修改客户端策略关联 + * + * @param rmPolicyDeviceDetails 客户端策略关联 + * @return 结果 + */ + @Override + public int updateRmPolicyDeviceDetails(RmPolicyDeviceDetails rmPolicyDeviceDetails) + { + rmPolicyDeviceDetails.setUpdateTime(DateUtils.getNowDate()); + return rmPolicyDeviceDetailsMapper.updateRmPolicyDeviceDetails(rmPolicyDeviceDetails); + } + + /** + * 批量删除客户端策略关联 + * + * @param ids 需要删除的客户端策略关联主键 + * @return 结果 + */ + @Override + public int deleteRmPolicyDeviceDetailsByIds(Long[] ids) + { + return rmPolicyDeviceDetailsMapper.deleteRmPolicyDeviceDetailsByIds(ids); + } + + /** + * 删除客户端策略关联信息 + * + * @param id 客户端策略关联主键 + * @return 结果 + */ + @Override + public int deleteRmPolicyDeviceDetailsById(Long id) + { + return rmPolicyDeviceDetailsMapper.deleteRmPolicyDeviceDetailsById(id); + } +} 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 ad62882..2049f3c 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 @@ -43,7 +43,7 @@ public class DataProcessUtil { R> switchMsg = remoteRevenueConfigService .getSwitchNameByClientId(queryParam, SecurityConstants.INNER); - if (switchMsg != null && switchMsg.getData() != null) { + if (switchMsg != null && switchMsg.getData() != null && !switchMsg.getData().isEmpty()) { return switchMsg.getData().get(0).getClientId(); } } catch (Exception e) { @@ -253,7 +253,7 @@ public class DataProcessUtil { R> switchMsg = remoteRevenueConfigService .getSwitchNameByClientId(queryParam, SecurityConstants.INNER); - if (switchMsg != null && switchMsg.getData() != null) { + if (switchMsg != null && switchMsg.getData() != null && !switchMsg.getData().isEmpty()) { return switchMsg.getData().get(0); } } catch (Exception e) { diff --git a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmAgentManagementMapper.xml b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmAgentManagementMapper.xml index c4ba740..f12bf0e 100644 --- a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmAgentManagementMapper.xml +++ b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmAgentManagementMapper.xml @@ -22,10 +22,13 @@ + + + - select id, hardware_sn, resource_name, internal_ip, status, agent_version, method, scheduled_update_time, file_url_type, file_url, file_directory, last_update_result, last_update_time, create_time, update_time, create_by, update_by from rm_agent_management + select id, hardware_sn, resource_name, internal_ip, status, agent_version, method, scheduled_update_time, file_url_type, file_url, file_directory, last_update_result, last_update_time, create_time, update_time, create_by, update_by, file_md5, client_id, deploy_device from rm_agent_management @@ -71,6 +77,9 @@ update_time, create_by, update_by, + file_md5, + client_id, + deploy_device, #{hardwareSn}, @@ -89,6 +98,9 @@ #{updateTime}, #{createBy}, #{updateBy}, + #{fileMd5}, + #{clientId}, + #{deployDevice}, @@ -111,31 +123,12 @@ update_time = #{updateTime}, create_by = #{createBy}, update_by = #{updateBy}, + file_md5 = #{fileMd5}, + client_id = #{clientId}, + deploy_device = #{deployDevice}, where id = #{id} - - update rm_agent_management - - resource_name = #{resourceName}, - internal_ip = #{internalIp}, - status = #{status}, - agent_version = #{agentVersion}, - method = #{method}, - scheduled_update_time = #{scheduledUpdateTime}, - file_url_type = #{fileUrlType}, - file_url = #{fileUrl}, - file_directory = #{fileDirectory}, - last_update_result = #{lastUpdateResult}, - last_update_time = #{lastUpdateTime}, - create_time = #{createTime}, - update_time = #{updateTime}, - create_by = #{createBy}, - update_by = #{updateBy}, - - where hardware_sn = #{hardwareSn} - - delete from rm_agent_management where id = #{id} diff --git a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmDeploymentPolicyMapper.xml b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmDeploymentPolicyMapper.xml index 125c573..ef2fca5 100644 --- a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmDeploymentPolicyMapper.xml +++ b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmDeploymentPolicyMapper.xml @@ -23,10 +23,17 @@ + + + + - select id, policy_name, description, resource_group_id, included_devices_id, source_file_path_type, source_file_path, target_directory, command_content, execution_method, scheduled_time, policy_status, deploy_time, script_type, create_time, update_time, create_by, update_by from rm_deployment_policy + select id, policy_name, description, resource_group_id, included_devices_id, source_file_path_type, + source_file_path, target_directory, command_content, execution_method, scheduled_time, policy_status, + deploy_time, script_type, create_time, update_time, create_by, update_by, script_name, script_path, + default_params, deploy_device from rm_deployment_policy @@ -73,6 +83,10 @@ update_time, create_by, update_by, + script_name, + script_path, + default_params, + deploy_device, #{policyName}, @@ -92,6 +106,10 @@ #{updateTime}, #{createBy}, #{updateBy}, + #{scriptName}, + #{scriptPath}, + #{defaultParams}, + #{deployDevice}, @@ -116,6 +134,10 @@ update_time = #{updateTime}, create_by = #{createBy}, update_by = #{updateBy}, + script_name = #{scriptName}, + script_path = #{scriptPath}, + default_params = #{defaultParams}, + deploy_device = #{deployDevice}, where id = #{id} @@ -130,4 +152,13 @@ #{id} + \ No newline at end of file diff --git a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmFileInfoMapper.xml b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmFileInfoMapper.xml new file mode 100644 index 0000000..9919306 --- /dev/null +++ b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmFileInfoMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + select id, name, type, description, file_size, md5, path, create_time, update_time, create_by, update_by from rm_file_info + + + + + + + + insert into rm_file_info + + name, + type, + description, + file_size, + md5, + path, + create_time, + update_time, + create_by, + update_by, + + + #{name}, + #{type}, + #{description}, + #{fileSize}, + #{md5}, + #{path}, + #{createTime}, + #{updateTime}, + #{createBy}, + #{updateBy}, + + + + + update rm_file_info + + name = #{name}, + type = #{type}, + description = #{description}, + file_size = #{fileSize}, + md5 = #{md5}, + path = #{path}, + create_time = #{createTime}, + update_time = #{updateTime}, + create_by = #{createBy}, + update_by = #{updateBy}, + + where id = #{id} + + + + delete from rm_file_info where id = #{id} + + + + delete from rm_file_info where id in + + #{id} + + + \ No newline at end of file diff --git a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmPolicyDeviceDetailsMapper.xml b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmPolicyDeviceDetailsMapper.xml new file mode 100644 index 0000000..08543d0 --- /dev/null +++ b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmPolicyDeviceDetailsMapper.xml @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + select id, client_id, policy_id, script_id, version_id, policy_status, create_time, update_time, create_by, update_by from rm_policy_device_details + + + + + + + + insert into rm_policy_device_details + + client_id, + policy_id, + script_id, + version_id, + policy_status, + create_time, + update_time, + create_by, + update_by, + + + #{clientId}, + #{policyId}, + #{scriptId}, + #{versionId}, + #{policyStatus}, + #{createTime}, + #{updateTime}, + #{createBy}, + #{updateBy}, + + + + + update rm_policy_device_details + + policy_status = #{policyStatus}, + create_time = #{createTime}, + update_time = #{updateTime}, + create_by = #{createBy}, + update_by = #{updateBy}, + + where + + + id = #{id} + + + policy_id = #{policyId} and client_id = #{clientId} + + + 1=0 + + + + + + delete from rm_policy_device_details where id = #{id} + + + + delete from rm_policy_device_details where id in + + #{id} + + + \ No newline at end of file