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;
|
|
/**
|
* <p>
|
* 小程序用户 服务实现类
|
* </p>
|
*
|
* @author mitao
|
* @since 2026-02-03
|
*/
|
@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;
|
}
|
|
@Override
|
public List<XpAppUser> listByIds(List<Long> ids) {
|
if (CollectionUtils.isEmpty(ids)) {
|
return new ArrayList<>();
|
}
|
return super.listByIds(ids);
|
}
|
}
|