用户统计

This commit is contained in:
Bunny 2024-01-11 15:21:08 +08:00
parent 9c27154677
commit 18eb840ecc
5 changed files with 97 additions and 2 deletions

View File

@ -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<TurnoverReportVO> turnoverReport(@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,
@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end) {
public Result<TurnoverReportVO> 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<UserReportVO> 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);
}
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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<LocalDate> dateList = new ArrayList<>();
dateList.add(begin);
while (!begin.equals(end)) {
begin = begin.plusDays(1);
dateList.add(begin);
}
// 存放每天的新增用户数量
ArrayList<Integer> newUserList = new ArrayList<>();
// 存放每天总用户数量
List<Integer> 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();
}
}

View File

@ -21,4 +21,18 @@
from user
where id = #{id};
</select>
<!-- 根据动态条件统计用户数量 -->
<select id="countByMap" resultType="java.lang.Integer">
select count(id)
from user
<where>
<if test="begin != null">
and create_time &gt; #{begin}
</if>
<if test="end != null">
and create_time &lt; #{end}
</if>
</where>
</select>
</mapper>