package com.ydtech.modules.order.controller; import com.ydtech.aop.request.RequestSingleParam; import com.ydtech.config.properties.ZhongmeiApiConfigurationProperties; import com.ydtech.core.page.HttpResult; import com.ydtech.modules.ins.model.vo.GeneralNonCarProductReqVo; import com.ydtech.modules.ins.model.vo.GeneralNonCarProductResVo; import com.ydtech.modules.ins.model.vo.QuoteRespVo; import com.ydtech.modules.ins.model.ya.CarModelDTO; import com.ydtech.modules.order.aop.AuditVerification; import com.ydtech.modules.order.aop.QuoteVerification; import com.ydtech.modules.order.components.InsOrdersComponents; import com.ydtech.modules.order.entity.api.zhongmei.request.ApprovedRequest; import com.ydtech.modules.order.entity.api.zhongmei.request.CoverageRequest; import com.ydtech.modules.order.entity.api.zhongmei.response.RideAccidentQueryResponse; import com.ydtech.modules.order.entity.vo.*; import com.ydtech.modules.order.service.ZhongMeiOrderApiService; import com.ydtech.modules.order.utils.AESUtilsWithDataBase; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; @Api(tags = "中煤财险 API ") @Slf4j @RestController @RequestMapping("/order/zhongMeiApi") public class ZhongMeiOrderApiController { private final ZhongMeiOrderApiService zhongMeiOrderApiService; private final InsOrdersComponents insOrdersComponents; private final ZhongmeiApiConfigurationProperties properties; public ZhongMeiOrderApiController(ZhongMeiOrderApiService zhongMeiOrderApiService, InsOrdersComponents insOrdersComponents, ZhongmeiApiConfigurationProperties properties) { this.zhongMeiOrderApiService = zhongMeiOrderApiService; this.insOrdersComponents = insOrdersComponents; this.properties = properties; } @PostMapping(value = "/modelsQuery") @ApiOperation(value = "车型查询接口") public HttpResult> modelsQuery(@RequestSingleParam(value = "modelName") String modelName) { List map = this.zhongMeiOrderApiService.modelsQuery(modelName); List carModelDTOS = map.stream().sorted(Comparator.comparing(CarModelDTO::getReplacementValue)).collect(Collectors.toList()); return HttpResult.ok(carModelDTOS); } @QuoteVerification("报价授权") @PostMapping("/quote") @ApiOperation("报价") public HttpResult quote(@RequestBody BaseQuoteVo zmQuoteVo) { BaseQuoteInfoVo quoteInfo = this.insOrdersComponents.getQuoteInfo(zmQuoteVo.getOrderNo(), zmQuoteVo.getAgreementId()); return this.zhongMeiOrderApiService.quote(quoteInfo, zmQuoteVo); } @AuditVerification("核保") @PostMapping(value = "/audit") @ApiOperation(value = "提交核保") public HttpResult audit(@RequestSingleParam(value = "companyId") String companyId) { return this.zhongMeiOrderApiService.audit(companyId); } @PostMapping(value = "/submitImage") @ApiOperation(value = "提交影像信息") public HttpResult submitImage(@RequestSingleParam(value = "companyId") String companyId) { // return this.zhongMeiOrderApiService.submitImage(companyId); return HttpResult.ok("ok"); } @PostMapping("/getPolicyPrint") @ApiOperation(value = "电子保单") public HttpResult> getPolicyPrint(@RequestBody PolicyPrintVo policyPrintVo) { return this.zhongMeiOrderApiService.getPolicyPrint(policyPrintVo); } @PostMapping("/paymentEnquiry") @ApiOperation(value = "缴费查询") public HttpResult paymentEnquiry(@RequestSingleParam(value = "companyId") String companyId) { return this.zhongMeiOrderApiService.paymentEnquiry(companyId); } @PostMapping("/underwritingCallback") @ApiOperation(value = "承保回调") public HttpResult underwritingCallback(@RequestBody String s) { CoverageRequest coverageRequest = AESUtilsWithDataBase.decryptMessage(s, CoverageRequest.class, "承保回调", properties.getSessionKey()); return this.zhongMeiOrderApiService.underwritingCallback(coverageRequest); } @PostMapping("/auditCallback") @ApiOperation(value = "审核回调") public HttpResult auditCallback(@RequestBody String s) { ApprovedRequest approvedRequest = AESUtilsWithDataBase.decryptMessage(s, ApprovedRequest.class, "审核回调", properties.getSessionKey()); return this.zhongMeiOrderApiService.auditCallback(approvedRequest); } @PostMapping("/auditStatusQuery") @ApiOperation(value = "核保状态查询") public HttpResult auditStatusQuery(@RequestSingleParam(value = "companyId") String companyId) { return this.zhongMeiOrderApiService.auditStatusQuery(companyId); } @PostMapping("/getDrivingInsurance") @ApiOperation(value = "查询“车+意”中意外险方案信息") public HttpResult> getDrivingInsurance(@RequestBody GeneralNonCarProductReqVo reqVo) { return this.zhongMeiOrderApiService.getDrivingInsurance(reqVo); } @PostMapping("/queryRideAccident") @ApiOperation(value = "意外险可投保产品查询") public HttpResult> queryRideAccident(@RequestBody GeneralNonCarProductReqVo reqVo) { return this.zhongMeiOrderApiService.rideAccidentQuery(reqVo); } }