refactor: 访问统计完善

This commit is contained in:
Ray.Hao
2024-07-06 04:54:52 +08:00
parent 0b346ad255
commit d428773be0
6 changed files with 147 additions and 7 deletions

View File

@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.system.common.result.PageResult;
import com.youlai.system.common.result.Result;
import com.youlai.system.model.query.LogPageQuery;
import com.youlai.system.model.vo.IpStatsVO;
import com.youlai.system.model.vo.LogPageVO;
import com.youlai.system.model.vo.VisitStatsVO;
import com.youlai.system.model.vo.VisitTrendVO;

View File

@@ -5,8 +5,8 @@ import com.youlai.system.model.bo.VisitCount;
import com.youlai.system.model.entity.SysLog;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.youlai.system.model.query.LogPageQuery;
import com.youlai.system.model.query.RolePageQuery;
import com.youlai.system.model.vo.LogPageVO;
import com.youlai.system.model.vo.VisitStatsVO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@@ -47,6 +47,20 @@ public interface SysLogMapper extends BaseMapper<SysLog> {
* @return
*/
List<VisitCount> getIpCounts(String startDate, String endDate);
/**
* 获取浏览量(PV)统计数据
*
* @return
*/
VisitStatsVO getPvStats();
/**
* 获取IP统计数据
*
* @return
*/
VisitStatsVO getIpStats();
}

View File

@@ -0,0 +1,38 @@
package com.youlai.system.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
/**
* 访问量统计VO
*
* @author Ray
* @since 2024/7/2
*/
@Schema(description = "访问量统计VO")
@Getter
@Setter
public class VisitStatsVO {
@Schema(description = "统计类型")
private String type;
@Schema(description = "标题")
private String title;
@Schema(description = "今日访问量")
private Integer todayCount;
@Schema(description = "总访问量")
private Integer totalCount;
@Schema(description = "增长率")
private BigDecimal growthRate;
@Schema(description = "统计粒度标签")
private String granularityLabel;
}

View File

@@ -4,11 +4,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.system.model.entity.SysLog;
import com.baomidou.mybatisplus.extension.service.IService;
import com.youlai.system.model.query.LogPageQuery;
import com.youlai.system.model.query.RolePageQuery;
import com.youlai.system.model.vo.LogPageVO;
import com.youlai.system.model.vo.VisitStatsVO;
import com.youlai.system.model.vo.VisitTrendVO;
import java.time.LocalDate;
import java.util.List;
/**
* 系统日志 服务接口
@@ -35,4 +36,12 @@ public interface SysLogService extends IService<SysLog> {
* @return
*/
VisitTrendVO getVisitTrend(LocalDate startDate, LocalDate endDate);
/**
* 获取访问统计
*
* @return
*/
List<VisitStatsVO> getVisitStats();
}

View File

@@ -7,11 +7,13 @@ import com.youlai.system.model.bo.VisitCount;
import com.youlai.system.model.entity.SysLog;
import com.youlai.system.model.query.LogPageQuery;
import com.youlai.system.model.vo.LogPageVO;
import com.youlai.system.model.vo.VisitStatsVO;
import com.youlai.system.model.vo.VisitTrendVO;
import com.youlai.system.service.SysLogService;
import com.youlai.system.mapper.SysLogMapper;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
@@ -52,7 +54,7 @@ public class SysLogServiceImpl extends ServiceImpl<SysLogMapper, SysLog>
*/
@Override
public VisitTrendVO getVisitTrend(LocalDate startDate, LocalDate endDate) {
VisitTrendVO visitTrend= new VisitTrendVO();
VisitTrendVO visitTrend = new VisitTrendVO();
List<String> dates = new ArrayList<>();
// 获取日期范围内的日期
@@ -64,7 +66,7 @@ public class SysLogServiceImpl extends ServiceImpl<SysLogMapper, SysLog>
// 获取访问量和访问 IP 数的统计数据
List<VisitCount> pvCounts = this.baseMapper.getPvCounts(dates.get(0) + " 00:00:00", dates.get(dates.size() - 1) + " 23:59:59");
List<VisitCount> ipCounts = this.baseMapper.getIpCounts(dates.get(0) + " 00:00:00", dates.get(dates.size() - 1) + " 23:59:59");
List<VisitCount> ipCounts = this.baseMapper.getIpCounts(dates.get(0) + " 00:00:00", dates.get(dates.size() - 1) + " 23:59:59");
// 将统计数据转换为 Map
Map<String, Integer> pvMap = pvCounts.stream().collect(Collectors.toMap(VisitCount::getDate, VisitCount::getCount));
@@ -84,6 +86,43 @@ public class SysLogServiceImpl extends ServiceImpl<SysLogMapper, SysLog>
return visitTrend;
}
/**
* 获取访问统计
*
* @return
*/
@Override
public List<VisitStatsVO> getVisitStats() {
List<VisitStatsVO> list = new ArrayList<>();
// 访问量
VisitStatsVO pvStats = this.baseMapper.getPvStats();
pvStats.setTitle("浏览量");
pvStats.setType("pv");
pvStats.setGranularityLabel("");
list.add(pvStats);
// 访客数
VisitStatsVO uvStats = new VisitStatsVO();
uvStats.setTitle("访客数");
uvStats.setType("uv");
uvStats.setTodayCount(100);
uvStats.setTotalCount(2000);
uvStats.setGrowthRate(BigDecimal.ZERO);
uvStats.setGranularityLabel("");
list.add(uvStats);
// IP数
VisitStatsVO ipStats = this.baseMapper.getIpStats();
ipStats.setTitle("IP数");
ipStats.setType("ip");
ipStats.setGranularityLabel("");
list.add(ipStats);
return list;
}
}