ZhongmeiRequestApiComponents.java 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. package com.ydtech.components;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.ydtech.config.properties.ZmApiConfigurationProperties;
  5. import com.ydtech.exception.SystemException;
  6. import com.ydtech.modules.order.entity.api.zm.BaseRequest;
  7. import com.ydtech.modules.order.entity.api.zm.BaseResponse;
  8. import com.ydtech.modules.order.entity.api.zm.request.*;
  9. import com.ydtech.modules.order.entity.api.zm.response.*;
  10. import lombok.extern.slf4j.Slf4j;
  11. import org.springframework.http.*;
  12. import org.springframework.stereotype.Component;
  13. import org.springframework.util.ObjectUtils;
  14. import org.springframework.web.client.RestTemplate;
  15. import java.util.List;
  16. /**
  17. *
  18. * @author wenks
  19. * @version 0.0.2
  20. * @description 中煤 APi 请求
  21. * @date 2023/4/21 9:08
  22. */
  23. @Slf4j
  24. @Component
  25. public class ZhongmeiRequestApiComponents {
  26. private final ZmApiConfigurationProperties properties;
  27. private final RestTemplate restTemplate;
  28. public ZhongmeiRequestApiComponents(ZmApiConfigurationProperties zmApiConfigurationProperties, RestTemplate restTemplate) {
  29. this.properties = zmApiConfigurationProperties;
  30. this.restTemplate = restTemplate;
  31. }
  32. private <K extends BaseRequest, T extends BaseResponse> T post(K k, String url, Class<T> tClass) {
  33. HttpHeaders httpHeaders = new HttpHeaders();
  34. httpHeaders.setContentType(MediaType.APPLICATION_JSON);
  35. HttpEntity<K> yaQuoteInfoVoHttpEntity = new HttpEntity<>(k, httpHeaders);
  36. String jsonString = JSON.toJSONString(k);
  37. log.info("---------> 请求参数:{}", jsonString);
  38. ResponseEntity<String> response = restTemplate.postForEntity(url, yaQuoteInfoVoHttpEntity, String.class);
  39. String body = response.getBody();
  40. log.info("---------> 响应参数:{}", body);
  41. T t = JSON.parseObject(body, tClass);
  42. if (ObjectUtils.isEmpty(t)) {
  43. throw new SystemException("请求失败");
  44. }
  45. return t;
  46. }
  47. /**
  48. * @param <Request> 请求体
  49. * @param <Response> 响应体
  50. * @param request 请求内容
  51. * @param tClass 响应类型
  52. * @param verify 结果是否需要验证
  53. * @return 响应内容
  54. */
  55. private <Request extends BaseRequest, Response extends BaseResponse> Response request(Request request, Class<Response> tClass, boolean verify, String domain) {
  56. request.setHead(properties.getHead());
  57. String url = domain + request.getHead().getTransCode() + ".do";
  58. Response response = post(request, url, tClass);
  59. if (verify) {
  60. validationResults(response);
  61. }
  62. return response;
  63. }
  64. /**
  65. * 常规
  66. */
  67. private <Request extends BaseRequest, Response extends BaseResponse> Response routineRequest(Request request, Class<Response> tClass, boolean verify) {
  68. return request(request, tClass, verify, properties.getUrl());
  69. }
  70. /**
  71. * 影像
  72. */
  73. private <Request extends BaseRequest, Response extends BaseResponse> void imageRequest(Request request, Class<Response> tClass, boolean verify) {
  74. request(request, tClass, verify, properties.getImageUrl());
  75. }
  76. /**
  77. * 短信
  78. */
  79. private <Request extends BaseRequest, Response extends BaseResponse> Response smsRequest(Request request, Class<Response> tClass, boolean verify) {
  80. return request(request, tClass, verify, properties.getSmsUrl());
  81. }
  82. /**
  83. * 车型查询 传入必要车辆信息,返回车型列表给用户选择
  84. */
  85. public List<ModelsQueryResponse.SimpleStadarCarDTO> modelQuery(ModelsQueryRequest request, Class<ModelsQueryResponse> tClass) {
  86. return routineRequest(request, tClass, true).getSimpleStadarCar();
  87. }
  88. /**
  89. * 报价 传入必要投保方案信息,返回投保单保费及车船税
  90. */
  91. public QuotedPriceResponse quotedPrice(QuotedPriceRequest request, Class<QuotedPriceResponse> tClass) {
  92. return routineRequest(request, tClass, true);
  93. }
  94. /**
  95. * 提交核保 传入投保单必要信息,对投保单进行审核
  96. */
  97. public SubmitResponse submit(SubmitRequest request, Class<SubmitResponse> tClass) {
  98. request.setCallbackUrl(properties.getCallbackDomain() + properties.getCallbackUrl());
  99. request.setPageUrl(properties.getPageUrl());
  100. request.setPassMsgUrl(properties.getCallbackDomain() + properties.getPassMsgUrl());
  101. return routineRequest(request, tClass, false);
  102. }
  103. /**
  104. * 上传影像 传入订单信息,查询是否生成保单成功
  105. */
  106. public void uploadImage(UploadImageRequest request, Class<UploadImageResponse> tClass) {
  107. imageRequest(request, tClass, true);
  108. }
  109. /**
  110. * 缴费查询
  111. */
  112. public OrderStatusResponse orderStatus(OrderStatusRequest request, Class<OrderStatusResponse> tClass) {
  113. return routineRequest(request, tClass, true);
  114. }
  115. /**
  116. * 核保状态查询 传入单号查询该单核保状态
  117. */
  118. public SubmitStatusQueryResponse submitStatus(SubmitStatusQueryRequest request, Class<SubmitStatusQueryResponse> tClass) {
  119. return routineRequest(request, tClass, true);
  120. }
  121. /**
  122. * 电子保单下载 传入单号相关信息下载电子保单
  123. */
  124. public InsurancePolicyPrintResponse insurancePolicyPrint(InsurancePolicyPrintRequest request, Class<InsurancePolicyPrintResponse> tClass) {
  125. return routineRequest(request, tClass, true);
  126. }
  127. /**
  128. * 校验发短信接口 校验此单是否需要发送短信
  129. */
  130. public CheckSMScodeResponse checkSMScode(CheckSMScodeRequest request, Class<CheckSMScodeResponse> tClass) {
  131. return smsRequest(request, tClass, true);
  132. }
  133. /**
  134. * 验证校验码正确 录入校验码校验是否正确
  135. */
  136. public ValidSMScodeResponse checkSMScode(ValidSMScodeRequest request, Class<ValidSMScodeResponse> tClass) {
  137. return smsRequest(request, tClass, true);
  138. }
  139. public <T extends BaseResponse> void validationResults(T t) {
  140. if ("-1".equals(t.getHead().getReturnCode())) {
  141. throw new SystemException(t.getHead().getReturnMessage());
  142. }
  143. }
  144. }