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