13693261870
2024-12-30 edc9a6674eb9b40e33a74c5f022d279712ed3b7c
se-modules/se-system/src/main/java/com/se/system/controller/IndexController.java
@@ -1,18 +1,22 @@
package com.se.system.controller;
import com.alibaba.fastjson2.JSON;
import com.se.common.core.utils.ServletUtils;
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.springframework.http.HttpMethod;
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;
@@ -20,6 +24,7 @@
import javax.annotation.Resource;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@@ -27,44 +32,159 @@
@SuppressWarnings("ALL")
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<>();
        return map;
    }
    //@Log(title = "角色管理", businessType = BusinessType.INSERT)
    @GetMapping("/addAccessLog")
    public AjaxResult addAccessLog(String title) {
    public AjaxResult addAccessLog(String title, Integer status) {
        long start = System.currentTimeMillis();
        if (null == status || status < 0) status = 0;
        SysOperLog log = new SysOperLog();
        log.setTitle(title);
        // 0=其它,1=新增,2=修改,3=删除,4=授权,5=导出,6=导入,7=强退,8=生成代码,9=清空数据
        // 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()");
@@ -80,15 +200,14 @@
        log.setOperUrl("/index/addAccessLog");
        log.setOperIp(IpUtils.getIpAddr());
        log.setOperParam("{\"title\":\"" + title + "\"}");
        log.setJsonResult("{\"msg\":\"操作成功\",\"code\":200}");
        log.setStatus(0);
        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);
        log.setCostTime(System.currentTimeMillis() - start + 10);
        int rows = operLogService.insertOperlog(log);
        return toAjax(rows);
    }
}