| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- package com.ydtech.components;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONObject;
- import com.ydtech.config.properties.ZmApiConfigurationProperties;
- import com.ydtech.exception.SystemException;
- import com.ydtech.modules.order.entity.api.zm.BaseRequest;
- import com.ydtech.modules.order.entity.api.zm.BaseResponse;
- import com.ydtech.modules.order.entity.api.zm.request.*;
- import com.ydtech.modules.order.entity.api.zm.response.*;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.http.*;
- import org.springframework.stereotype.Component;
- import org.springframework.util.ObjectUtils;
- import org.springframework.web.client.RestTemplate;
- import java.util.List;
- /**
- *
- * @author wenks
- * @version 0.0.2
- * @description 中煤 APi 请求
- * @date 2023/4/21 9:08
- */
- @Slf4j
- @Component
- public class ZhongmeiRequestApiComponents {
- private final ZmApiConfigurationProperties properties;
- private final RestTemplate restTemplate;
- public ZhongmeiRequestApiComponents(ZmApiConfigurationProperties zmApiConfigurationProperties, RestTemplate restTemplate) {
- this.properties = zmApiConfigurationProperties;
- this.restTemplate = restTemplate;
- }
- private <K extends BaseRequest, T extends BaseResponse> T post(K k, String url, Class<T> tClass) {
- HttpHeaders httpHeaders = new HttpHeaders();
- httpHeaders.setContentType(MediaType.APPLICATION_JSON);
- HttpEntity<K> yaQuoteInfoVoHttpEntity = new HttpEntity<>(k, httpHeaders);
- String jsonString = JSON.toJSONString(k);
- log.info("---------> 请求参数:{}", jsonString);
- ResponseEntity<String> response = restTemplate.postForEntity(url, yaQuoteInfoVoHttpEntity, String.class);
- String body = response.getBody();
- log.info("---------> 响应参数:{}", body);
- T t = JSON.parseObject(body, tClass);
- if (ObjectUtils.isEmpty(t)) {
- throw new SystemException("请求失败");
- }
- return t;
- }
- /**
- * @param <Request> 请求体
- * @param <Response> 响应体
- * @param request 请求内容
- * @param tClass 响应类型
- * @param verify 结果是否需要验证
- * @return 响应内容
- */
- private <Request extends BaseRequest, Response extends BaseResponse> Response request(Request request, Class<Response> tClass, boolean verify, String domain) {
- request.setHead(properties.getHead());
- String url = domain + request.getHead().getTransCode() + ".do";
- Response response = post(request, url, tClass);
- if (verify) {
- validationResults(response);
- }
- return response;
- }
- /**
- * 常规
- */
- private <Request extends BaseRequest, Response extends BaseResponse> Response routineRequest(Request request, Class<Response> tClass, boolean verify) {
- return request(request, tClass, verify, properties.getUrl());
- }
- /**
- * 影像
- */
- private <Request extends BaseRequest, Response extends BaseResponse> void imageRequest(Request request, Class<Response> tClass, boolean verify) {
- request(request, tClass, verify, properties.getImageUrl());
- }
- /**
- * 短信
- */
- private <Request extends BaseRequest, Response extends BaseResponse> Response smsRequest(Request request, Class<Response> tClass, boolean verify) {
- return request(request, tClass, verify, properties.getSmsUrl());
- }
- /**
- * 车型查询 传入必要车辆信息,返回车型列表给用户选择
- */
- public List<ModelsQueryResponse.SimpleStadarCarDTO> modelQuery(ModelsQueryRequest request, Class<ModelsQueryResponse> tClass) {
- return routineRequest(request, tClass, true).getSimpleStadarCar();
- }
- /**
- * 报价 传入必要投保方案信息,返回投保单保费及车船税
- */
- public QuotedPriceResponse quotedPrice(QuotedPriceRequest request, Class<QuotedPriceResponse> tClass) {
- return routineRequest(request, tClass, true);
- }
- /**
- * 提交核保 传入投保单必要信息,对投保单进行审核
- */
- public SubmitResponse submit(SubmitRequest request, Class<SubmitResponse> tClass) {
- request.setCallbackUrl(properties.getCallbackDomain() + properties.getCallbackUrl());
- request.setPageUrl(properties.getPageUrl());
- request.setPassMsgUrl(properties.getCallbackDomain() + properties.getPassMsgUrl());
- return routineRequest(request, tClass, false);
- }
- /**
- * 上传影像 传入订单信息,查询是否生成保单成功
- */
- public void uploadImage(UploadImageRequest request, Class<UploadImageResponse> tClass) {
- imageRequest(request, tClass, true);
- }
- /**
- * 缴费查询
- */
- public OrderStatusResponse orderStatus(OrderStatusRequest request, Class<OrderStatusResponse> tClass) {
- return routineRequest(request, tClass, true);
- }
- /**
- * 核保状态查询 传入单号查询该单核保状态
- */
- public SubmitStatusQueryResponse submitStatus(SubmitStatusQueryRequest request, Class<SubmitStatusQueryResponse> tClass) {
- return routineRequest(request, tClass, true);
- }
- /**
- * 电子保单下载 传入单号相关信息下载电子保单
- */
- public InsurancePolicyPrintResponse insurancePolicyPrint(InsurancePolicyPrintRequest request, Class<InsurancePolicyPrintResponse> tClass) {
- return routineRequest(request, tClass, true);
- }
- /**
- * 校验发短信接口 校验此单是否需要发送短信
- */
- public CheckSMScodeResponse checkSMScode(CheckSMScodeRequest request, Class<CheckSMScodeResponse> tClass) {
- return smsRequest(request, tClass, true);
- }
- /**
- * 验证校验码正确 录入校验码校验是否正确
- */
- public ValidSMScodeResponse checkSMScode(ValidSMScodeRequest request, Class<ValidSMScodeResponse> tClass) {
- return smsRequest(request, tClass, true);
- }
- public <T extends BaseResponse> void validationResults(T t) {
- if ("-1".equals(t.getHead().getReturnCode())) {
- throw new SystemException(t.getHead().getReturnMessage());
- }
- }
- }
|