From d428773be025b6846db87d9cd28c52cc59429eca Mon Sep 17 00:00:00 2001 From: "Ray.Hao" <1490493387@qq.com> Date: Sat, 6 Jul 2024 04:54:52 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E8=AE=BF=E9=97=AE=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/controller/SysLogController.java | 1 - .../youlai/system/mapper/SysLogMapper.java | 16 ++++++- .../youlai/system/model/vo/VisitStatsVO.java | 38 ++++++++++++++++ .../youlai/system/service/SysLogService.java | 11 ++++- .../service/impl/SysLogServiceImpl.java | 43 +++++++++++++++++- src/main/resources/mapper/SysLogMapper.xml | 45 ++++++++++++++++++- 6 files changed, 147 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/youlai/system/model/vo/VisitStatsVO.java diff --git a/src/main/java/com/youlai/system/controller/SysLogController.java b/src/main/java/com/youlai/system/controller/SysLogController.java index 17edfa5b..fede963b 100644 --- a/src/main/java/com/youlai/system/controller/SysLogController.java +++ b/src/main/java/com/youlai/system/controller/SysLogController.java @@ -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; diff --git a/src/main/java/com/youlai/system/mapper/SysLogMapper.java b/src/main/java/com/youlai/system/mapper/SysLogMapper.java index 38a27432..3976d4bf 100644 --- a/src/main/java/com/youlai/system/mapper/SysLogMapper.java +++ b/src/main/java/com/youlai/system/mapper/SysLogMapper.java @@ -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 { * @return */ List getIpCounts(String startDate, String endDate); + + /** + * 获取浏览量(PV)统计数据 + * + * @return + */ + VisitStatsVO getPvStats(); + + /** + * 获取IP统计数据 + * + * @return + */ + VisitStatsVO getIpStats(); } diff --git a/src/main/java/com/youlai/system/model/vo/VisitStatsVO.java b/src/main/java/com/youlai/system/model/vo/VisitStatsVO.java new file mode 100644 index 00000000..7cc5685e --- /dev/null +++ b/src/main/java/com/youlai/system/model/vo/VisitStatsVO.java @@ -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; + +} diff --git a/src/main/java/com/youlai/system/service/SysLogService.java b/src/main/java/com/youlai/system/service/SysLogService.java index d1be9085..b0801e31 100644 --- a/src/main/java/com/youlai/system/service/SysLogService.java +++ b/src/main/java/com/youlai/system/service/SysLogService.java @@ -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 { * @return */ VisitTrendVO getVisitTrend(LocalDate startDate, LocalDate endDate); + + /** + * 获取访问统计 + * + * @return + */ + List getVisitStats(); + } diff --git a/src/main/java/com/youlai/system/service/impl/SysLogServiceImpl.java b/src/main/java/com/youlai/system/service/impl/SysLogServiceImpl.java index 1a69b828..5839a7d1 100644 --- a/src/main/java/com/youlai/system/service/impl/SysLogServiceImpl.java +++ b/src/main/java/com/youlai/system/service/impl/SysLogServiceImpl.java @@ -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 */ @Override public VisitTrendVO getVisitTrend(LocalDate startDate, LocalDate endDate) { - VisitTrendVO visitTrend= new VisitTrendVO(); + VisitTrendVO visitTrend = new VisitTrendVO(); List dates = new ArrayList<>(); // 获取日期范围内的日期 @@ -64,7 +66,7 @@ public class SysLogServiceImpl extends ServiceImpl // 获取访问量和访问 IP 数的统计数据 List pvCounts = this.baseMapper.getPvCounts(dates.get(0) + " 00:00:00", dates.get(dates.size() - 1) + " 23:59:59"); - List ipCounts = this.baseMapper.getIpCounts(dates.get(0) + " 00:00:00", dates.get(dates.size() - 1) + " 23:59:59"); + List ipCounts = this.baseMapper.getIpCounts(dates.get(0) + " 00:00:00", dates.get(dates.size() - 1) + " 23:59:59"); // 将统计数据转换为 Map Map pvMap = pvCounts.stream().collect(Collectors.toMap(VisitCount::getDate, VisitCount::getCount)); @@ -84,6 +86,43 @@ public class SysLogServiceImpl extends ServiceImpl return visitTrend; } + + /** + * 获取访问统计 + * + * @return + */ + @Override + public List getVisitStats() { + List 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; + } + } diff --git a/src/main/resources/mapper/SysLogMapper.xml b/src/main/resources/mapper/SysLogMapper.xml index 1056a8c1..f8611f55 100644 --- a/src/main/resources/mapper/SysLogMapper.xml +++ b/src/main/resources/mapper/SysLogMapper.xml @@ -44,7 +44,7 @@ t1.create_time DESC - + - + + + + + + + +