25.访客功能

该博客详细介绍了访客功能的实现,包括需求分析、数据库表设计、访客记录保存的代码实现,以及如何展示首页的最新访客数据。重点讨论了如何在用户查看详情时保存一条访客记录,并确保一天内同一用户只记录一次。此外,还涉及了访客列表的vo对象、控制器和服务的实现。
摘要由CSDN通过智能技术生成

访客功能

一、需求分析

用户在浏览我的主页时,需要记录访客数据,访客在一天内每个用户只记录一次。

首页展示最新5条访客记录

我的模块,分页展示所有的访客记录

二、数据库表

visitors(访客记录表)

{
“_id”: ObjectId(“636334b470603e72be5dbc8d”),
“userId”: NumberLong(“1”),
“visitorUserId”: NumberLong(“1”),
“from”: “首页”,
“date”: NumberLong(“1667445940900”),
“visitDate”: “20221103”,
“score”: 99,
“_class”: “com.tanhua.model.mongo.Visitors”
}

三,保存访客记录

用户在浏览我的主页时,需要记录访客数据

访客在一天内每个用户只记录一次。

思路:1.修改查看佳人详情接口

​ 2.构造访问信息,调用API保存访客数据

代码实现,在查看佳人详情时,保存一条我的访问记录


    /**
     * 根据id查看佳人详情
     * 这个userId是当前用户要查看的用户的id
     */
    public TodayBest queryToBestInfo(Long userId) {
   
        //当前用户id
        Long currentUserId = ThreadLocalUtils.getUserId();

        //1.根据用户id查询用户详情
        UserInfo userInfo = userInfoApi.selectUserInfo(userId);
        //2.根据当前用户的id,和当前用户要查看的用户id查询推荐人
        RecommendUser recommendUser = recommendUserApi.queryRecommendFriend(userId,currentUserId);



        //3.在查看用户详情页面的同时,保存一条当前用户的访问记录到visitor数据库表
        Visitors visitors = new Visitors();
        visitors.setUserId(userId);
        //当前用户未访客
        visitors.setVisitorUserId(currentUserId);
        visitors.setFrom("首页");
        visitors.setDate(System.currentTimeMillis());
        visitors.setVisitDate(new SimpleDateFormat("yyyyMMdd").format(new Date()));
        visitors.setScore(recommendUser.getScore());

        visitorsApi.saveVisitors(visitors);




        //构造返回值
        TodayBest todayBest = TodayBest.init(userInfo, recommendUser);
        return todayBest;
    }

VisitorApiImpl

 @Autowired
    private MongoTemplate mongoTemplate;

    /**
     *
     * 保存访客记录,
     * 同一个用户一天只能保存一次访客记录
     */
    public void saveVisitors(Visitors visitors) {
   

        //1.根据UserId和visitorUserId还有visitDate查询visitors表

        Criteria criteria =           Criteria.where("userId").is(visitors.getUserId())
                .and("visitorUserId").is(visitors.getVisitorUserId())
                .and("visitDate").is(visitors.getVisitDate());

        Query query = Query.query(criteria);



        if(!mongoTemplate.exists(query, Visitors.class)){
   
            mongoTempl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

糖分你俩颗~~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值