package com.xiaopeng.account.service.impl; 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 org.springframework.util.CollectionUtils; import java.time.LocalDate; import java.util.ArrayList; import java.util.List; /** *

* 小程序用户 服务实现类 *

* * @author mitao * @since 2026-02-03 */ @Service public class XpAppUserServiceImpl extends ServiceImpl 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 dailyCountList = baseMapper.getDailyUserCount(startDate, endDate); dto.setDailyCountList(dailyCountList != null ? dailyCountList : new ArrayList<>()); return dto; } @Override public List listByIds(List ids) { if (CollectionUtils.isEmpty(ids)) { return new ArrayList<>(); } return super.listByIds(ids); } }