package com.cyl.manager.statistics.service;

import com.cyl.manager.oms.mapper.AftersaleMapper;
import com.cyl.manager.oms.mapper.OrderMapper;
import com.cyl.manager.statistics.mapper.IndexStatisticsMapper;
import com.cyl.manager.statistics.domain.query.GoodsStatisticsQuery;
import com.cyl.manager.statistics.domain.query.OrderStatisticsQuery;
import com.cyl.manager.statistics.domain.vo.MemberAndCartStatisticsVO;
import com.cyl.manager.statistics.domain.vo.OrderAndAftersaleStatisticsVO;
import com.cyl.manager.statistics.domain.vo.OrderStatisticsVO;
import com.cyl.manager.statistics.domain.vo.ProductTopVO;
import com.cyl.manager.ums.mapper.MemberCartMapper;
import com.cyl.manager.ums.mapper.MemberMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.List;

/**
 * 管理端,首页统计数据Service业务层处理
 *
 * @author zhangcheng
 * @since 2023/05/15 13:53
 */
@Service
public class IndexStatisticsService {
    @Autowired
    private IndexStatisticsMapper indexStatisticsMapper;
    @Autowired
    private MemberMapper memberMapper;
    @Autowired
    private MemberCartMapper memberCartMapper;
    @Autowired
    private AftersaleMapper aftersaleMapper;
    @Autowired
    private OrderMapper orderMapper;


    public List<ProductTopVO> goodsStatistics(GoodsStatisticsQuery goodsStatisticsQuery) {
        if (goodsStatisticsQuery.getStatType() == 1){
            return indexStatisticsMapper.goodsSkuStatistics(goodsStatisticsQuery);
        }else {
            return indexStatisticsMapper.goodsStatistics(goodsStatisticsQuery);
        }
    }

    public List<OrderStatisticsVO> orderStatistics(OrderStatisticsQuery param) {
        return indexStatisticsMapper.orderStatistics(param);
    }

    public MemberAndCartStatisticsVO statMemberAndCart() {
        MemberAndCartStatisticsVO vo = new MemberAndCartStatisticsVO();
        vo.setMemberCount(memberMapper.selectCount(null));
        vo.setCartCount(memberCartMapper.selectCount(null));
        return vo;
    }

    public OrderAndAftersaleStatisticsVO orderAndAftersaleStatistics() {
        //统计售后
        OrderAndAftersaleStatisticsVO vo = aftersaleMapper.statPendingAndProcessing();
        //统计未发货数
        vo.setWaitDeliveredCount(orderMapper.statWaitDelivered());
        //统计今日订单数,成交金额,发货数
        LocalDateTime startTime = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
        LocalDateTime endTime = LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
        OrderAndAftersaleStatisticsVO todayData = orderMapper.statTodayData(startTime, endTime);
        vo.setTodayOrderCount(todayData.getTodayOrderCount());
        vo.setTodayHasDeliveredCount(todayData.getTodayHasDeliveredCount());
        vo.setTodayTransactionAmount(todayData.getTodayTransactionAmount());
        return vo;
    }
}