package com.tanpu.community.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.tanpu.community.api.enums.VisitTypeEnum; import com.tanpu.community.dao.entity.community.VisitSummaryEntity; import com.tanpu.community.dao.mapper.community.VisitSummaryMapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.List; @Slf4j @Service public class VisitSummaryService { @Resource private VisitSummaryMapper visitSummaryMapper; @Transactional public void addPageView(String userId, String targetId, VisitTypeEnum type) { visitSummaryMapper.insert(VisitSummaryEntity.builder() .visitorId(userId) .refId(targetId) .refType(type.getCode()) .build()); } // 查询话题 详细页面 浏览量 public Integer queryTopicDetailVisit(String topicId) { return visitSummaryMapper.selectCount(new LambdaQueryWrapper<VisitSummaryEntity>() .eq(VisitSummaryEntity::getRefId, topicId) .eq(VisitSummaryEntity::getRefType, VisitTypeEnum.TOPIC_PAGE_VIEW.getCode())); } // 查询主题 浏览量 public Integer queryThemeVisit(String theme) { return visitSummaryMapper.selectCount(new LambdaQueryWrapper<VisitSummaryEntity>() .eq(VisitSummaryEntity::getRefId, theme) .eq(VisitSummaryEntity::getRefType, VisitTypeEnum.TOPIC_PAGE_VIEW.getCode())); } // 查询主题 浏览量 public Integer queryThemeVisit(List<String> themes) { return visitSummaryMapper.selectCount(new LambdaQueryWrapper<VisitSummaryEntity>() .in(VisitSummaryEntity::getRefId, themes) .eq(VisitSummaryEntity::getRefType, VisitTypeEnum.TOPIC_PAGE_VIEW.getCode())); } // 更新访问时长 public void updateDurByIdent(String ident, Integer dur) { // visitSummaryMapper.updateDurByIdent(ident, dur); } public LocalDateTime queryLatestViewFollow(String userId) { List<VisitSummaryEntity> visitSummaryEntities = visitSummaryMapper.selectList(new LambdaQueryWrapper<VisitSummaryEntity>() .eq(VisitSummaryEntity::getVisitorId, userId) .eq(VisitSummaryEntity::getRefType, VisitTypeEnum.FOLLOW_THEME_VIEW.getCode()) .orderByDesc(VisitSummaryEntity::getCreateTime)); if (CollectionUtils.isEmpty(visitSummaryEntities)) { return null; } else { return visitSummaryEntities.get(0).getCreateTime(); } } }