package com.wgcloud.controller;
|
|
import cn.hutool.json.JSONArray;
|
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONUtil;
|
import com.wgcloud.config.CommonConfig;
|
import com.wgcloud.entity.DceInfo;
|
import com.wgcloud.entity.DceState;
|
import com.wgcloud.service.DceInfoService;
|
import com.wgcloud.service.DceStateService;
|
import com.wgcloud.service.LogInfoService;
|
import com.wgcloud.util.ResDataUtils;
|
import com.wgcloud.util.TokenUtils;
|
import com.wgcloud.util.msg.WarnMailUtil;
|
import com.wgcloud.util.msg.WarnPools;
|
import com.wgcloud.util.staticvar.BatchData;
|
import com.wgcloud.util.staticvar.StaticKeys;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
import javax.annotation.Resource;
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* @version v3.3
|
* @ClassName:AgentDceInfoGoController.java
|
* @author: http://www.wgstart.com
|
* @date: 2022年9月16日
|
* @Description: server-backup监控数通PING数据提交处理,默认每15分钟提交一次
|
* @Copyright: 2019-2022 wgcloud. All rights reserved.
|
*/
|
@Controller
|
@RequestMapping("/agentDceInfoGo")
|
public class AgentDceInfoGoController {
|
|
|
private static final Logger logger = LoggerFactory.getLogger(AgentDceInfoGoController.class);
|
|
|
@Resource
|
private LogInfoService logInfoService;
|
@Autowired
|
private DceInfoService dceInfoService;
|
@Autowired
|
private DceStateService dceStateService;
|
@Autowired
|
private TokenUtils tokenUtils;
|
@Autowired
|
private CommonConfig commonConfig;
|
|
@ResponseBody
|
@RequestMapping("/minTask")
|
public String minTask(@RequestBody String paramBean) {
|
JSONObject agentJsonObject = (JSONObject) JSONUtil.parse(paramBean);
|
logger.debug("server-backup监控数通PING上报数据-------------" + agentJsonObject.toString());
|
JSONObject resultJson = new JSONObject();
|
if (!tokenUtils.checkAgentToken(agentJsonObject)) {
|
logger.error(StaticKeys.TOKEN_ERROR);
|
return ResDataUtils.resetErrorJson(StaticKeys.TOKEN_ERROR);
|
}
|
Date nowtime = new Date();
|
|
try {
|
//PING数据
|
JSONArray dceInfosJsonArr = agentJsonObject.getJSONArray("dceInfosUpdate");
|
if (dceInfosJsonArr == null) {
|
logger.error("dceInfosUpdate is null");
|
return ResDataUtils.resetErrorJson("dceInfosUpdate is null");
|
}
|
//处理数据源状态数据
|
List<DceInfo> dceInfoList = JSONUtil.toList(dceInfosJsonArr, DceInfo.class);
|
for (DceInfo dceInfo : dceInfoList) {
|
DceInfo dceInfoSaved = dceInfoService.selectById(dceInfo.getId());
|
dceInfo.setHostname(dceInfoSaved.getHostname());
|
dceInfo.setCreateTime(nowtime);
|
//设备下线后,不再更新时间 begin
|
if (dceInfo.getResTimes() < 0) {
|
dceInfo.setCreateTime(null);
|
}
|
//设备下线后,不再更新时间 end
|
try {
|
dceInfoService.updateById(dceInfo);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
if (dceInfo.getResTimes() > 0) {
|
DceState dceState = new DceState();
|
dceState.setResTimes(dceInfo.getResTimes());
|
dceState.setDceId(dceInfo.getId());
|
dceState.setCreateTime(nowtime);
|
BatchData.DCE_STATE_LIST.add(dceState);
|
}
|
dceInfoSaved.setResTimes(dceInfo.getResTimes());
|
if (dceInfo.getResTimes() < 0) {
|
//返回错误处理
|
WarnMailUtil.sendDceInfo(dceInfoSaved, true);
|
} else {
|
//返回成功处理
|
if (null != WarnPools.MEM_WARN_MAP.get(dceInfo.getId())) {
|
WarnMailUtil.sendDceInfo(dceInfoSaved, false);
|
}
|
}
|
}
|
|
} catch (Exception e) {
|
logger.error("解析server-backup监控数通PING上报数据错误", e);
|
return ResDataUtils.resetErrorJson(e.toString());
|
}
|
return ResDataUtils.resetSuccessJson(null);
|
}
|
|
|
}
|