From 77ffe62c8d546f5f411eed37121853df3360c90d Mon Sep 17 00:00:00 2001 From: zvv <508748680@qq.com> Date: Mon, 6 Apr 2026 18:34:48 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=95=B0=E6=8D=AE=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E5=8A=9F=E8=83=BD=E4=BB=A3=E7=A0=81=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/admin/ReportController.java | 18 +++++++ .../main/java/com/sky/mapper/UserMapper.java | 10 ++++ .../java/com/sky/service/ReportService.java | 10 ++++ .../sky/service/impl/ReportServiceImpl.java | 54 +++++++++++++++++++ .../src/main/resources/mapper/UserMapper.xml | 13 +++++ 5 files changed, 105 insertions(+) diff --git a/sky-server/src/main/java/com/sky/controller/admin/ReportController.java b/sky-server/src/main/java/com/sky/controller/admin/ReportController.java index 8eb99fd..f651f74 100644 --- a/sky-server/src/main/java/com/sky/controller/admin/ReportController.java +++ b/sky-server/src/main/java/com/sky/controller/admin/ReportController.java @@ -4,6 +4,7 @@ package com.sky.controller.admin; import com.sky.result.Result; import com.sky.service.ReportService; import com.sky.vo.TurnoverReportVO; +import com.sky.vo.UserReportVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -41,4 +42,21 @@ public class ReportController { log.info("营业额数据统计:{},{}", begin, end); return Result.success(reportService.getTurnoverStatistics(begin, end)); } + + + /** + * 用户统计 + * @param begin + * @param end + * @return + */ + @GetMapping("/userStatistics") + @ApiOperation("用户统计") + public Result userStatistics( + @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin, + @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end + ){ + log.info("用户数据统计:{},{}", begin, end); + return Result.success(reportService.getUserStatistics(begin, end)); + } } diff --git a/sky-server/src/main/java/com/sky/mapper/UserMapper.java b/sky-server/src/main/java/com/sky/mapper/UserMapper.java index fe0a862..b220918 100644 --- a/sky-server/src/main/java/com/sky/mapper/UserMapper.java +++ b/sky-server/src/main/java/com/sky/mapper/UserMapper.java @@ -5,6 +5,8 @@ import com.sky.entity.User; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; +import java.util.Map; + @Mapper public interface UserMapper { /** @@ -27,4 +29,12 @@ public interface UserMapper { @Select("select * from user where id = #{id}") User getById(Long userId); + + + /** + * 根据动态条件统计用户数量 + * @param map + * @return + */ + Integer countByMap(Map map); } diff --git a/sky-server/src/main/java/com/sky/service/ReportService.java b/sky-server/src/main/java/com/sky/service/ReportService.java index 8580994..404fbc5 100644 --- a/sky-server/src/main/java/com/sky/service/ReportService.java +++ b/sky-server/src/main/java/com/sky/service/ReportService.java @@ -1,6 +1,7 @@ package com.sky.service; import com.sky.vo.TurnoverReportVO; +import com.sky.vo.UserReportVO; import java.time.LocalDate; @@ -14,4 +15,13 @@ public interface ReportService { * @return */ TurnoverReportVO getTurnoverStatistics(LocalDate begin, LocalDate end); + + + /** + * 统计指定时间内的用户数据 + * @param begin + * @param end + * @return + */ + UserReportVO getUserStatistics(LocalDate begin, LocalDate end); } diff --git a/sky-server/src/main/java/com/sky/service/impl/ReportServiceImpl.java b/sky-server/src/main/java/com/sky/service/impl/ReportServiceImpl.java index 2d331c0..6f8f701 100644 --- a/sky-server/src/main/java/com/sky/service/impl/ReportServiceImpl.java +++ b/sky-server/src/main/java/com/sky/service/impl/ReportServiceImpl.java @@ -2,8 +2,10 @@ package com.sky.service.impl; import com.sky.entity.Orders; import com.sky.mapper.OrderMapper; +import com.sky.mapper.UserMapper; import com.sky.service.ReportService; import com.sky.vo.TurnoverReportVO; +import com.sky.vo.UserReportVO; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -24,6 +26,8 @@ public class ReportServiceImpl implements ReportService { @Autowired private OrderMapper orderMapper; + @Autowired + private UserMapper userMapper; /** @@ -70,4 +74,54 @@ public class ReportServiceImpl implements ReportService { return turnoverReportVO; } + + + /** + * 统计指定时间内的用户数据 + * @param begin + * @param end + * @return + */ + @Override + public UserReportVO getUserStatistics(LocalDate begin, LocalDate end) { + + //当前集合用于存放从begin到end范围内每天的日期 + List dateList = new ArrayList(); + dateList.add(begin); + while(!begin.equals(end)){ + //日期计算 计算指定日期的后一天对应的日期 + begin = begin.plusDays(1); + dateList.add(begin); + } + + //存放每天的新增用户数量 select count(id) from user where create_time < ? and create_time > ? + List newUserList = new ArrayList<>(); + //存放每天的总用户数量 select count(id) from user where create_time < ? + List totalUserList = new ArrayList<>(); + + //设置用户数据集合 用户总量 新增用户 + for(LocalDate date:dateList){ + LocalDateTime beginTime = LocalDateTime.of(date, LocalTime.MIN); + LocalDateTime endTime = LocalDateTime.of(date, LocalTime.MAX); + + Map map = new HashMap(); + map.put("end", endTime); + Integer totalUser = userMapper.countByMap(map); + + map.put("begin", beginTime); + Integer newUser = userMapper.countByMap(map); + + totalUserList.add(totalUser); + newUserList.add(newUser); + } + + //封装结果数据 + UserReportVO userReportVO = UserReportVO.builder() + .dateList(StringUtils.join(dateList, ",")) + .totalUserList(StringUtils.join(totalUserList, ",")) + .newUserList(StringUtils.join(newUserList, ",")) + .build(); + + return userReportVO; + } } diff --git a/sky-server/src/main/resources/mapper/UserMapper.xml b/sky-server/src/main/resources/mapper/UserMapper.xml index ce2d51a..99b1139 100644 --- a/sky-server/src/main/resources/mapper/UserMapper.xml +++ b/sky-server/src/main/resources/mapper/UserMapper.xml @@ -9,4 +9,17 @@ values (#{openid}, #{name}, #{phone}, #{sex}, #{idNumber}, #{avatar}, #{createTime}) + + +