package com.doumee.api.web; import com.doumee.core.annotation.LoginDriverRequired; import com.doumee.core.annotation.LoginRequired; import com.doumee.core.annotation.LoginShopRequired; import com.doumee.core.annotation.trace.Trace; import com.doumee.core.model.ApiResponse; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.dao.business.model.Revenue; import com.doumee.dao.dto.RevenueQueryDTO; import com.doumee.dao.dto.ShopRevenueQueryDTO; import com.doumee.dao.vo.LuggageTypeItem; import com.doumee.dao.vo.RevenueSummaryVO; import com.doumee.dao.vo.ShopKpiVO; import com.doumee.dao.vo.DriverKpiVO; import com.doumee.dao.vo.DriverOrderTrendVO; import com.doumee.dao.vo.DriverRewardHallVO; import com.doumee.dao.dto.ClaimRewardDTO; import com.doumee.service.business.RevenueService; import com.doumee.service.business.ShopInfoService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; @Api(tags = "交易流水") @Trace(exclude = true) @RestController @RequestMapping("/web/revenue") @Slf4j public class RevenueApi extends ApiController { @Autowired private RevenueService revenueService; @Autowired private ShopInfoService shopInfoService; @LoginDriverRequired @ApiOperation(value = "司机流水分页", notes = "小程序端") @PostMapping("/driverPage") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), }) public ApiResponse> driverPage(@RequestBody @Validated PageWrap pageWrap) { return ApiResponse.success("查询成功", revenueService.findDriverRevenuePage(pageWrap, getDriverId())); } @LoginDriverRequired @ApiOperation(value = "司机流水收支统计", notes = "根据查询条件统计收入与支出") @PostMapping("/driverSummary") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), }) public ApiResponse driverSummary(@RequestBody RevenueQueryDTO queryDTO) { return ApiResponse.success("查询成功", revenueService.getDriverRevenueSummary(queryDTO, getDriverId())); } @LoginShopRequired @ApiOperation(value = "门店流水分页", notes = "小程序端") @PostMapping("/shopPage") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "门店token值", required = true), }) public ApiResponse> shopPage(@RequestBody @Validated PageWrap pageWrap) { return ApiResponse.success("查询成功", revenueService.findShopRevenuePage(pageWrap, getShopId())); } @LoginShopRequired @ApiOperation(value = "门店流水收支统计", notes = "根据查询条件统计收入与支出") @PostMapping("/shopSummary") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "门店token值", required = true), }) public ApiResponse shopSummary(@RequestBody RevenueQueryDTO queryDTO) { return ApiResponse.success("查询成功", revenueService.getShopRevenueSummary(queryDTO, getShopId())); } @LoginShopRequired @ApiOperation("门店行李类型分布") @PostMapping("/shopLuggageType") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "门店token值", required = true), }) public ApiResponse> shopLuggageType(@RequestBody @Valid ShopRevenueQueryDTO query) { return ApiResponse.success("查询成功", shopInfoService.shopLuggageTypeList(getShopId(), query)); } @LoginShopRequired @ApiOperation("门店核心业绩指标") @PostMapping("/shopKpi") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "门店token值", required = true), }) public ApiResponse shopKpi(@RequestBody @Valid ShopRevenueQueryDTO query) { return ApiResponse.success("查询成功", shopInfoService.getShopKpi(getShopId(), query)); } @LoginDriverRequired @ApiOperation("司机核心业绩指标") @PostMapping("/driverKpi") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), }) public ApiResponse driverKpi(@RequestBody @Valid ShopRevenueQueryDTO query) { return ApiResponse.success("查询成功", revenueService.getDriverKpi(getDriverId(), query)); } @LoginDriverRequired @ApiOperation("司机近七日订单趋势") @PostMapping("/driverOrderTrend") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), }) public ApiResponse> driverOrderTrend() { return ApiResponse.success("查询成功", revenueService.getDriverOrderTrend(getDriverId())); } @LoginDriverRequired @ApiOperation("司机奖励大厅") @PostMapping("/driverRewardHall") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), }) public ApiResponse driverRewardHall() { return ApiResponse.success("查询成功", revenueService.getDriverRewardHall(getDriverId())); } @LoginDriverRequired @ApiOperation("领取奖励金") @PostMapping("/claimReward") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), }) public ApiResponse claimReward(@RequestBody @Valid ClaimRewardDTO dto) { revenueService.claimReward(getDriverId(), dto.getRewardRecordId()); return ApiResponse.success("领取成功"); } }