/** * */ package com.ai.cloud.controller; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import com.ai.cloud.service.inter.IQueryTraceLogSer; import com.ai.cloud.service.inter.IUserSer; import com.ai.cloud.util.Constants; import com.ai.cloud.vo.mvo.MenuInfoMVO; import com.ai.cloud.vo.mvo.TraceLogEntry; import com.ai.cloud.vo.mvo.UserInfoMVO; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; /** * 首面请求处理 * * @author tz * @date 2015年11月10日 下午2:41:30 * @version V0.3 */ @Controller public class HelloSkyWalkingUICtl { @Autowired IQueryTraceLogSer traceLogSer; @Autowired IUserSer userSer; private static Logger logger = LogManager.getLogger(HelloSkyWalkingUICtl.class); /*** * 默认首页 * * @param root * @return * @throws Exception */ @RequestMapping(value = "") public String showDefaultIndexPage(ModelMap root) throws Exception { showIndexPage(root, null); return "index"; } /*** * 默认首页 * * @param root * @return * @throws Exception */ @RequestMapping(value = "/index") public String showIndexPage(ModelMap root) throws Exception { showIndexPage(root, null); return "index"; } /*** * 处理直接查看指定traceId首页 * * @param root * @return * @throws Exception */ @RequestMapping(value = "/{traceId}") public String showIndexPageWithTraceId(ModelMap root, @PathVariable("traceId") String traceId) throws Exception { showIndexPage(root, null); root.put("traceId", traceId); return "index"; } private void showIndexPage(ModelMap root, String nullStr) { root.put(Constants.VERSION_STR, Constants.VERSION_VAL); } /*** * 调度链路日志页面 * * @param root * @return * @throws Exception */ @RequestMapping(value = "/showTraceLog/{traceId}") public String showTraceLog(ModelMap root, @PathVariable("traceId") String traceId) throws Exception { // traceId = "bcb759bc12db474aa54bc4bea605cb81123"; Map traceLogMap = traceLogSer.queryLogByTraceId(traceId); if (traceLogMap != null && traceLogMap.size() > 0) { List valueList = new ArrayList(); valueList.addAll(traceLogMap.values()); final List endTime = new ArrayList(); endTime.add(0, 0l); Collections.sort(valueList, new Comparator() { @Override public int compare(TraceLogEntry arg0, TraceLogEntry arg1) { /** 顺道取出日志最大的结束时间 */ if (endTime.get(0) < arg0.getEndDate()) { endTime.set(0, arg0.getEndDate()); } if (endTime.get(0) < arg1.getEndDate()) { endTime.set(0, arg1.getEndDate()); } return arg0.getColId().compareTo(arg1.getColId()); } }); // int m = 1; // for (TraceLogEntry tmpEntry : valueList) { // logger.info("sort result level:{} : {}", m++, tmpEntry); // } long beginTime = valueList.get(0).getStartDate(); root.put("traceId", traceId); root.put("valueList", valueList); root.put("spanTypeMap", Constants.SPAN_TYPE_MAP); root.put("statusCodeMap", Constants.STATUS_CODE_MAP); root.put("beginTime", beginTime); root.put("endTime", endTime.get(0)); } return "traceLog"; } /*** * 登录页面 * * @param root * @return * @throws Exception */ @RequestMapping(value = "/login") public String loginPage(ModelMap root) throws Exception { return "login"; } /*** * 登录页面 * * @param root * @return * @throws Exception */ @RequestMapping(value = "/login/{userName}/{password}", method = RequestMethod.POST, produces="application/json; charset=UTF-8") @ResponseBody public String loginAction(HttpServletRequest request, ModelMap root, @PathVariable("userName") String userName, @PathVariable("password") String password) throws Exception { UserInfoMVO userInfo = new UserInfoMVO(); userInfo.setUserName(userName); userInfo.setPassword(password); UserInfoMVO reUserInfo = userSer.login(userInfo); JSONObject json = new JSONObject(); if(reUserInfo != null && password.equals(reUserInfo.getPassword())){ json.put("result", "OK"); json.put("msg", "登录成功"); HttpSession session = request.getSession(); session.setAttribute("isLogin", "1"); session.setAttribute("uid", reUserInfo.getUid()); session.setAttribute("userName", reUserInfo.getUserName()); JSONArray menuArr = new JSONArray(); List menuList = new ArrayList(); menuList.add(new MenuInfoMVO("1", "应用配置", "applist")); menuArr.addAll(menuList); session.setAttribute("menuList", menuArr.toJSONString()); }else{ json.put("result", "FAIL"); json.put("msg", "用户名或者密码错误"); } return json.toJSONString(); } /*** * 登录页面 * * @param root * @return * @throws Exception */ @RequestMapping(value = "/regist") public String registPage(ModelMap root) throws Exception { return "regist"; } /*** * 登录页面 * * @param root * @return * @throws Exception */ @RequestMapping(value = "/regist/{userName}/{password}", method = RequestMethod.POST, produces="application/json; charset=UTF-8") @ResponseBody public String registAction(HttpServletRequest request, ModelMap root, @PathVariable("userName") String userName, @PathVariable("password") String password) throws Exception { UserInfoMVO userInfo = new UserInfoMVO(); userInfo.setUserName(userName); userInfo.setPassword(password); userInfo.setRoleType(Constants.ROLE_TYPE_USER); userInfo.setSts(Constants.STR_VAL_A); JSONObject reUserInfo = userSer.regist(userInfo); return reUserInfo.toJSONString(); } /*** * 退出 * * @param root * @return * @throws Exception */ @RequestMapping(value = "/logout") @ResponseBody public String logout(HttpServletRequest request, ModelMap root) throws Exception { HttpSession session = request.getSession(); session.removeAttribute("isLogin"); session.removeAttribute("uid"); session.removeAttribute("userName"); session.removeAttribute("menuList"); JSONObject json = new JSONObject(); json.put(Constants.JSON_RESULT_KEY_RESULT, Constants.JSON_RESULT_KEY_RESULT_OK); json.put(Constants.JSON_RESULT_KEY_RESULT_MSG, "退出成功"); return json.toJSONString(); } /*** * 404错误日志 * * @param root * @return * @throws Exception */ @RequestMapping(value = "/404") public String show404Page(ModelMap root) throws Exception { return "404"; } /*** * 500错误日志 * * @param root * @return * @throws Exception */ @RequestMapping(value = "/500") public String show500Page(ModelMap root) throws Exception { return "500"; } }