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