From 18eb840ecc7707b2c38656dd6abb7646534b512a Mon Sep 17 00:00:00 2001 From: Bunny <1319900154@qq.com> Date: Thu, 11 Jan 2024 15:21:08 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/admin/ReportController.java | 19 +++++++- .../main/java/com/sky/mapper/UserMapper.java | 10 ++++ .../java/com/sky/service/ReportService.java | 10 ++++ .../sky/service/impl/ReportServiceImpl.java | 46 +++++++++++++++++++ .../src/main/resources/mapper/UserMapper.xml | 14 ++++++ 5 files changed, 97 insertions(+), 2 deletions(-) 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 7cd3fd0..f5dbe8e 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 @@ -3,6 +3,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; @@ -31,10 +32,24 @@ public class ReportController { */ @ApiOperation("营业额统计") @GetMapping("/turnoverStatistics") - public Result turnoverReport(@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin, - @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end) { + public Result turnoverReport(@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin, @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end) { log.info("营业额统计,开始时间:{};结束时间:{}", begin, end); TurnoverReportVO turnoverStatistics = reportService.getTurnoverStatistics(begin, end); return Result.success(turnoverStatistics); } + + /** + * 用户统计 + * + * @param begin 看起始时间 + * @param end 结束时间 + * @return UserReportVO + */ + @ApiOperation("用户统计") + @GetMapping("/userStatistics") + public Result userStatistics(@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin, @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end) { + log.info("用户统计,开始时间:{};结束时间:{}", begin, end); + UserReportVO userStatistics = reportService.getUserStatistics(begin, end); + return Result.success(userStatistics); + } } 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 d08719b..3979d12 100644 --- a/sky-server/src/main/java/com/sky/mapper/UserMapper.java +++ b/sky-server/src/main/java/com/sky/mapper/UserMapper.java @@ -3,6 +3,8 @@ package com.sky.mapper; import com.sky.entity.User; import org.apache.ibatis.annotations.Mapper; +import java.util.Map; + @Mapper public interface UserMapper { @@ -28,4 +30,12 @@ public interface UserMapper { * @return User */ 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 c6808b8..f621b50 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; @@ -13,4 +14,13 @@ public interface ReportService { * @return TurnoverReportVO */ TurnoverReportVO getTurnoverStatistics(LocalDate begin, LocalDate end); + + /** + * 用户统计 + * + * @param begin 看起始时间 + * @param end 结束时间 + * @return UserReportVO + */ + 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 658a6d6..6468c4e 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 org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; @@ -13,11 +15,14 @@ import java.time.LocalDateTime; import java.time.LocalTime; import java.util.ArrayList; import java.util.HashMap; +import java.util.List; @Service public class ReportServiceImpl implements ReportService { @Resource private OrderMapper orderMapper; + @Resource + private UserMapper userMapper; /** * 营业额统计 @@ -53,4 +58,45 @@ public class ReportServiceImpl implements ReportService { return TurnoverReportVO.builder().dateList(StringUtils.join(dateArrayList, ",")).turnoverList(StringUtils.join(turnoverList, ",")).build(); } + + /** + * 用户统计 + * + * @param begin 看起始时间 + * @param end 结束时间 + * @return UserReportVO + */ + @Override + public UserReportVO getUserStatistics(LocalDate begin, LocalDate end) { + List dateList = new ArrayList<>(); + dateList.add(begin); + + while (!begin.equals(end)) { + begin = begin.plusDays(1); + dateList.add(begin); + } + // 存放每天的新增用户数量 + ArrayList newUserList = new ArrayList<>(); + // 存放每天总用户数量 + List totalUserList = new ArrayList<>(); + for (LocalDate date : dateList) { + LocalDateTime beginTime = LocalDateTime.of(date, LocalTime.MIN); + LocalDateTime endTime = LocalDateTime.of(date, LocalTime.MAX); + + HashMap 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); + } + return UserReportVO.builder() + .dateList(StringUtils.join(dateList, ",")) + .totalUserList(StringUtils.join(totalUserList, ",")) + .newUserList(StringUtils.join(newUserList, ",")) + .build(); + } } diff --git a/sky-server/src/main/resources/mapper/UserMapper.xml b/sky-server/src/main/resources/mapper/UserMapper.xml index 41623e9..5fcd41e 100644 --- a/sky-server/src/main/resources/mapper/UserMapper.xml +++ b/sky-server/src/main/resources/mapper/UserMapper.xml @@ -21,4 +21,18 @@ from user where id = #{id}; + + +