package cn.minbb.job.controller.web; import cn.minbb.job.data.Const; import cn.minbb.job.model.Job; import cn.minbb.job.model.User; import cn.minbb.job.model.WebLog; import cn.minbb.job.service.JobService; import cn.minbb.job.service.WebLogService; import cn.minbb.job.system.UserSession; import cn.minbb.job.util.DateUtil; import com.alibaba.fastjson.JSON; import lombok.extern.log4j.Log4j2; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @Controller @Log4j2 @RequestMapping("/admin") public class AdminController { private final JobService jobService; private final WebLogService webLogService; public AdminController(JobService jobService, WebLogService webLogService) { this.jobService = jobService; this.webLogService = webLogService; } /** * 博客概况 */ @GetMapping(value = {"", "/overview"}) public ModelAndView overviewPage(ModelAndView modelAndView) { User user = UserSession.getUserAuthentication(); log.error(JSON.toJSONString(user)); Date now = new Date(); Map data = new HashMap<>(); data.put("countA", 25); data.put("countB", 12); data.put("countC", 8); data.put("countD", webLogService.countByDateBetween(DateUtil.getDateOnlyByDateTime(now), now)); List jobList = jobService.findTop8(); modelAndView.addObject("jobList", jobList); modelAndView.addObject(Const.Key.KEY_DATA, data); modelAndView.addObject(Const.Key.KEY_ACTIVE, Const.ViewName.VIEW_ADMIN_OVERVIEW); modelAndView.setViewName(Const.ViewName.VIEW_ADMIN_OVERVIEW); return modelAndView; } /** * 页面访问日志 */ @GetMapping(value = "/web/log") public ModelAndView webLogPage( @RequestParam(value = "startTime", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date startTime, @RequestParam(value = "endTime", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date endTime, @RequestParam(value = "method", required = false) String method, @RequestParam(value = "uri", required = false) String uri, @RequestParam(value = "ip", required = false) String ip, @RequestParam(value = "location", required = false) String location, @RequestParam(value = "remark", required = false) String remark, @RequestParam(value = "page", defaultValue = "1", required = false) Integer page, @RequestParam(value = "size", defaultValue = "12", required = false) Integer size, ModelAndView modelAndView ) { if (null == endTime) endTime = new Date(); if (null == startTime) startTime = DateUtil.addOrMinusDays(endTime, -1); List webLogList = webLogService.findAllByParamsIn(startTime, endTime, uri, method, null, null, ip, location, remark); modelAndView.addObject(Const.Key.KEY_DATASET, webLogList); modelAndView.addObject(Const.Key.KEY_DATA, method); modelAndView.addObject(Const.Key.KEY_ACTIVE, Const.ViewName.VIEW_ADMIN_WEB_LOG); modelAndView.setViewName(Const.ViewName.VIEW_ADMIN_WEB_LOG); return modelAndView; } }