package com.terra.proxy.controller; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONObject; import com.terra.proxy.bean.BlackRule; import com.terra.proxy.bean.VistorBean; import com.terra.proxy.service.Impl.LogServiceImpl; import com.terra.proxy.util.Result; 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.*; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.*; @Controller @RequestMapping("/log") @CrossOrigin public class LoggerController { private Logger log = LoggerFactory.getLogger(LoggerController.class); /** * 查询每日访问日志统计图 * * @param 时间,为空取今日 */ @Autowired LogServiceImpl logservice; @RequestMapping(value = "/getDailyEchart", method = RequestMethod.GET) @ResponseBody public String getDailyEchart(HttpServletRequest request, String starttime, String endtime) { Map param = new HashMap<>(); Map result = new HashMap<>(); param.put("starttime", starttime); param.put("endtime", endtime); List list = logservice.getTotalCountPerHour(param); List resultlist = new ArrayList<>(); List infolist = logservice.getVisitInfoPerHourByip(param); JSONObject json = new JSONObject(); for (Map map : infolist) { Map tempmap = new HashMap<>(); tempmap.put(map.get("requestip").toString(), map.get("count").toString()); if (result.containsKey(map.get("caltime").toString())) { List tlist = (List) result.get(map.get("caltime").toString()); tlist.add(tempmap); } else { List templist = new ArrayList(); templist.add(tempmap); result.put(map.get("caltime").toString(), templist); } } for (Map map : list) { Map tmap = new HashMap<>(); tmap.put("name", map.get("caltime").toString()); Object[] obj = new Object[3]; obj[0] = map.get("caltime").toString(); obj[1] = map.get("sum").toString(); tmap.put("value", obj); if (result.containsKey(map.get("caltime").toString())) { tmap.put("info", result.get(map.get("caltime").toString())); } resultlist.add(tmap); } return JSONUtil.toJsonStr(resultlist); } @RequestMapping(value = "/querylog", method = RequestMethod.GET) @ResponseBody public String querylog(HttpServletRequest request, HttpServletResponse httpresponse, String ip, Integer id, String result, Date starttime, Date endtime, String servername, Integer resourceid, String fromsys, Integer page, Integer limit) { Map params = new HashMap<>(); Map resultmap = new HashMap<>(); params.put("ip", ip); params.put("id", id); params.put("result", result); params.put("servername", servername); params.put("resourceid", resourceid); params.put("fromsys", fromsys); params.put("starttime", starttime); params.put("endtime", endtime); params.put("offSet", (page - 1) * limit); params.put("limit", limit); List list = logservice.querylog(params); int total = logservice.queryTotalLog(params); resultmap.put("data", list); resultmap.put("total", total); return JSONUtil.toJsonStr(resultmap); } @RequestMapping(value = "/error", method = RequestMethod.GET) @ResponseBody public ModelAndView error(String result) { ModelAndView mv = new ModelAndView(); JSONObject json = JSONObject.parseObject(result); mv.addObject("message", json.get("msg")); mv.addObject("status", json.get("code")); mv.setViewName("error"); return mv; } @RequestMapping(value = "/queryBlackLists") @ResponseBody public Result queryBlackLists(Integer limit, Integer page, String ip, String status) { int total = 0; HashMap param = new HashMap<>(); param.put("limit", limit); param.put("page", (page - 1) * limit); param.put("ip", ip == "" ? null : ip); param.put("status", status == "" ? null : status); List data = logservice.queryBlackLists(param); total = logservice.getTotalBlackList(param); return Result.ok().put("data", data).put("total", total).put("totalpage", Math.ceil((double) total / (double) limit)); } @RequestMapping(value = "/delBlack") @ResponseBody public Result delBlackById(VistorBean vistorBean) { logservice.delBlackById(vistorBean); return Result.ok(); } @RequestMapping(value = "/updateBlackRule") @ResponseBody public Result updateBlackRule(@RequestBody BlackRule blackRule) { logservice.updateRules(blackRule); return Result.ok(); } @RequestMapping(value = "/selectBalckRule") @ResponseBody public Result selectBalckRule() { BlackRule blackRule = logservice.selectBlackRule(); return Result.ok().put("data", blackRule); } @RequestMapping(value = "/selectWhiteList") @ResponseBody public Result selectWhiteList(Integer limit, Integer page, String ip, String status) { int total = 0; page = page == null ? 0 : page; HashMap param = new HashMap<>(); param.put("limit", limit); param.put("page", (page - 1) * limit); param.put("ip", ip == "" ? null : ip); param.put("status", status == "" ? null : status); List data = logservice.selectWhiteList(param); total = logservice.getTotalWhiteList(param); return Result.ok().put("data", data).put("total", total).put("totalpage", Math.ceil((double) total / (double) limit)); } @RequestMapping(value = "/updateWhite") @ResponseBody public Result updateWhite(VistorBean vistorBean) { //先移除黑名单 status 1,2 logservice.delBlackById(vistorBean); //再加入白名单 status 3,4 logservice.updateWhite(vistorBean); return Result.ok(); } }