服务器自动注册

This commit is contained in:
gaoyutao
2025-10-21 18:28:18 +08:00
parent 52728eba49
commit 4fdaadee65
25 changed files with 1373 additions and 9 deletions
@@ -10,6 +10,7 @@ import com.ruoyi.common.log.annotation.Log;
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.domain.RmResourceRegistration;
import com.ruoyi.system.service.IRmResourceRegistrationService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -165,5 +166,28 @@ public class RmResourceRegistrationController extends BaseController
List<RmResourceRegistration> list = rmResourceRegistrationService.selectRmResourceRegistrationList(rmResourceRegistration);
return R.ok(list.get(0));
}
/**
* 查询资源注册列表
*/
@RequiresPermissions("system:registration:list")
@PostMapping("/getRegistList")
public AjaxResult getRegistList(@RequestBody RmResourceRegistration rmResourceRegistration)
{
List<RmResourceRegistration> list = rmResourceRegistrationService.selectRmResourceRegistrationList(rmResourceRegistration);
return success(list);
}
/**
* 自动注册服务器
* @param rmResourceRegistration mq接收的消息
* @return
*/
@PostMapping("/innerAddRegist")
@InnerAuth
public R<Integer> innerAddRegist(@RequestBody RmRegisterMsgRemote rmResourceRegistration)
{
int rows = rmResourceRegistrationService.innerAddRegist(rmResourceRegistration);
return R.ok(rows);
}
}
@@ -0,0 +1,15 @@
package com.ruoyi.system.domain.vo;
import lombok.Data;
import java.time.Instant;
@Data
public class RspVo {
/** 状态码,0、失败;1、成功*/
private int resCode;
/** 描述 */
private String resMag;
/** 时间戳 */
private long timestamp = Instant.now().getEpochSecond();
}
@@ -2,6 +2,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.domain.RmResourceRegistration;
import java.util.List;
@@ -90,4 +91,11 @@ public interface IRmResourceRegistrationService
AjaxResult getServerOnlineRate();
List<RmResourceRegistration> getRegistrationByIds(String[] ids);
/**
* 自动注册
* @param rmResourceRegistration
* @return
*/
int innerAddRegist(RmRegisterMsgRemote rmResourceRegistration);
}
@@ -8,22 +8,27 @@ import com.ruoyi.common.core.utils.DateUtils;
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.RmRegisterMsgRemote;
import com.ruoyi.system.domain.EpsNodeBandwidth;
import com.ruoyi.system.domain.EpsServerRevenueConfig;
import com.ruoyi.system.domain.RmEpsTopologyManagement;
import com.ruoyi.system.domain.RmResourceRegistration;
import com.ruoyi.system.domain.vo.MessageVo;
import com.ruoyi.system.domain.vo.ResourceVo;
import com.ruoyi.system.domain.vo.RspVo;
import com.ruoyi.system.mapper.EpsNodeBandwidthMapper;
import com.ruoyi.system.mapper.EpsServerRevenueConfigMapper;
import com.ruoyi.system.mapper.RmEpsTopologyManagementMapper;
import com.ruoyi.system.mapper.RmResourceRegistrationMapper;
import com.ruoyi.system.service.IRmResourceRegistrationService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -35,6 +40,7 @@ import java.util.Map;
* @date 2025-08-12
*/
@Service
@Slf4j
public class RmResourceRegistrationServiceImpl implements IRmResourceRegistrationService
{
@Autowired
@@ -350,5 +356,76 @@ public class RmResourceRegistrationServiceImpl implements IRmResourceRegistratio
return rmResourceRegistrationMapper.getRegistrationByIds(ids);
}
/**
* 自动注册
* @param registerMsg
* @return
*/
@Override
public int innerAddRegist(RmRegisterMsgRemote registerMsg) {
// 解析mq接收的消息
// 时间戳转换
long timestamp = registerMsg.getTimestamp();
long millis = timestamp * 1000;
Date createTime = new Date(millis / 1000 * 1000); // 去除毫秒
String timeStr = DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", createTime);
List<NetworkInfo> networkInfoList = registerMsg.getNetworkInfo();
if(!networkInfoList.isEmpty()){
// 查询此数据是否存在
RmResourceRegistration queryParam = new RmResourceRegistration();
queryParam.setClientId(registerMsg.getClientId());
RmResourceRegistration exits = rmResourceRegistrationMapper.selectRegistMsgByClientId(queryParam);
if(exits == null){
// 构建服务器信息
RmResourceRegistration insertData = new RmResourceRegistration();
try {
// 如果网卡信息只有1条,自动绑定多公网IP
if(networkInfoList.size()==1){
insertData.setClientId(registerMsg.getClientId());
insertData.setHardwareSn(registerMsg.getSn());
insertData.setRegistrationStatus("1");
insertData.setMultiPublicIpStatus("1");
insertData.setResourceType("1");
insertData.setCreateTime(createTime);
rmResourceRegistrationMapper.insertRmResourceRegistration(insertData);
}else{
insertData.setClientId(registerMsg.getClientId());
insertData.setHardwareSn(registerMsg.getSn());
insertData.setRegistrationStatus("0");
insertData.setMultiPublicIpStatus("0");
insertData.setResourceType("1");
insertData.setCreateTime(createTime);
rmResourceRegistrationMapper.insertRmResourceRegistration(insertData);
}
// 构建注册应答信息
MessageVo messageVo = new MessageVo();
messageVo.setClientId(registerMsg.getClientId());
messageVo.setDataType(MsgEnum.注册应答.getValue());
RspVo rspVo = new RspVo();
rspVo.setResCode(1);
rspVo.setResMag("注册成功");
messageVo.setData(JSONObject.toJSONString(rspVo));
remoteRocketMqService.sendAsyncProducerMessage(
"tr_agent_down", "", "", JSONObject.toJSONString(messageVo), SecurityConstants.INNER
);
}catch (Exception e){
log.error("注册服务器失败:{}",e.getMessage());
// 构建注册应答信息
MessageVo messageVo = new MessageVo();
messageVo.setClientId(registerMsg.getClientId());
messageVo.setDataType(MsgEnum.注册应答.getValue());
RspVo rspVo = new RspVo();
rspVo.setResCode(1);
rspVo.setResMag("平台错误信息:" + e.getMessage());
messageVo.setData(JSONObject.toJSONString(rspVo));
remoteRocketMqService.sendAsyncProducerMessage(
"tr_agent_down", "", "", JSONObject.toJSONString(messageVo), SecurityConstants.INNER
);
}
}
}
return 1;
}
}
@@ -331,6 +331,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="updaterName != null">updater_name = #{updaterName},</if>
</trim>
where hardware_sn = #{hardwareSn}
<choose>
<when test="hardwareSn != null">
hardware_sn = #{hardwareSn}
</when>
<when test="clientId != null">
client_id = #{clientId}
</when>
<otherwise>
1=0 <!-- 如果两个条件都不满足,则不更新任何记录 -->
</otherwise>
</choose>
</update>
<select id="getRegistrationByIds" parameterType="String" resultMap="RmResourceRegistrationResult">
<include refid="selectRmResourceRegistrationVo"/>