美文网首页
记录用户登录记录

记录用户登录记录

作者: 有度YouDo | 来源:发表于2023-01-03 19:25 被阅读0次
   public void saveActiveUsersInPlatform(Long uid, String os, String version, String ip) {
    if(uid == null || uid == 0)return;
    UsersDTO usersDTO = usersManager.getUser(uid);
    if (usersDTO == null) {
        return;
    }
    //在线记录 user_online_record,
    //通过用户在线状态,进而更新用户连续每天在线情况
    Date date = new Date();
    String today = DateFormatUtils.YYYY_MM_DD.date2Str(date);
    //昨天
    Date day = DateTimeUtils.addDay(date, -1);
    String yesterday = DateFormatUtils.YYYY_MM_DD.date2Str(day);
    Date seven = DateTimeUtils.addDay(date, -7);
    String sevenDay = DateFormatUtils.YYYY_MM_DD.date2Str(seven);

    String todayCacheKey = CacheKey.getCacheKey(CacheKey.USER_DAY_ONLINE_RECORD, today);
    String uidStr = uid.toString();
    //今天登录记录
    String onlineFlag = redisManager.hget(todayCacheKey, uidStr);
    //记录用户在线记录
    redisManager.hset(todayCacheKey, uidStr, "1");
    //7天前登录记录
    String sevenDayLogin = redisManager.hget(CacheKey.getCacheKey(CacheKey.USER_DAY_ONLINE_RECORD, sevenDay), uidStr);
    //昨天前登录记录
    String yesterdayLogin = redisManager.hget(CacheKey.getCacheKey(CacheKey.USER_DAY_ONLINE_RECORD, yesterday), uidStr);

    if (StringUtils.isNotEmpty(onlineFlag)) {
        NewUserListenCountDto countDto = listenCountDao.selectByUid(uid);
        if (countDto != null) {
            if(org.apache.commons.lang.StringUtils.isEmpty(yesterdayLogin)) {
                //更新用户为非连续登录
                listenCountDao.updateContinueFlagByUid(uid);
            } else {
                //在线天数加1
                listenCountDao.updateOnLineDayByUid(uid);
            }
        }
    } else{
        //今天没有在线记录
        UserOnlineRecordDto recordDto = new UserOnlineRecordDto();
        recordDto.setUid(uid);
        recordDto.setNewFlag(1);
        //7天前登录过 表示老用户
        if(StringUtils.isNotEmpty(sevenDayLogin)){
            recordDto.setNewFlag(2);
        }
        recordDto.setCreateTime(date);
        recordDto.setUpdateTime(date);
        recordDto.setOs(os);
        recordDto.setIp(ip);
        recordDto.setVersion(version);
        //记录入库
        recordDao.save(recordDto);
    }
    redisManager.expire(todayCacheKey, 7, TimeUnit.DAYS);
}

1 画出代码逻辑流程图
2 找出代码逻辑缺陷和代码缺陷;
3 设计一个更优方案当前存在的问题和预计后期维护成本;

相关文章

  • 使用地图API实现IP转地理位置记录到登录日志中

    JBolt极速开发平台里用户登录时,需要记录登录日志、监控异地登录报警异常。 日志记录的比较丰富: 登录用户、时间...

  • 用户登录记录

    需要用户登录再进行请求

  • 记录用户登录记录

    1 画出代码逻辑流程图2 找出代码逻辑缺陷和代码缺陷;3 设计一个更优方案当前存在的问题和预计后期维护成本;

  • 今天你登录了吗?

    【题目】 “7月登录表”里记录了7月登录的用户信息。“8月登录表”里记录了是8月登录的用户信息。 问题1:7月、8...

  • 云服务器 ECS Linux 查看用户登录记录

    本文对 云服务器 ECS Linux 查看用户登录记录的方法进行简要说明。 要点: 用户登录的信息通常记录在 ut...

  • linux 日志介绍

    /var/log/secure记录用户登录、用户属性发生改变等一些日志 /var/log/lastlog记录用户的...

  • Redis学习-位图(bitmap)法统计活跃用户

    一亿个用户,有的用户频繁登录,也有不经常登录的。如何记录用户的登录信息?如何查询活跃用户?[如一周内 登录三次的]...

  • app登录设计 学习笔记

    app登录设计 学习笔记 1、APP登录目的: ①获取用户信息,记录用户数据,保护用户隐私 ②用户之间建立联系 ③...

  • Linux用户登录后精确命令History记录

    Linux用户登录后精确命令记录(history 按时间、用户显示命令记录) 设置保存历史命令的文件大小 保存历史...

  • 2021-03-24

    JMeter之模拟用户登录后进行接口压测 本文记录了使用JMeter来模拟用户登录,并从登录接口返回的JSON数据...

网友评论

      本文标题:记录用户登录记录

      本文链接:https://www.haomeiwen.com/subject/sohkcdtx.html