InsAlltrustApiController.java 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. package com.ydtech.modules.ins.controller;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.ydtech.aop.request.RequestSingleParam;
  4. import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
  5. import com.ydtech.core.page.HttpResult;
  6. import com.ydtech.exception.SystemException;
  7. import com.ydtech.modules.esm.dao.EsmInsAttachInsureDetailsMapper;
  8. import com.ydtech.modules.esm.dao.EsmInsAttachInsureMapper;
  9. import com.ydtech.modules.esm.model.EsmInsAttachInsure;
  10. import com.ydtech.modules.esm.model.EsmInsAttachInsureDetails;
  11. import com.ydtech.modules.esm.service.InsTaskImageService;
  12. import com.ydtech.modules.ins.service.InsAlltrustApiService;
  13. import com.ydtech.modules.order.components.InsOrdersComponents;
  14. import com.ydtech.modules.order.entity.InsAreaCompany;
  15. import com.ydtech.modules.order.entity.vo.AccidentalDrivingQueryVo;
  16. import com.ydtech.modules.order.entity.vo.AccidentalDrivingVo;
  17. import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
  18. import com.ydtech.modules.order.entity.vo.PolicyPrintVo;
  19. import com.ydtech.modules.order.service.InsAreaCompanyService;
  20. import io.swagger.annotations.*;
  21. import org.slf4j.Logger;
  22. import org.slf4j.LoggerFactory;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.web.bind.annotation.*;
  25. import javax.validation.Valid;
  26. import java.time.LocalDate;
  27. import java.util.List;
  28. import java.util.Map;
  29. /**
  30. * @description: 永诚API方式对接 控制类
  31. * @author: lig
  32. * @date: 2023年02月07日 0007
  33. */
  34. @Api(tags = "永诚API方式对接")
  35. @RestController
  36. @RequestMapping("/api/yongCheng")
  37. public class InsAlltrustApiController {
  38. private static final Logger log = LoggerFactory.getLogger("alltrust");
  39. @Autowired
  40. InsAlltrustApiService insYongchengApiService;
  41. @Autowired
  42. InsOrdersComponents insOrdersComponents;
  43. @Autowired
  44. InsTaskImageService insTaskImageService;
  45. @Autowired
  46. EsmInsAttachInsureMapper esmInsAttachInsureMapper;
  47. @Autowired
  48. EsmInsAttachInsureDetailsMapper esmInsAttachInsureDetailsMapper;
  49. @Autowired
  50. InsAreaCompanyService insAreaCompanyService;
  51. @ApiResponses({
  52. @ApiResponse(code = 500, message = "出现异常"),
  53. @ApiResponse(code = 101, message = "转保单"),
  54. @ApiResponse(code = 200, message = "请求成功")
  55. })
  56. @ApiOperation(value = "永诚API方式 - 报价")
  57. @PostMapping("/quote")
  58. // @MethodLogAnnotation(title = "永诚API方式 - 报价")
  59. public HttpResult quoteApi(@RequestBody BaseQuoteVo<AccidentalDrivingVo> quoteVo) {
  60. // BaseQuoteInfoVo quoteInfo = insOrdersComponents.getQuoteInfo(quoteVo.getOrderNo());
  61. return insYongchengApiService.quoteApi(quoteVo);
  62. }
  63. @ApiOperation(value = "永诚API方式 - 核保")
  64. @PostMapping("/audit")
  65. // @MethodLogAnnotation(title = "永诚API方式 - 核保")
  66. public HttpResult auditApi(@RequestSingleParam(value = "companyId") String companyId) {
  67. return insYongchengApiService.auditApi(companyId);
  68. }
  69. @ApiOperation(value = "永诚API方式 - 影像上传")
  70. @PostMapping(value = "/uploadImage")
  71. public HttpResult uploadImageApi(@RequestSingleParam(value = "companyId") String companyId) {
  72. return insYongchengApiService.uploadImageApi(companyId);
  73. }
  74. // @ApiOperation(value = "永诚API方式 - 第三方回调通知(支付+承保)")
  75. // @PostMapping(value = "/callBack")
  76. // public HttpResult callBackApi(HttpServletRequest request) {
  77. //
  78. //
  79. // //回调参数解签后示例报文: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
  80. // Enumeration pNames = request.getParameterNames();
  81. //
  82. // while (pNames.hasMoreElements()) {
  83. // String name = (String) pNames.nextElement();
  84. // log.info("永诚API方式 - 回调 - 参数:" + name);
  85. // if (StringUtils.isNotEmpty(name)) {
  86. // CallBackRequest cbr = CallBackRequest.buildCallBackParam(name);
  87. // return insYongchengApiService.callBackApi(cbr);
  88. //
  89. // }
  90. // }
  91. //
  92. // return HttpResult.error("失败");
  93. //
  94. // }
  95. /*
  96. 01-电子保单
  97. */
  98. @ApiOperation(value = "永诚API方式 -电子保单")
  99. @PostMapping("/getPolicyPrint")
  100. public HttpResult getPolicyPrintApi(@RequestBody PolicyPrintVo policyPrintVo) {
  101. // public HttpResult getPolicyPrintApi(String companyId,String type) {
  102. return insYongchengApiService.getPolicyPrintApi(policyPrintVo);
  103. }
  104. /**
  105. * 获得意外险列表
  106. */
  107. @ApiOperation(value = "永诚API方式 -意外险列表")
  108. @PostMapping("/gainAccidentList")
  109. public HttpResult<List<EsmInsAttachInsure>> gainAccidentList(@RequestBody @Valid AccidentalDrivingQueryVo accidentalDrivingVo) {
  110. LambdaQueryWrapper<EsmInsAttachInsure> lqw = new LambdaQueryWrapper<EsmInsAttachInsure>();
  111. lqw.eq(EsmInsAttachInsure::getCompanyId, accidentalDrivingVo.getCompanyCode());
  112. lqw.eq(accidentalDrivingVo.getSeatNum() > 0, EsmInsAttachInsure::getSeating, accidentalDrivingVo.getSeatNum());
  113. List<EsmInsAttachInsure> eiaiList = esmInsAttachInsureMapper.selectList(lqw);
  114. return HttpResult.ok(eiaiList);
  115. // return insYongchengApiService.gainAccidentList(accidentalDrivingVo);
  116. // return insYongchengApiService.gainAccidentList(companyId);
  117. }
  118. /**
  119. * 获得意外险列表 方案
  120. */
  121. @ApiOperation(value = "永诚API方式 -意外险列表 - 方案")
  122. @PostMapping("/gainAccidentSchemeList")
  123. @ApiImplicitParams({
  124. @ApiImplicitParam(name = "accidentId", value = "意外险ID", required = true, paramType = "body")
  125. })
  126. public HttpResult<List<EsmInsAttachInsureDetails>> gainAccidentSchemeList(@RequestSingleParam(value = "accidentId") String accidentId) {
  127. LambdaQueryWrapper<EsmInsAttachInsureDetails> lqw = new LambdaQueryWrapper<EsmInsAttachInsureDetails>();
  128. lqw.eq(EsmInsAttachInsureDetails::getAttachInsureId, accidentId);
  129. List<EsmInsAttachInsureDetails> list = esmInsAttachInsureDetailsMapper.selectList(lqw);
  130. return HttpResult.ok(list);
  131. }
  132. /**
  133. * 同步驾意险
  134. */
  135. @ApiOperation(value = "永诚API方式 - 同步驾意险")
  136. @PostMapping("/syncAccidentInsure")
  137. public HttpResult syncAccidentInsure(@RequestBody @Valid AccidentalDrivingQueryVo accidentalDrivingVo) {
  138. return insYongchengApiService.syncAccidentInsure(accidentalDrivingVo);
  139. }
  140. /**
  141. * 获取地区 通过身份证地址
  142. */
  143. @ApiOperation(value = "永诚API方式 - 身份证地址获取地区")
  144. @PostMapping("/addressGainArea")
  145. public HttpResult syncAccidentInsure(String address) {
  146. Map<String, String> ownerMap = insYongchengApiService.gainRegionCode(address);
  147. if (null == ownerMap) {
  148. throw new SystemException("地区获取失败,请检查参数是否正确。");
  149. }
  150. return HttpResult.ok(ownerMap);
  151. }
  152. // /**
  153. // * 手动补传回调
  154. // */
  155. // @ApiOperation(value = "永诚API方式 - 同步保司订单状态")
  156. // @GetMapping("/syncInsOrderStatus")
  157. // public HttpResult syncInsOrderStatus() {
  158. // insYongchengApiService.callbackAnOrder();
  159. // return HttpResult.ok("");
  160. // }
  161. @GetMapping(value = "/orderStatusBySuborderId/{suborderId}")
  162. @ApiOperation(value = "永诚API方式 - 手动刷新订单状态 通过子订单ID")
  163. @ApiImplicitParams({
  164. @ApiImplicitParam(name = "suborderId", value = "子订单ID", required = true, dataType = "String")
  165. })
  166. public HttpResult orderStatusBySuborderId(@PathVariable String suborderId) {
  167. return insYongchengApiService.callbackAnOrder(suborderId);
  168. }
  169. @GetMapping(value = "/updatePay/{suborderId}")
  170. @ApiOperation(value = "永诚API方式 - 刷新支付链接 通过子订单ID")
  171. @ApiImplicitParams({
  172. @ApiImplicitParam(name = "suborderId", value = "子订单ID", required = true, dataType = "String")
  173. })
  174. public HttpResult updatePay(@PathVariable String suborderId) {
  175. LambdaQueryWrapper<InsAreaCompany> lqw = new LambdaQueryWrapper<>();
  176. lqw.eq(InsAreaCompany::getOrderstatus, InsOrderStatusEnum.WAIT_PAY.getCode());
  177. lqw.gt(InsAreaCompany::getAudittime, LocalDate.now().minusDays(1));
  178. List<InsAreaCompany> list = insAreaCompanyService.list(lqw);
  179. list.stream().forEach(a ->{
  180. insYongchengApiService.getPayUrlApi(a);
  181. });
  182. return HttpResult.ok("更新成功");
  183. }
  184. }