这段if代码有没有bug,能不能优化下?

原创
2021/03/16 14:18
阅读数 387
集合说明:
allUsersList 为昨日用户表里所有用户id集合-(前天所有用户id+新增用户id)
yesterdayIdList 为昨天的昨天(前天)所有用户id集合
map 为前日活跃用户的id(key)及活跃天数days(value)
visitUserList 为昨日活跃过的用户id集合

规则:
先需要将昨日用户活跃情况保存到表
前日活跃-昨日活跃 则类型为1 活跃天数在昨日基础上加1
昨日未活跃 则类型为0 活跃天数为0
昨日新增用户 则类型为1 活跃天数为1


List<DataUserActiveDetail> batchRecords = new ArrayList<>(10);
        for (Long userId : allUsersList) {

            DataUserActiveDetail detail = new DataUserActiveDetail();
            detail.setUserId(userId);
            detail.setCreateDate(LocalDateTime.now());
            detail.setValueDate(DateUtils.getBeforeNDay(1));
            // 旧用户 昨天有用户id
            if(yesterdayIdList.contains(userId)){
                // 前天访问过
                if(map.containsKey(userId)){
                    if(visitUserList.contains(userId)){
                        // 昨天访问过
                        detail.setType(1);
                        detail.setDays(map.get(userId) + 1);
                    } else {
                        // 昨天没访问过
                        detail.setType(0);
                        detail.setDays(0);
                    }

                } else {
                    // 前天没有访问过,昨天访问过
                    if(visitUserList.contains(userId)){
                        // 昨天访问过
                        detail.setType(1);
                        detail.setDays(1);

                    } else {
                        // 昨天没访问过
                        detail.setType(0);
                        detail.setDays(0);
                    }
                }

            } else {
                // 新用户,肯定访问过
                // 前天列表没有用户id
                detail.setType(1);
                detail.setDays(1);
            }

            batchRecords.add(detail);

        }
展开阅读全文
加载中
点击加入讨论🔥(2) 发布并加入讨论🔥
2 评论
0 收藏
0
分享
返回顶部
顶部