package com.ydtech.modules.ins.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ydtech.aop.request.MethodLogAnnotation; import com.ydtech.aop.request.RequestSingleParam; import com.ydtech.core.page.HttpResult; 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.model.ya.CarModel_Req; import com.ydtech.modules.ins.model.yc.CallBackRequest; import com.ydtech.modules.ins.service.InsAlltrustApiService; import com.ydtech.modules.order.components.InsOrdersComponents; import com.ydtech.modules.order.entity.vo.*; import com.ydtech.utils.Base64Utils; import com.ydtech.utils.StringUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.*; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; /** * @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; @ApiOperation(value = "车型查询") @PostMapping("/modelQuery") public HttpResult modelQueryAPI(@RequestBody CarModel_Req carModelReq) { return insYongchengApiService.modelsQueryApi(carModelReq); } @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("/getPayUrl") // public HttpResult getPayUrl(@RequestSingleParam(value = "companyId") String companyId) { // return insYongchengApiService.getPayUrlApi(companyId); // } @ApiOperation(value = "永诚API方式 - 补传回调及订单信息查询接口") @PostMapping("/callbackAnOrder") public HttpResult callbackAnOrder(@RequestSingleParam(value = "companyId") String companyId) { return insYongchengApiService.callbackAnOrder(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); // String value = request.getParameter(name); // log.info("永诚API方式 - 回调 - 参数 值:" + value); if (StringUtils.isNotEmpty(name)) { String str222 = Base64Utils.getBase64Decode(name); log.info("永诚API方式 - 回调 - 参数 - 解析1次后:" + str222); String paramStr = Base64Utils.getBase64Decode(str222); log.info("永诚API方式 - 回调 - 参数 - 解析2次后:" + paramStr); String[] paramArr = paramStr.split("&"); Map reqMap = new HashMap<>(); Arrays.stream(paramArr).forEach(a -> { String[] pArr = a.split("="); reqMap.put(pArr[0], pArr.length > 1 ? pArr[1] : ""); }); CallBackRequest cbr = new CallBackRequest(); cbr.setTransNo(StringUtils.toString(reqMap.get("transNo"))); cbr.setType(StringUtils.toString(reqMap.get("type"))); cbr.setResult(StringUtils.toString(reqMap.get("result"))); cbr.setBizPolicyNo(StringUtils.toString(reqMap.get("biz_policy_no"))); cbr.setCiPolicyNo(StringUtils.toString(reqMap.get("ci_policy_no"))); cbr.setMessage(StringUtils.toString(reqMap.get("message"))); cbr.setBizPolicyAppNo(StringUtils.toString(reqMap.get("biz_policy_app_no"))); cbr.setCiPolicyAppNo(StringUtils.toString(reqMap.get("ci_policy_app_no"))); cbr.setStatus(StringUtils.toString(reqMap.get("status"))); cbr.setRemark(StringUtils.toString(reqMap.get("remark"))); cbr.setJqstatus(StringUtils.toString(reqMap.get("jqstatus"))); cbr.setSystatus(StringUtils.toString(reqMap.get("systatus"))); 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); return HttpResult.ok(ownerMap); } // /** // * 测试获取redis // * @ // */ // @ApiOperation(value = "测试获取redis") // @GetMapping("/testRedis") // public HttpResult testRedis() { // log.info("this is a info log"); // log.warn("this is a warn log"); // log.error("this is a error log"); // log.debug("ddddddddddddddd"); // return HttpResult.ok(RedisUtils.exists("aaa")); // // } }