puzhibing
2026-02-04 85bafa86f44fbe6646019fd8ecbab79f552ccd0a
xp-service/xp-account/src/main/java/com/xiaopeng/account/service/impl/XpAppUserServiceImpl.java
@@ -3,8 +3,15 @@
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>
@@ -17,4 +24,27 @@
@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;
    }
}