Skip to content

Instantly share code, notes, and snippets.

@cuongld2
Created March 18, 2020 05:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cuongld2/0c4f0ea0eb40ec0c1f325cf343fbc7fd to your computer and use it in GitHub Desktop.
Save cuongld2/0c4f0ea0eb40ec0c1f325cf343fbc7fd to your computer and use it in GitHub Desktop.
main-controller-report
package vas.dealer.report.controller;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.ArraySchema;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import vas.dealer.report.constant.ConfigConstant;
import vas.dealer.report.constant.ServiceConstant;
import vas.dealer.report.dto.*;
import vas.dealer.report.service.*;
import vas.dealer.report.util.CommonUtils;
import javax.servlet.http.HttpServletRequest;
import static org.springframework.http.HttpHeaders.AUTHORIZATION;
@RestController
@Slf4j
@RequestMapping("vas-dealer")
@Tag(name = "report", description = "API to show reports for Vinaphone")
public class MainController {
@Autowired
private CommonService commonService;
@Autowired
private Environment env;
@Autowired
private HistorySaleService historySaleService;
@Autowired
private ReportRevenueService reportRevenueService;
@Autowired
private ReportPostageService reportPostageService;
@Autowired
private ReportRosesService reportRosesService;
@Operation(summary = "Show different kind of reports", description = "reports", tags = { "report" })
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "successful operation",
content = @Content(array = @ArraySchema(schema = @Schema(implementation = ServerResponseDto.class)))) })
@RequestMapping(value = "/report", method = RequestMethod.POST)
public ServerResponseDto processCmsGetData(HttpServletRequest request, @RequestBody ApiRequestDto requestDto) {
log.info("Request :\n " + requestDto.toString());
ServerResponseDto serverResponseDto;
if (commonService.isAuthorization(request.getHeader(AUTHORIZATION), env.getProperty(ConfigConstant.API_USER_NAME), env.getProperty(ConfigConstant.API_PASSWORD))) {
serverResponseDto = processService(requestDto.getService(), requestDto.getParam());
} else {
log.error("AUTHORIZATION ACCESS DENIED !!!");
serverResponseDto = new ServerResponseDto(HttpStatus.UNAUTHORIZED);
}
log.info("==> Response :\n " + serverResponseDto.toString());
return serverResponseDto;
}
/**
* Process request
*
* @author DucTT
* @param service : service request
* @param params : params object
* @return CmsRsDto response
*/
private ServerResponseDto processService(String service, Object params) {
switch (service) {
case ServiceConstant.HISTORY_SALES : // lịch sử bán hàng
HistorySalesRqDto historySalesRqDto = CommonUtils.castObjectToObject(params, HistorySalesRqDto.class);
return historySaleService.getHistorySales(historySalesRqDto);
case ServiceConstant.REPORT_REVENUE : // doanh thu dịch vụ
ReportRevenueRqDto reportRevenueRqDto = CommonUtils.castObjectToObject(params, ReportRevenueRqDto.class);
return reportRevenueService.getReport(reportRevenueRqDto);
case ServiceConstant.REPORT_POSTAGE : // báo cáo đối soát
ReportPostageRqDto reportPostageRqDto = CommonUtils.castObjectToObject(params, ReportPostageRqDto.class);
return reportPostageService.getReport(reportPostageRqDto);
case ServiceConstant.REPORT_ROSES : // Doanh thu hoa hồng
ReportRosesRqDto reportRosesRqDto = CommonUtils.castObjectToObject(params, ReportRosesRqDto.class);
return reportRosesService.getReport(reportRosesRqDto);
case ServiceConstant.REPORT_ROSES_DETAIL : // Doanh thu hoa hồng chi tiết
reportRosesRqDto = CommonUtils.castObjectToObject(params, ReportRosesRqDto.class);
return reportRosesService.getReportDetail(reportRosesRqDto);
default:
return new ServerResponseDto(HttpStatus.METHOD_NOT_ALLOWED);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment