267 lines
7.2 KiB
Java
267 lines
7.2 KiB
Java
/**
|
|
*
|
|
*/
|
|
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<String, TraceLogEntry> traceLogMap = traceLogSer.queryLogByTraceId(traceId);
|
|
|
|
if (traceLogMap != null && traceLogMap.size() > 0) {
|
|
List<TraceLogEntry> valueList = new ArrayList<TraceLogEntry>();
|
|
valueList.addAll(traceLogMap.values());
|
|
final List<Long> endTime = new ArrayList<Long>();
|
|
endTime.add(0, 0l);
|
|
Collections.sort(valueList, new Comparator<TraceLogEntry>() {
|
|
@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<MenuInfoMVO> menuList = new ArrayList<MenuInfoMVO>();
|
|
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";
|
|
}
|
|
}
|