logo 范 · 拾光录
网址收集 关于作者 Github Gitee
杂文随笔4
Hexo博客:基础使用Hexo博客:Next主题Hexo博客:Next进阶使用Hexo博客:Next高级配置
前端编程3
前端基础知识16
UniApp15
Vue框架19
Java编程7
Java基础知识14
SpringBoot31
SpringMVC14
MyBatis8
SpringCloud15
RocketMQ1
MyCat1
数据库4
MySQL6
Redis7
MongoDB10
H21
Java技术栈4
知识整理分布式锁的实现方案MySQL事务MySQL的锁
软件工具箱14
IDEAGitMavenGradleNginx安装Nginx配置JMeter压测OllamaPicGoRustFSVSCodeDockerObsidianObs录制
Linux知识11
树莓派安装及使用ArchLinux:常用软件ArchLinux:基础系统安装ArchLinux:深度优化ArchLInux:图形化界面安装ArchLinux:Nirifrp内网穿透Jar启动脚本Linux常用命令VirtualBox安装CentOSVirtualBox安装Ubuntu
Python编程6
Python基础知识Python语法yolo目标检测OpenCV的使用及树莓派平台condauv
创意设计2
Blender:入门知识UI设计基础知识
AI相关9
Claude CodeHermes AgentOpenAI基本使用OpenAI工具调用OpenAI记忆管理OpenAI推理执行OpenAI开发框架Langchainllama.cpp

日活跃统计(过滤、去重)

// 日活跃统计
@Override
public List<UserActiveCountRespVo> userActiveCount() {
    // 查询日活天数
    int day = 15;
    Date date = new Date();
    // 查询近期的活跃数据(全部)
    QueryWrapper<UserActive> wrapper = new QueryWrapper<>();
    wrapper.lambda().gt(UserActive::getCreateTime, DateUtil.offsetDay(date, -day));
    List<UserActive> userActiveList = userActiveMapper.selectList(wrapper);
    // 最后的结果数据
    List<UserActiveCountRespVo> list = new ArrayList<>();
    // 遍历处理日期
    SimpleDateFormat simpleDate = new SimpleDateFormat("yyyy-MM-dd");
    for (int i = 0; i < day; i++) {
        // 处理的日期
        DateTime dateTime = DateUtil.offsetDay(date, -day + i + 1);
        // 日期格式化
        String format = simpleDate.format(dateTime);
        // 过滤数据
        // 起始时间
        DateTime beginOfDay = DateUtil.beginOfDay(dateTime);
        // 结束时间
        DateTime endOfDay = DateUtil.endOfDay(dateTime);
        // 过滤数据
        List<UserActive> filterList = userActiveList.stream().filter(
                c -> c.getCreateTime().after(beginOfDay) && c.getCreateTime().before(endOfDay)
        ).collect(Collectors.toList());
        // 去重
        ArrayList<UserActive> collect = filterList.stream().collect(
                Collectors.collectingAndThen(
                        Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(UserActive::getUserId))),
                        ArrayList::new
                )
        );
        UserActiveCountRespVo vo = new UserActiveCountRespVo();
        vo.setData(format);
        vo.setCount((long) collect.size());
        list.add(vo);
    }
    return list;
}
日活跃统计(过滤、去重)