package com.sohu.cache.web.controller; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.math.NumberUtils; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.sohu.cache.constant.ErrorMessageEnum; import com.sohu.cache.entity.AppUser; import com.sohu.cache.entity.InstanceAlert; import com.sohu.cache.stats.instance.InstanceAlertValueService; import com.sohu.cache.web.enums.SuccessEnum; import com.sohu.cache.web.util.AppEmailUtil; /** * 实例报警阀值 * @author leifu * @Date 2016年8月24日 * @Time 下午1:24:25 */ @Controller @RequestMapping("manage/instanceAlert") public class InstanceAlertValueController extends BaseController { @Resource(name = "instanceAlertValueService") private InstanceAlertValueService instanceAlertValueService; @Resource(name = "appEmailUtil") private AppEmailUtil appEmailUtil; /** * 初始化配置 */ @RequestMapping(value = "/init") public ModelAndView init(HttpServletRequest request, HttpServletResponse response, Model model) { model.addAttribute("instanceAlertList", instanceAlertValueService.getAllInstanceAlert()); model.addAttribute("success", request.getParameter("success")); model.addAttribute("instanceAlertValueActive", SuccessEnum.SUCCESS.value()); return new ModelAndView("manage/instanceAlert/init"); } /** * 初始化配置 */ @RequestMapping(value = "/monitor") public ModelAndView monitor(HttpServletRequest request, HttpServletResponse response, Model model) { instanceAlertValueService.monitorLastMinuteAllInstanceInfo(); return null; } /** * 修改配置 */ @RequestMapping(value = "/update") public ModelAndView update(HttpServletRequest request, HttpServletResponse response, Model model) { AppUser appUser = getUserInfo(request); String configKey = request.getParameter("configKey"); String alertValue = request.getParameter("alertValue"); int compareType = NumberUtils.toInt(request.getParameter("compareType")); int valueType = NumberUtils.toInt(request.getParameter("valueType")); String info = request.getParameter("info"); int status = NumberUtils.toInt(request.getParameter("status"), -1); if (StringUtils.isBlank(configKey) || status > 1 || status < 0) { model.addAttribute("status", SuccessEnum.FAIL.value()); model.addAttribute("message", ErrorMessageEnum.PARAM_ERROR_MSG.getMessage() + ",configKey=" + configKey + ",alertValue=" + alertValue + ",status=" + status); return new ModelAndView(""); } //开始修改 logger.warn("user {} want to change instance alert configKey={}, alertValue={}, info={}, status={}", appUser.getName(), configKey, alertValue, info, status); SuccessEnum successEnum; InstanceAlert instanceAlert = instanceAlertValueService.getByConfigKey(configKey); try { instanceAlert.setAlertValue(alertValue); instanceAlert.setValueType(valueType); instanceAlert.setInfo(info); instanceAlert.setStatus(status); instanceAlert.setCompareType(compareType); instanceAlertValueService.saveOrUpdate(instanceAlert); successEnum = SuccessEnum.SUCCESS; } catch (Exception e) { successEnum = SuccessEnum.FAIL; model.addAttribute("message", ErrorMessageEnum.INNER_ERROR_MSG.getMessage()); logger.error(e.getMessage(), e); } logger.warn("user {} want to change instance alert configKey={}, alertValue={}, info={}, status={}, result is {}", appUser.getName(), configKey, alertValue, info, status, successEnum.value()); model.addAttribute("status", successEnum.value()); return new ModelAndView(""); } /** * 删除配置 */ @RequestMapping(value = "/remove") public ModelAndView remove(HttpServletRequest request, HttpServletResponse response, Model model) { AppUser appUser = getUserInfo(request); String configKey = request.getParameter("configKey"); if (StringUtils.isBlank(configKey)) { model.addAttribute("status", SuccessEnum.FAIL.value()); model.addAttribute("message", ErrorMessageEnum.PARAM_ERROR_MSG.getMessage() + "configKey=" + configKey); return new ModelAndView(""); } logger.warn("user {} want to delete configKey {}", appUser.getName(), configKey); SuccessEnum successEnum; try { instanceAlertValueService.remove(configKey); successEnum = SuccessEnum.SUCCESS; } catch (Exception e) { successEnum = SuccessEnum.FAIL; model.addAttribute("message", ErrorMessageEnum.INNER_ERROR_MSG.getMessage()); logger.error(e.getMessage(), e); } logger.warn("user {} want to delete configKey {} , result is {}", appUser.getName(), configKey, successEnum.info()); model.addAttribute("status", successEnum.value()); return new ModelAndView(""); } /** * 添加配置 */ @RequestMapping(value = "/add") public ModelAndView add(HttpServletRequest request, HttpServletResponse response, Model model) { AppUser appUser = getUserInfo(request); InstanceAlert instanceAlert = getInstanceAlert(request); if (StringUtils.isBlank(instanceAlert.getConfigKey())) { model.addAttribute("status", SuccessEnum.FAIL.value()); model.addAttribute("message", ErrorMessageEnum.PARAM_ERROR_MSG.getMessage() + "configKey=" + instanceAlert.getConfigKey()); return new ModelAndView(""); } logger.warn("user {} want to add instance alert, configKey is {}, alertValue is {}, info is {}, orderId is {}", appUser.getName(), instanceAlert.getConfigKey(), instanceAlert.getAlertValue(), instanceAlert.getInfo(), instanceAlert.getOrderId()); SuccessEnum successEnum; try { instanceAlertValueService.saveOrUpdate(instanceAlert); successEnum = SuccessEnum.SUCCESS; } catch (Exception e) { successEnum = SuccessEnum.FAIL; model.addAttribute("message", ErrorMessageEnum.INNER_ERROR_MSG.getMessage()); logger.error(e.getMessage(), e); } logger.warn("user {} want to add instance alert, configKey is {}, alertValue is {}, info is {}, orderId is {}, result is {}", appUser.getName(), instanceAlert.getConfigKey(), instanceAlert.getAlertValue(), instanceAlert.getInfo(), instanceAlert.getOrderId(), successEnum.info()); model.addAttribute("status", successEnum.value()); return new ModelAndView(""); } /** * 使用最简单的request生成InstanceAlert对象 * * @return */ private InstanceAlert getInstanceAlert(HttpServletRequest request) { String configKey = request.getParameter("configKey"); String alertValue = request.getParameter("alertValue"); String info = request.getParameter("info"); int compareType = NumberUtils.toInt(request.getParameter("compareType")); int valueType = NumberUtils.toInt(request.getParameter("valueType")); int orderId = NumberUtils.toInt(request.getParameter("orderId")); InstanceAlert instanceAlert = new InstanceAlert(); instanceAlert.setConfigKey(configKey); instanceAlert.setAlertValue(alertValue); instanceAlert.setValueType(valueType); instanceAlert.setCompareType(compareType); instanceAlert.setInfo(info); instanceAlert.setOrderId(orderId); instanceAlert.setStatus(1); return instanceAlert; } }