package com.ydtech.modules.ins.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ydtech.aop.request.RequestSingleParam; import com.ydtech.constants.enums.dict.InsOrderStatusEnum; import com.ydtech.core.page.HttpResult; import com.ydtech.exception.SystemException; import com.ydtech.modules.esm.dao.EsmInsAttachInsureDetailsMapper; import com.ydtech.modules.esm.dao.EsmInsAttachInsureMapper; import com.ydtech.modules.esm.model.EsmInsAttachInsure; import com.ydtech.modules.esm.model.EsmInsAttachInsureDetails; import com.ydtech.modules.esm.service.InsTaskImageService; import com.ydtech.modules.ins.service.InsAlltrustApiService; import com.ydtech.modules.order.components.InsOrdersComponents; import com.ydtech.modules.order.entity.InsAreaCompany; import com.ydtech.modules.order.entity.vo.AccidentalDrivingQueryVo; import com.ydtech.modules.order.entity.vo.AccidentalDrivingVo; import com.ydtech.modules.order.entity.vo.BaseQuoteVo; import com.ydtech.modules.order.entity.vo.PolicyPrintVo; import com.ydtech.modules.order.service.InsAreaCompanyService; import io.swagger.annotations.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.time.LocalDate; import java.util.List; import java.util.Map; /** * @description: 永诚API方式对接 控制类 * @author: lig * @date: 2023年02月07日 0007 */ @Api(tags = "永诚API方式对接") @RestController @RequestMapping("/api/yongCheng") public class InsAlltrustApiController { private static final Logger log = LoggerFactory.getLogger("alltrust"); @Autowired InsAlltrustApiService insYongchengApiService; @Autowired InsOrdersComponents insOrdersComponents; @Autowired InsTaskImageService insTaskImageService; @Autowired EsmInsAttachInsureMapper esmInsAttachInsureMapper; @Autowired EsmInsAttachInsureDetailsMapper esmInsAttachInsureDetailsMapper; @Autowired InsAreaCompanyService insAreaCompanyService; @ApiResponses({ @ApiResponse(code = 500, message = "出现异常"), @ApiResponse(code = 101, message = "转保单"), @ApiResponse(code = 200, message = "请求成功") }) @ApiOperation(value = "永诚API方式 - 报价") @PostMapping("/quote") // @MethodLogAnnotation(title = "永诚API方式 - 报价") public HttpResult quoteApi(@RequestBody BaseQuoteVo quoteVo) { // BaseQuoteInfoVo quoteInfo = insOrdersComponents.getQuoteInfo(quoteVo.getOrderNo()); return insYongchengApiService.quoteApi(quoteVo); } @ApiOperation(value = "永诚API方式 - 核保") @PostMapping("/audit") // @MethodLogAnnotation(title = "永诚API方式 - 核保") public HttpResult auditApi(@RequestSingleParam(value = "companyId") String companyId) { return insYongchengApiService.auditApi(companyId); } @ApiOperation(value = "永诚API方式 - 影像上传") @PostMapping(value = "/uploadImage") public HttpResult uploadImageApi(@RequestSingleParam(value = "companyId") String companyId) { return insYongchengApiService.uploadImageApi(companyId); } // @ApiOperation(value = "永诚API方式 - 第三方回调通知(支付+承保)") // @PostMapping(value = "/callBack") // public HttpResult callBackApi(HttpServletRequest request) { // // // //回调参数解签后示例报文:transNo=&type=1&result=0&message=&biz_policy_no=&ci_policy_no=&biz_policy_app_no=51928036020170000054&ci_policy_app_no=&status=9&remark=%3F%3F // Enumeration pNames = request.getParameterNames(); // // while (pNames.hasMoreElements()) { // String name = (String) pNames.nextElement(); // log.info("永诚API方式 - 回调 - 参数:" + name); // if (StringUtils.isNotEmpty(name)) { // CallBackRequest cbr = CallBackRequest.buildCallBackParam(name); // return insYongchengApiService.callBackApi(cbr); // // } // } // // return HttpResult.error("失败"); // // } /* 01-电子保单 */ @ApiOperation(value = "永诚API方式 -电子保单") @PostMapping("/getPolicyPrint") public HttpResult getPolicyPrintApi(@RequestBody PolicyPrintVo policyPrintVo) { // public HttpResult getPolicyPrintApi(String companyId,String type) { return insYongchengApiService.getPolicyPrintApi(policyPrintVo); } /** * 获得意外险列表 */ @ApiOperation(value = "永诚API方式 -意外险列表") @PostMapping("/gainAccidentList") public HttpResult> gainAccidentList(@RequestBody @Valid AccidentalDrivingQueryVo accidentalDrivingVo) { LambdaQueryWrapper lqw = new LambdaQueryWrapper(); lqw.eq(EsmInsAttachInsure::getCompanyId, accidentalDrivingVo.getCompanyCode()); lqw.eq(accidentalDrivingVo.getSeatNum() > 0, EsmInsAttachInsure::getSeating, accidentalDrivingVo.getSeatNum()); List eiaiList = esmInsAttachInsureMapper.selectList(lqw); return HttpResult.ok(eiaiList); // return insYongchengApiService.gainAccidentList(accidentalDrivingVo); // return insYongchengApiService.gainAccidentList(companyId); } /** * 获得意外险列表 方案 */ @ApiOperation(value = "永诚API方式 -意外险列表 - 方案") @PostMapping("/gainAccidentSchemeList") @ApiImplicitParams({ @ApiImplicitParam(name = "accidentId", value = "意外险ID", required = true, paramType = "body") }) public HttpResult> gainAccidentSchemeList(@RequestSingleParam(value = "accidentId") String accidentId) { LambdaQueryWrapper lqw = new LambdaQueryWrapper(); lqw.eq(EsmInsAttachInsureDetails::getAttachInsureId, accidentId); List list = esmInsAttachInsureDetailsMapper.selectList(lqw); return HttpResult.ok(list); } /** * 同步驾意险 */ @ApiOperation(value = "永诚API方式 - 同步驾意险") @PostMapping("/syncAccidentInsure") public HttpResult syncAccidentInsure(@RequestBody @Valid AccidentalDrivingQueryVo accidentalDrivingVo) { return insYongchengApiService.syncAccidentInsure(accidentalDrivingVo); } /** * 获取地区 通过身份证地址 */ @ApiOperation(value = "永诚API方式 - 身份证地址获取地区") @PostMapping("/addressGainArea") public HttpResult syncAccidentInsure(String address) { Map ownerMap = insYongchengApiService.gainRegionCode(address); if (null == ownerMap) { throw new SystemException("地区获取失败,请检查参数是否正确。"); } return HttpResult.ok(ownerMap); } // /** // * 手动补传回调 // */ // @ApiOperation(value = "永诚API方式 - 同步保司订单状态") // @GetMapping("/syncInsOrderStatus") // public HttpResult syncInsOrderStatus() { // insYongchengApiService.callbackAnOrder(); // return HttpResult.ok(""); // } @GetMapping(value = "/orderStatusBySuborderId/{suborderId}") @ApiOperation(value = "永诚API方式 - 手动刷新订单状态 通过子订单ID") @ApiImplicitParams({ @ApiImplicitParam(name = "suborderId", value = "子订单ID", required = true, dataType = "String") }) public HttpResult orderStatusBySuborderId(@PathVariable String suborderId) { return insYongchengApiService.callbackAnOrder(suborderId); } @GetMapping(value = "/updatePay/{suborderId}") @ApiOperation(value = "永诚API方式 - 刷新支付链接 通过子订单ID") @ApiImplicitParams({ @ApiImplicitParam(name = "suborderId", value = "子订单ID", required = true, dataType = "String") }) public HttpResult updatePay(@PathVariable String suborderId) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(InsAreaCompany::getOrderstatus, InsOrderStatusEnum.WAIT_PAY.getCode()); lqw.gt(InsAreaCompany::getAudittime, LocalDate.now().minusDays(1)); List list = insAreaCompanyService.list(lqw); list.stream().forEach(a ->{ insYongchengApiService.getPayUrlApi(a); }); return HttpResult.ok("更新成功"); } }