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 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); } }