package com.ycwl.basic.controller.pc;

import com.ycwl.basic.model.mobile.statistic.req.CommonQueryReq;
import com.ycwl.basic.model.pc.statistics.resp.OrderStatisticsResp;
import com.ycwl.basic.service.mobile.AppStatisticsService;
import com.ycwl.basic.service.pc.StatisticsService;
import com.ycwl.basic.utils.ApiResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.List;

/**
 * @Author：longbinbin
 * @Date：2024/12/12 14:30
 */
@RestController
@RequestMapping("/api/statistics/v1")
public class StatisticsController {

    @Autowired
    private StatisticsService statisticsService;
    
    @Autowired
    private AppStatisticsService appStatisticsService;

    /**
     * 智能获取扫码访问人数统计数据（自动选择粒度）
     * @param query 查询参数（包含景区ID、开始时间、结束时间；如果scenicId为空则统计全部景区，否则统计指定景区）
     * @return 统计数据（超过7天返回日期级别，否则返回小时级别）
     */
    @PostMapping("/scanCodeMemberChart")
    public ApiResponse<List<HashMap<String, String>>> getScanCodeMemberChart(@RequestBody CommonQueryReq query) {
        return ApiResponse.success(statisticsService.getScanCodeMemberChartAuto(query));
    }

    @PostMapping("/one")
    public ApiResponse getStatisticsOne(@RequestBody CommonQueryReq query) {
        return appStatisticsService.oneStatistics(query);
    }

    @PostMapping("/two")
    public ApiResponse getStatisticsTwo(@RequestBody CommonQueryReq query) {
        return appStatisticsService.twoStatistics(query);
    }

    /**
     * 获取订单统计数据（包含订单数量和金额、推送订单数量、现场订单数量）
     * @param query 查询参数（包含景区ID、开始时间、结束时间；如果scenicId为空则统计全部景区，否则统计指定景区）
     * @return 统计数据（totalOrderCount: 总订单数量, totalOrderAmount: 总订单金额, pushOrderCount: 推送订单数量, sceneOrderCount: 现场订单数量）
     */
    @PostMapping("/orderStatistics")
    public ApiResponse<OrderStatisticsResp> getOrderStatistics(@RequestBody CommonQueryReq query) {
        return ApiResponse.success(statisticsService.getOrderStatistics(query));
    }
}