package com.doumee.api.business; import com.doumee.api.BaseController; import com.doumee.core.annotation.excel.ExcelExporter; import com.doumee.core.model.ApiResponse; import com.doumee.dao.dto.DataBoardQueryDTO; import com.doumee.dao.dto.FinanceQueryDTO; import com.doumee.dao.dto.TrendQueryDTO; import com.doumee.dao.vo.*; import com.doumee.service.business.DataBoardService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletResponse; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; @Api(tags = "数据看板") @RestController @RequestMapping("/business/dataBoard") public class DataBoardController extends BaseController { @Autowired private DataBoardService dataBoardService; @ApiOperation("经营看板") @PostMapping("/overview") public ApiResponse overview(@RequestBody DataBoardQueryDTO query) { return ApiResponse.success(dataBoardService.overview(query)); } @ApiOperation("会员注册趋势") @PostMapping("/memberTrend") public ApiResponse> memberTrend(@RequestBody TrendQueryDTO query) { return ApiResponse.success(dataBoardService.memberTrend(query)); } @ApiOperation("订单趋势") @PostMapping("/orderTrend") public ApiResponse> orderTrend(@RequestBody TrendQueryDTO query) { return ApiResponse.success(dataBoardService.orderTrend(query)); } @ApiOperation("营收趋势") @PostMapping("/revenueTrend") public ApiResponse> revenueTrend(@RequestBody TrendQueryDTO query) { return ApiResponse.success(dataBoardService.revenueTrend(query)); } @ApiOperation("门店业绩统计") @PostMapping("/shopPerformance") public ApiResponse shopPerformance(@RequestBody DataBoardQueryDTO query) { return ApiResponse.success(dataBoardService.shopPerformance(query)); } @ApiOperation("行李类型占比导出") @PostMapping("/luggageTypeExport") public void luggageTypeExport(@RequestBody DataBoardQueryDTO query, HttpServletResponse response) { ExcelExporter.build(LuggageTypeItem.class) .export(dataBoardService.luggageTypeList(query), "行李类型占比", response); } @ApiOperation("平台财务总览") @PostMapping("/financeOverview") public ApiResponse> financeOverview(@RequestBody FinanceQueryDTO query) { return ApiResponse.success(dataBoardService.financeOverview(query)); } @ApiOperation("平台财务总览导出") @PostMapping("/financeOverviewExport") public void financeOverviewExport(@RequestBody FinanceQueryDTO query, HttpServletResponse response) { String fileName = "平台财务数据报表_" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); ExcelExporter.build(FinanceOverviewVO.class) .export(dataBoardService.financeOverview(query), fileName, response); } @ApiOperation("门店业绩Top10") @PostMapping("/shopTop") public ApiResponse> shopTop(@RequestBody TrendQueryDTO query) { return ApiResponse.success(dataBoardService.shopTop(query)); } @ApiOperation("司机业绩Top10") @PostMapping("/driverTop") public ApiResponse> driverTop(@RequestBody TrendQueryDTO query) { return ApiResponse.success(dataBoardService.driverTop(query)); } }