| | |
| | | package com.se.system.controller; |
| | | |
| | | import com.se.common.core.utils.StringUtils; |
| | | import com.se.common.core.utils.ip.IpUtils; |
| | | import com.se.common.core.web.controller.BaseController; |
| | | import com.se.common.core.web.domain.AjaxResult; |
| | | import com.se.common.core.web.page.TableDataInfo; |
| | | import com.se.common.log.annotation.Log; |
| | | import com.se.common.log.enums.BusinessType; |
| | | import com.se.common.security.utils.SecurityUtils; |
| | | import com.se.system.api.domain.SysLogininfor; |
| | | import com.se.system.api.domain.SysOperLog; |
| | | import com.se.system.api.model.LoginUser; |
| | | import com.se.system.domain.SysMenu; |
| | | import com.se.system.service.IndexService; |
| | | import com.se.system.service.impl.SysMenuServiceImpl; |
| | | import com.se.system.service.inte.ISysLogininforService; |
| | | import com.se.system.service.inte.ISysOperLogService; |
| | | import org.omg.PortableInterceptor.SYSTEM_EXCEPTION; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @RestController |
| | | @RequestMapping("/index") |
| | | @SuppressWarnings("ALL") |
| | | public class IndexController { |
| | | public class IndexController extends BaseController { |
| | | @Resource |
| | | IndexService indexService; |
| | | |
| | | @Resource |
| | | SysMenuServiceImpl menuService; |
| | | |
| | | @Resource |
| | | ISysOperLogService operLogService; |
| | | |
| | | @Resource |
| | | ISysLogininforService logininforService; |
| | | |
| | | private SysMenu sysMenu = new SysMenu(); |
| | | |
| | | public IndexController() { |
| | | sysMenu.setMark("index"); |
| | | } |
| | | |
| | | // ①PV统计:PV(Page View):页面浏览量或点击量,即网站所有页面被访问的总次数。 |
| | | // 每打开或刷新一个页面,PV就会增加一次,多次打开或刷新同一页面则浏览量累计。 |
| | | // PV反映了网站用户访问的网页数量,是衡量网站流量的重要指标之一 |
| | | @Log(title = "PV统计", businessType = BusinessType.OTHER) |
| | | @GetMapping("/pvCount") |
| | | public Map<String, Object> pvCount(Integer day) { |
| | | if (null == day || day < 1) day = 15; |
| | | if (day > 365) day = 365; |
| | | |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("pvCount", indexService.pvCount(day)); |
| | | |
| | | return map; |
| | | } |
| | | |
| | | // ②访问数量:UV(Unique Visitor):独立访客数,指访问网站的独立用户数。一天内同一访客多次访问只计算一次。 |
| | | // 可以理解成访问某网站的电脑的数量。网站判断来访电脑的身份是通过来访电脑的cookies实现的。 |
| | | // 如果更换了IP后但不清除cookies,再访问相同网站,该网站的统计中UV数是不变的。 |
| | | @Log(title = "UV统计", businessType = BusinessType.OTHER) |
| | | @GetMapping("/uvCount") |
| | | public Map<String, Object> uvCount(Integer day) { |
| | | if (null == day || day < 1) day = 15; |
| | | if (day > 365) day = 365; |
| | | |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("uvCount", indexService.uvCount(day)); |
| | | |
| | | return map; |
| | | } |
| | | |
| | | // ③新增用户统计:一段时间内新注册的用户数量。目前定为一周内的新增用户数量。 |
| | | @Log(title = "新增用户统计", businessType = BusinessType.OTHER) |
| | | @GetMapping("/newUserCount") |
| | | public Map<String, Object> newUserCount(Integer day) { |
| | | if (null == day || day < 1) day = 15; |
| | | if (day > 365) day = 365; |
| | | |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("newUserCount", indexService.newUserCount(day)); |
| | | |
| | | return map; |
| | | } |
| | | |
| | | @Log(title = "数据统计", businessType = BusinessType.OTHER) |
| | | @GetMapping("/dataCount") |
| | | public Map<String, Object> dataCount(Integer day) { |
| | | if (null == day || day < 1) day = 15; |
| | | if (day > 365) day = 365; |
| | | |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("pvCount", indexService.pvCount(day)); |
| | | map.put("uvCount", indexService.uvCount(day)); |
| | | map.put("newUserCount", indexService.newUserCount(day)); |
| | | |
| | | return map; |
| | | } |
| | | |
| | | // ④用户登录信息:以一定形式展示新登录或退出登录的用户账户及时间。 |
| | | @Log(title = "用户登录信息", businessType = BusinessType.OTHER) |
| | | @GetMapping("/lastLogin") |
| | | public TableDataInfo lastLogin(SysLogininfor logininfor) { |
| | | startPage(); |
| | | List<SysLogininfor> list = logininforService.selectLogininforList(logininfor); |
| | | |
| | | return getDataTable(list); |
| | | } |
| | | |
| | | // ⑤用户统计排行(活跃用户):以一定时间段内的登录时间或登录次数排名,展示前五名的用户信息 |
| | | @Log(title = "用户统计排行", businessType = BusinessType.OTHER) |
| | | @GetMapping("/userCountList") |
| | | public List<Map<String, Object>> userCountList(Integer day, Integer amount) { |
| | | if (null == day || day < 1) day = 15; |
| | | if (day > 365) day = 365; |
| | | if (null == amount) amount = 5; |
| | | if (amount > 100) amount = 100; |
| | | |
| | | return indexService.userCountList(day, amount); |
| | | } |
| | | |
| | | // ⑥常用系统展示/各系统访问信息:基于用户访问次数排名,展示前五个系统的排名 |
| | | // 并展示各个系统一天内、三天内、一周内的访问次数。【可考虑按其他指标进行排名展示】 |
| | | @Log(title = "常用系统展示", businessType = BusinessType.OTHER) |
| | | @GetMapping("/sysVisitList") |
| | | public List<Map<String, Object>> sysVisitList(Integer day, Integer amount) { |
| | | if (null == day || day < 1) day = 15; |
| | | if (day > 365) day = 365; |
| | | if (null == amount) amount = 5; |
| | | if (amount > 100) amount = 100; |
| | | |
| | | return indexService.sysVisitList(day, amount); |
| | | } |
| | | |
| | | @Log(title = "运维监控", businessType = BusinessType.OTHER) |
| | | @GetMapping("/monitor") |
| | | public Map<String, Object> monitor() { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("cpu", "50%"); |
| | | map.put("mem", "65%"); |
| | | map.put("ratio", "40%"); |
| | | |
| | | return map; |
| | | } |
| | | |
| | | @GetMapping("/userList") |
| | | public Map<String, Object> userList() { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | @GetMapping("/getAllPerms") |
| | | public AjaxResult getAllPerms() { |
| | | try { |
| | | List<SysMenu> menus = menuService.selectMenuList(sysMenu, 1L); |
| | | |
| | | return map; |
| | | return success(menuService.buildMenus(menus)); |
| | | } catch (Exception ex) { |
| | | logger.error(ex.getMessage(), ex); |
| | | return error(ex.getMessage()); |
| | | } |
| | | } |
| | | |
| | | @GetMapping("/uvCount") |
| | | public Map<String, Object> uvCount() { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | @GetMapping("/getMyPerms") |
| | | public AjaxResult getMyPerms() { |
| | | try { |
| | | Long userId = SecurityUtils.getUserId(); |
| | | List<SysMenu> menus = menuService.selectMenuList(sysMenu, userId); |
| | | |
| | | return map; |
| | | return success(menuService.buildMenus(menus)); |
| | | } catch (Exception ex) { |
| | | logger.error(ex.getMessage(), ex); |
| | | return error(ex.getMessage()); |
| | | } |
| | | } |
| | | |
| | | @GetMapping("/pvCount") |
| | | public Map<String, Object> pvCount() { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | @GetMapping("/addAccessLog") |
| | | public AjaxResult addAccessLog(String title, Integer status) { |
| | | long start = System.currentTimeMillis(); |
| | | if (null == status || status < 0) status = 0; |
| | | |
| | | return map; |
| | | SysOperLog log = new SysOperLog(); |
| | | log.setTitle(title); |
| | | // 0=其它,1=新增,2=修改,3=删除,4=授权,5=导出,6=导入,7=强退,8=生成代码,9=清空数据,14=未授权 |
| | | log.setBusinessType(0); |
| | | // ServletUtils.getRequest().getMethod() |
| | | log.setMethod("com.se.system.controller.IndexController.addAccessLog()"); |
| | | log.setRequestMethod("GET"); |
| | | log.setOperatorType(1); |
| | | |
| | | LoginUser loginUser = SecurityUtils.getLoginUser(); |
| | | if (null != loginUser) { |
| | | log.setOperName(loginUser.getUsername()); |
| | | log.setDeptName(loginUser.getSysUser().getDept().getDeptName()); |
| | | } |
| | | // StringUtils.substring(ServletUtils.getRequest().getRequestURI(), 0, 255) |
| | | log.setOperUrl("/index/addAccessLog"); |
| | | log.setOperIp(IpUtils.getIpAddr()); |
| | | log.setOperParam("{\"title\":\"" + title + "\"}"); |
| | | |
| | | log.setJsonResult(String.format("{\"msg\":\"%s\",\"code\":%d}", 0 == status ? "成功" : "失败", 0 == status ? 200 : 400)); |
| | | log.setStatus(status); |
| | | log.setOperTime(new Date()); |
| | | log.setCostTime(System.currentTimeMillis() - start + 10); |
| | | |
| | | int rows = operLogService.insertOperlog(log); |
| | | |
| | | return toAjax(rows); |
| | | } |
| | | } |