package com.xiaopeng.order.service.impl; import com.xiaopeng.api.dto.statistics.DailyCountDTO; import com.xiaopeng.api.dto.statistics.OrderStatisticsDTO; import com.xiaopeng.api.dto.statistics.StatisticsQueryDTO; import com.xiaopeng.api.model.order.XpOrder; import com.xiaopeng.order.mapper.XpOrderMapper; import com.xiaopeng.order.service.IXpOrderService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.time.LocalDate; import java.util.ArrayList; import java.util.List; /** *

* 订单 服务实现类 *

* * @author mitao * @since 2026-02-03 */ @Service public class XpOrderServiceImpl extends ServiceImpl implements IXpOrderService { @Override public OrderStatisticsDTO getOrderStatistics(StatisticsQueryDTO query) { OrderStatisticsDTO dto = new OrderStatisticsDTO(); // 1. 查询订单总数(状态为9=待评价或10=已完成) dto.setTotalCount(baseMapper.countCompletedOrders()); // 2. 查询时间范围内新增订单数 if (query.getStartDate() != null && query.getEndDate() != null) { dto.setNewCount(baseMapper.countNewOrders(query.getStartDate(), query.getEndDate())); } else { dto.setNewCount(0L); } // 3. 查询总交易金额和总收入(pay_money累加) BigDecimal totalMoney = baseMapper.sumTotalMoney(); dto.setTotalMoney(totalMoney != null ? totalMoney : BigDecimal.ZERO); dto.setTotalIncome(totalMoney != null ? totalMoney : BigDecimal.ZERO); // 4. 查询近N天每日新增订单数(默认30天) Integer trendDays = query.getTrendDays() != null ? query.getTrendDays() : 30; LocalDate endDate = LocalDate.now(); LocalDate startDate = endDate.minusDays(trendDays - 1); List dailyCountList = baseMapper.getDailyOrderCount(startDate, endDate); dto.setDailyCountList(dailyCountList != null ? dailyCountList : new ArrayList<>()); return dto; } }