| | |
| | | import com.xiaopeng.account.mapper.XpAppUserMapper; |
| | | import com.xiaopeng.account.service.IXpAppUserService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.xiaopeng.api.dto.statistics.DailyCountDTO; |
| | | import com.xiaopeng.api.dto.statistics.StatisticsQueryDTO; |
| | | import com.xiaopeng.api.dto.statistics.UserStatisticsDTO; |
| | | import com.xiaopeng.api.model.account.XpAppUser; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.time.LocalDate; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | @Service |
| | | public class XpAppUserServiceImpl extends ServiceImpl<XpAppUserMapper, XpAppUser> implements IXpAppUserService { |
| | | |
| | | @Override |
| | | public UserStatisticsDTO getUserStatistics(StatisticsQueryDTO query) { |
| | | UserStatisticsDTO dto = new UserStatisticsDTO(); |
| | | |
| | | // 1. 查询用户总数 |
| | | dto.setTotalCount(baseMapper.selectCount(null)); |
| | | |
| | | // 2. 查询时间范围内新增用户数 |
| | | if (query.getStartDate() != null && query.getEndDate() != null) { |
| | | dto.setNewCount(baseMapper.countNewUsers(query.getStartDate(), query.getEndDate())); |
| | | } else { |
| | | dto.setNewCount(0L); |
| | | } |
| | | |
| | | // 3. 查询近N天每日新增用户数(默认30天) |
| | | Integer trendDays = query.getTrendDays() != null ? query.getTrendDays() : 30; |
| | | LocalDate endDate = LocalDate.now(); |
| | | LocalDate startDate = endDate.minusDays(trendDays - 1); |
| | | List<DailyCountDTO> dailyCountList = baseMapper.getDailyUserCount(startDate, endDate); |
| | | dto.setDailyCountList(dailyCountList != null ? dailyCountList : new ArrayList<>()); |
| | | |
| | | return dto; |
| | | } |
| | | } |